打印

TMS320F2812的SPI使用总结

[复制链接]
1118|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Thorald|  楼主 | 2017-11-20 17:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1. SPI速率不能超过15M,超过后会出现严重误码
2. 如果接收方式为中断接收,SpicCR字符长度控制位决定了中断的字长。如字长为8,中断等级为1,则每接收一个字节产生一次中断。如字长为16,中断等级为1,则每接收2个字节产生一次中断。
3. 注意主模式和从模式的极性一定要相同。主模式为上升沿采样,下降沿输出。从模式也应该为上升沿采样,下降沿输出。否则会出现采样数据不准确。
4. 注意数据写入SPITXBUF时是左对齐,而读入SPIRXBUF是右对齐。这个问题在16位字长时不突出。但是在16位以下数据字长时要特别注意。一般方法是做左移运算。
5. 注意SPI fifo的用法。* r( U8 J8 g# ^
本人在调试过程中,遇到的最大问题就是数据丢失,困扰多天。后来查明原因,因为开启SPI FIFO增强功能,不能根据Spiaregs.SPISTS.bit.BUFFULL_FLAG来暂停发送数据。因为此时的TXBUF是从TX FIFO中得数据。程序中写入TXBUF,只是写入发送缓冲器即FIFO。根据先进先出原理,你源源不断的向TXBUF写数据,则FIFO里总是保存你最后写入的数据,而不会将Spiaregs.SPISTS.bit.BUFFULL_FLAG位置一,所以会发现数据丢失。正确的方法应该判断SPI TX FIFO中的字的个数。如果发送FIFO里已经有16个字了,此时应该停止发送新数据,而等待SPI总线上主机的时钟将TXBUF里数据移出,FIFO数据自动装载一个字到TXBUF里,这时才能发送新数据

相关帖子

沙发
city520boy| | 2017-11-23 14:55 | 只看该作者
哈哈 路过踩踩

使用特权

评论回复
板凳
vibra2016| | 2017-11-24 21:51 | 只看该作者
注意数据写入SPITXBUF时是左对齐,而读入SPIRXBUF是右对齐。这个问题在16位字长时不突出。但是在16位以下数据字长时要特别注意。一般方法是做左移运算。

使用特权

评论回复
地板
chuntian2016| | 2017-11-24 22:26 | 只看该作者
注意数据写入SPITXBUF时是左对齐,而读入SPIRXBUF是右对齐。这个问题在16位字长时不突出。但是在16位以下数据字长时要特别注意。一般方法是做左移运算。

使用特权

评论回复
5
漂到龙舟| | 2018-4-26 10:51 | 只看该作者
顶一顶

使用特权

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

本版积分规则

183

主题

849

帖子

1

粉丝