访问电脑版页面

导航:老古开发网手机版其他

一个高效的模拟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
栏目: [ ]

相关阅读

安森美推出新的高功率图腾柱PFC控制器,满足具挑战的能效标准

动态功耗低至60μA/MHz!助力设备超长续航,首选国民技术低功耗MCU!