SPI CRC模式
当启用SPI CRC模式时,可以为SPI传输提供循环冗余校验序列的额外保护。这种操作模式在默认情况下是禁用的,但可以通过SYS_CFG寄存器中的SPI_CRCEN位启用(和禁用)。
虽然SPI CRC检查在主机微处理器必须为每个SPI写入和读取事务计算CRC的附加软件开销方面有缺点,但它可能对额外的可靠性原因有用,例如,在设计具有可能干扰的长SPI线的情况下,或者在SPI完整性尚未得到证明的设计调试情况下。
SPI CRC多项式/实现
CRC是8位长,基于具有生成器多项式的CRC-8- ATM:
G(x) = x8 + x2 + x + 1
在DW3000中,移位寄存器(r0到r7)在每次读或写SPI开始时用该值初始化在SPICRCINIT寄存器中指定,默认情况下全为零。
启用CRC功能
第一步
通过调用dwt_enablespicrccheck将在DW3000中启用SPI CRC检查
static void spi_rd_err_cb(void)
{
while(1) { /* spin */ };
/* see Note 3 below */
}
typedef enum
{
DWT_SPI_CRC_MODE_NO = 0, /* No CRC */
DWT_SPI_CRC_MODE_WR, /* This is used to enable SPI