请教一个简单的 spi 读写程序。我写的不能运行,麻烦各位大神帮忙给看看,非常谢啦

我写的分别是依照这个时序图 读一字节 和写一字节的子程序。

void SPI_WRITE_1BYTE(uchar UCDA){ uchar i; MISO=1; CS=0;for(i=8;i>0;i--){MOSI=UCDA;_nop_();
SCLK=1;_nop_();
SCLK=0;UCDA=UCDA>>1;}

CS=1;

}

//////////////////////////////////////////////////////uchar SPI_READ_1BYTE(void){ uchar i,kk;

CS=0;for(i=8;i>0;i--){kk=kk>>1;kk=MOSI;_nop_();
SCLK=1;_nop_();
SCLK=0;}

CS=1;return(kk);}
请问问题出在哪里呢,感激不尽

如果是数据传输错误,你可以看看MOSI=UCDA; kk=MOSI;这两句,你理解一下。我觉得应该是MOSI=UCDA&0x01; kk |=MOSI ;因为SPI传输每个时钟周期是传送一个位,而不是一个字节,你要是直接用kk=MOSI;那么每个时钟周期都是改变的kk变量中的其他不能改变的位。
不过我看你的这个都是有问题的,你再仔细去看看别人的例程,好好理解一下,不要盲目的去照抄别人的,对于学习阶段的你是没用的。
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网