[STM32F1] 请教关于stm单片机中SPI的CRC功能

[复制链接]
 楼主| csust_omega 发表于 2015-5-7 18:38 | 显示全部楼层 |阅读模式
在stm32和stm8的手册中关于SPI的CRC均提有如下说明:

注意:   当SPI时钟频率较高时,用户在发送CRC时必须小心。因为在CRC传输期间,使用CPU的时间
应尽可能少。为了避免在接收最后的数据和CRC时出错,在发送CRC过程中应禁止函数调用。

我的问题是:既然手册中都说明了SPI的CRC是硬件CRC,那CRC校验码应该都是硬件自动生成的,照理说也不需要CPU参与,那为什么手册中要说使用CPU的时间应尽可能少,同时还禁止函数调用?为什么会受使用CPU和程序运行的影响?
香水城 发表于 2015-5-19 14:34 | 显示全部楼层
这是个好问题,我也想知道呢。。。

我看了F2、F4的SPI也都有这个注意事项。去问问ST的人。
myxiaonia 发表于 2015-5-19 20:48 来自手机 | 显示全部楼层
香水城 发表于 2015-5-19 14:34
这是个好问题,我也想知道呢。。。

我看了F2、F4的SPI也都有这个注意事项。去问问ST的人。 ...

这不是原来的香水城
香水城 发表于 2015-5-21 13:29 | 显示全部楼层
用户手册中关于SPI的CRC中的这段说明,是针对通过软件置位CRCNEXT这个操作的。
使用SPI的CRC功能时,如果不是通过DMA的方式,需要通过软件置位CRCNEXT位来说明接下来要发送CRC。
而且CRCNEXT的置位操作,必须在一个窗口时间(最后一个数据帧传输阶段)内完成。如果错过这个时间,CRC就不会发送,通信就会出故障。所以一般在这种情况下,建议用DMA的方式来处理。

说实话,参考手册上的这段话写的真是完全看不懂。

评论

我后来又仔细看了一下手册,应该就是这个意思了,CRCNEXT必须在规定的时间内操作,而在此期间尽量不要有中断打断或程序调用使得超出规定的时间。  发表于 2015-6-4 20:12
fanxsd 发表于 2015-5-21 16:55 | 显示全部楼层
还是 香水城吗?不是官方的吗??
luofeng2g 发表于 2015-5-21 17:23 | 显示全部楼层
同问,还是 香版 么?
Thor9 发表于 2015-5-21 20:32 | 显示全部楼层
楼主的问题的确是问到点了,还请知道的大神解释一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

37

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部