spi收发时的寄存器sr不变_STM32的SPI通信中的CRC校验问题

在STM32使用SPI控制nRF24L01时遇到CRC校验问题,尽管STM32的SPI支持CRC,但nRF24L01不支持。数据手册提到CRC用于全双工通信可靠性,但RF IC并未发送CRC。CRC计算涉及SPI_CR1和SPI_CRCPolynomial寄存器设置,启用CRC功能需设置CRCEN位,通过SPI_TransmitCRC和SPI_CalculateCRC函数来启用发送CRC。
摘要由CSDN通过智能技术生成

[讨论] 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的内

容将在当前字节发送之后发出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值