admin
先行者
级别: 管理员
精华:
72
发帖: 3831
威望: 3906 点
金钱: 85105 VI
贡献值: 60 点
技术积分: 67 点
在线时间:2168(小时)
注册时间:1970-01-01
最后登录:2008-08-11
|
0
一个高效的模拟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的其它模式。
|
AVRVi 与您共同发展! 赠人玫瑰,手留余香。
一份好的资料,放在机器中会成为垃圾文件;
如果共享出来,就能有成千上万的朋友受益;
每人贡献一点,中国的电子技术将迅速提高。
|
|
[楼 主]
|
Posted: 07-24 23:07 |
| |