> 文章列表 > UWB芯片DW300之CRC模式介绍及代码实现

UWB芯片DW300之CRC模式介绍及代码实现

UWB芯片DW300之CRC模式介绍及代码实现

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