打印

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

[复制链接]
1914|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
huigoushang|  楼主 | 2014-11-28 19:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
C2000的SPI发送8位数据,手册上没有发现具体怎么做。
在用F28035时驱动串行的12864,用了SPI,经过好长时间的调试,怎么也没办法达到目的。而用模拟串口可以实现,说明程序的其它部分是正常的。问题就出在这“发送8位数据”上面。

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


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

第二:

SpiaRegs.SPITXBUF = data ;               //           错

SpiaRegs.SPITXBUF = data<<8 ;        //          正确!

相关帖子

沙发
huigoushang|  楼主 | 2014-11-28 19:38 | 只看该作者
好经验分享一下

使用特权

评论回复
板凳
hh312| | 2015-1-8 19:23 | 只看该作者
高位先出,数够8位,后面就不发了。

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

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

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

这些说起来都是泪啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

168

主题

1677

帖子

1

粉丝