金牌会员
 
- 积分
- 1635
- 金钱
- 1635
- 注册时间
- 2012-8-28
- 在线时间
- 71 小时
|
发表于 2013-6-11 08:46:24
|
显示全部楼层
uchar SPI_RW(uchar byte)
<br>{
<br> uchar i;
<br> for(i=0;i<8;i++)
<br> {
<br> MOSI=(byte&0x80);
<br> byte=(byte<<1);
<br> SCK=1;//由此可见,写数据是在SCK=0时进行,SCK上升沿把数据写进去
<br> byte|=MISO;//由此可见,读数据是在SCK高电平期间进行
<br> SCK=0;
<br> }
<br> return(byte);
<br>}
<br>你可以分析下这个函数的流程:
<br>byte比如是11100001
<br>1 byte=(byte<<1)(这里可以知道每次只取高位1,1,1,0,0,0,0,1)
<br>2 SCK=1; //sck时钟高电平,一般用引脚控制,如用PA2脚控制
<br>3 byte|=MISO;//由此可见,读数据是在SCK高电平期间进行
<br>4 SCK=0;//sck时钟低电平
<br>流程是1~2~4把byte写给ic 那3~4~2是取出byte的值 |
|