转——C2000的SPI发送8位数据,点滴经验

2019-07-31 13:34发布

C2000的SPI发送8位数据,手册上没有发现具体怎么做。
在用F28035时驱动串行的12864,用了SPI,经过好长时间的调试,怎么也没办法达到目的。而用模拟串口可以实现,说明程序的其它部分是正常的。问题就出在这“发送8位数据”上面。

最后总算摸索出来了,特分享给大家


第一,肯定要设置8位模式了。

第二:

SpiaRegs.SPITXBUF = data ;               //           错

SpiaRegs.SPITXBUF = data<<8 ;        //          正确!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
2条回答
hh312
2019-07-31 23:26
高位先出,数够8位,后面就不发了。

为了提高发送效率,我都是将两个8位合并成一个16位,全部16位发送的。只要接收端不需要每8位给一个确认信号就可以这么做。

还有FIFO,最多可以放4个16位,可以不间断64位全部发出,然后才发出一个STE信号,这样,可以很方便的菊花链8块595,一口气扩展64个端口。如果每16位需要一个STE信号,可以设置一个延时,会自动每16位给一个STE信号。这样可以减少中断处理。

还有,发送中断是发送缓存为空时中断,这时移位寄存器中还有数据在发送中。所以发送中断时,不代表对方已经接收到数据。必须在接收中断中处理,接收中断了,才说明对方已经完整的接收到数据了。如果不需要对方回传数据,可以使用“三线模式”,自发自收,从而确认对方是否已经接收完数据。

这些说起来都是泪啊

一周热门 更多>