C2000的SPI发送8位数据,手册上没有发现具体怎么做。
在用F28035时驱动串行的12864,用了SPI,经过好长时间的调试,怎么也没办法达到目的。而用模拟串口可以实现,说明程序的其它部分是正常的。问题就出在这“发送8位数据”上面。
最后总算摸索出来了,特分享给大家
第一,肯定要设置8位模式了。
第二:
SpiaRegs.SPITXBUF = data ; // 错
SpiaRegs.SPITXBUF = data<<8 ; // 正确!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
为了提高发送效率,我都是将两个8位合并成一个16位,全部16位发送的。只要接收端不需要每8位给一个确认信号就可以这么做。
还有FIFO,最多可以放4个16位,可以不间断64位全部发出,然后才发出一个STE信号,这样,可以很方便的菊花链8块595,一口气扩展64个端口。如果每16位需要一个STE信号,可以设置一个延时,会自动每16位给一个STE信号。这样可以减少中断处理。
还有,发送中断是发送缓存为空时中断,这时移位寄存器中还有数据在发送中。所以发送中断时,不代表对方已经接收到数据。必须在接收中断中处理,接收中断了,才说明对方已经完整的接收到数据了。如果不需要对方回传数据,可以使用“三线模式”,自发自收,从而确认对方是否已经接收完数据。
这些说起来都是泪啊
一周热门 更多>