你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32的SPI通信中的CRC校验问题

[复制链接]
银洋电子 提问时间:2012-8-6 13:22 /

[讨论] Hex文件格式CRC校验

SPI_CRCPolynomial库函数的SPI初始化中有
SPI_InitStructure.SPI_CRCPolynomial = 7;

我的疑惑是,当我使用STM32控制nRF24L01时,虽然STM32的SPI有CRC校验功能,但是nRF24L01的SPI并没有CRC校验功能啊,怎么可以实现通信的呢?
数据手册上说,发送完数据后发送CRC;接收数据时接收完数据比较接收的CRC和接收时计算的CRC是否相同。问题是RF IC 并没有发送CRC啊?

请大家指点!


-----------------------------------------------------------数据手册中关于CRC的说明----------------------------------------------------------------------
22.3.6   CRC计算
CRC校验仅用于保证全双工通信的可靠性。数据发送和数据接收分别使用单独的CRC计算器。
通过对每一个接收位进行可编程的多项式运算来计算CRC。CRC的计算是在由SPI_CR1寄存器
中CPHA和CPOL位定义的采样时钟边沿进行的。
注意:   该SPI接口提供了两种CRC计算方法,取决于所选的发送和/或接收的数据帧格式:8位数据帧采
用CR8;16位数据帧采样CRC16-CCITT。
CRC计算是通过设置SPI_CR1寄存器中的CRCEN位启用的。设置CRCEN位时同时复位CRC寄
存器(SPI_RXCRCR和SPI_TXCRCR)。当设置了SPI_CR1的CRCNEXT位,SPI_TXCRCR的内
容将在当前字节发送之后发出。
注意:   在传输SPI_TXCRCR的内容时,如果在移位寄存器中收到的数值与SPI_RXCRCR的内容不匹
配,则SPI_SR寄存器的CRCERR标志位被置1。如果在TX缓冲器中还有数据,CRC的数值仅在
数据字节传输结束后传送。在传输CRC期间,CRC计算器关闭,寄存器的数值保持不变。
注意:   请参考产品说明书,以确认有此功能(不是所有型号都有此功能)。
SPI通信可以通过以下步骤使用CRC:
●  设置CPOL、CPHA、LSBFirst、BR、SSM、SSI和MSTR的值;
●  在SPI_CRCPR寄存器输入多项式;
●  通过设置SPI_CR1寄存器CRCEN位使能CRC计算,该操作也会清除寄存器SPI_RXCRCR
和SPI_TXCRC;
●  设置SPI_CR1寄存器的SPE位启动SPI功能;
●  启动通信并且维持通信,直到只剩最后一个字节或者半字;
●  当把最后一个字节或半字写进发送缓冲器,设置SPI_CR1的CRCNext位,指示硬件在最后
一个数据字节发送完成后,发送CRC。在发送CRC期间,CRC计算停止;
●  当最后一个字节或半字被发送后,SPI发送CRC,CRCNext位被清除。同样,接收到的
CRC和SPI_RXCRCR值进行比较,如果比较不相配,SPI_SR上的CRCERR标志被置位,
当设置了SPI_CR2寄存器的ERRIE时,则产生中断。
注意:   当SPI时钟频率较高时,用户在发送CRC时必须小心。因为在CRC传输期间,使用CPU的时间
应尽可能少。为了避免在接收最后的数据和CRC时出错,在发送CRC过程中应禁止函数调用。
  当SPI时钟频率较高时,建议采用DMA模式以避免SPI速度性能的降低。
  当STM32F10xxx配置为从模式并且使用了NSS硬件模式,NSS管脚应该在数据传输和CRC传输
期间保持为低。



没有启用啊。启用是另一个地方配置。即使配置了SPI_CRCPolynomial,spi模块没有拿来使用还是没关系的。
应该还要用SPI_TransmitCRC和SPI_CalculateCRC函数来启用发送crc功能吧
收藏 评论2 发布时间:2012-8-6 13:22

举报

2个回答
奔跑-350257 回答时间:2013-7-13 10:23:21

回复:STM32的SPI通信中的CRC校验问题

这是我在阿莫论坛发的帖,楼主撞过来居然不说是转帖,也不标明原帖地址!

 
 
原帖地址:http://www.amobbs.com/thread-5467890-1-1.html
 
请楼主遵守网络社区的基本规则。

 
 
容我逍遥一世 回答时间:2012-8-6 13:25:35

RE:STM32的SPI通信中的CRC校验问题

谢谢!楼主分享
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版