[讨论] 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的内
容将在当前字节发送之后发出