打印
[STM32F1]

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

[复制链接]
4659|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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的方式来处理。

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

使用特权

评论回复
评论
csust_omega 2015-6-4 20:12 回复TA
我后来又仔细看了一下手册,应该就是这个意思了,CRCNEXT必须在规定的时间内操作,而在此期间尽量不要有中断打断或程序调用使得超出规定的时间。 
5
fanxsd| | 2015-5-21 16:55 | 只看该作者
还是 香水城吗?不是官方的吗??

使用特权

评论回复
6
luofeng2g| | 2015-5-21 17:23 | 只看该作者
同问,还是 香版 么?

使用特权

评论回复
7
Thor9| | 2015-5-21 20:32 | 只看该作者
楼主的问题的确是问到点了,还请知道的大神解释一下

使用特权

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

本版积分规则

1

主题

37

帖子

0

粉丝