请选择 进入手机版 | 继续访问电脑版
搜索
查看: 21683|回复: 2

[已解决] STM32的SPI通信中的CRC校验问题

[复制链接]

该用户从未签到

15

主题

114

帖子

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2012-8-6 13:22:40 | 显示全部楼层 |阅读模式

[讨论] 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功能吧
回复

使用道具 举报

该用户从未签到

0

主题

6

帖子

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2013-7-13 10:23:21 | 显示全部楼层

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

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

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

 
 
回复 支持 1 反对 0

使用道具 举报

该用户从未签到

0

主题

6

帖子

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2012-8-6 13:25:35 | 显示全部楼层

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

谢谢!楼主分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

GMT+8, 2024-3-29 13:40 , Processed in 1.172083 second(s), 36 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表