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

我写的分别是依照这个时序图读一字节和写一字节的子程序。voidSPI_WRITE_1BYTE(ucharUCDA){uchari;MISO=1;CS=0;for(i=8;... 我写的分别是依照这个时序图 读一字节 和写一字节的子程序。

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);}
请问问题出在哪里呢,感激不尽
展开
 我来答
lfflash
2013-06-08 · TA获得超过607个赞
知道小有建树答主
回答量:333
采纳率:0%
帮助的人:148万
展开全部
如果是数据传输错误,你可以看看MOSI=UCDA; kk=MOSI;这两句,你理解一下。我觉得应该是MOSI=UCDA&0x01; kk |=MOSI ;因为SPI传输每个时钟周期是传送一个位,而不是一个字节,你要是直接用kk=MOSI;那么每个时钟周期都是改变的kk变量中的其他不能改变的位。
不过我看你的这个都是有问题的,你再仔细去看看别人的例程,好好理解一下,不要盲目的去照抄别人的,对于学习阶段的你是没用的。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式