访问手机版页面
你的位置:老古开发网 > 其他 > 正文  
一个高效的模拟SPI的读写函数
内容导读:
一个高效的模拟SPI的读写函数。 
 
  unsigned char RW_SPI(unsigned char val){
 unsigned char BitCounter;
 for (BitCounter=8;BitCounter!=0;BitCounter--){
  CLK=0;
  //write
  DI=0;
  if(val&0x80)                               
   DI=1;
  val<<=1;

  CLK=1;
  //read
  if(DO)
   val =1;                                      

 }
 CLK=0;
 return val;
}

此函数把SPI的读写功能集成在一块,传递的val既是向SPI写的数据,也是从SPI读取的数据,只需要在执行读或写之前把MCU的I/O脚设置成相应的输出或输入即可。(因为在大部分应用中,是把SPI的DI和DO相连并用MCU的一个IO口来读写)。

调用示例:

#define NULL 0

SETIO=OUTPUT;
CS=0;
 RW_SPI(0xab);
 CS=1;

//向SPI写0xab数据。

 


CS=0;
 SETIO=INPUT;

 Byte=RW_SPI(NULL);                  //这里传递的NULL是没有任何意义的,可以是任何数据,只是为了保证函数

                                                               //的格式.
CS=1;

//读取SPI数据。

 

此函数对于许多低档片子来模拟SPI非常有用,代码量小,功能齐全。稍微修改,可以模拟SPI的其它模式。

 

标签:
来源: 作者: 时间:2006/9/25 16:50:53
相关阅读
推荐阅读
阅读排行
最近更新
商品推荐