循环冗余校验 (CRC) 是一种用于通信网络和数据存储的错误检测机制。C2000 MCU 上用于计算 CRC 的器件资源会随着时间的推移而增加。根据器件特性以及是发送还是接收数据,TIDM-1011 会使用不同的资源。表 2-10 中总结了资源使用情况。
表 2-10 用于 CRC 计算的资源
器件 |
接收数据 CRC |
发送数据 CRC |
F2837xD |
C28x+ 查找表 |
C28x+ 查找表 |
F28004x |
可配置逻辑块 |
C28x 查找表 |
所有其它内容 |
可配置逻辑块 |
C28x 的 VCRC 扩展 |
- 所有 C28x 器件上都提供 C28x 查找表。然而,这种方法是最慢的,并且需要 RAM 内存来存储查找表。TIDM-1011 仅在没有其他功能的器件上使用查找表。
- 具有 CLB 类型 2 或更高版本的器件上提供可配置逻辑块 (CRC)。CLB 使用配置为线性反馈移位寄存器 (LFSR) 的计数器来计算 CRC。该方法一直用于计算接收数据时编码器响应的 CRC。因为无需额外计算,所以这会释放 C28x 带宽。C28x 直接从计数器寄存器读取 CRC 结果。此方法的成本是用于配置逻辑块的 CLB 逻辑块资源和代码。节 2.3.7 中记录了 CLB CRC 的实现。
- VCRC 是专门用于 CRC 计算的 C28x 指令集扩展。对于较长的信息,该实现比 C28x 查找表更快。此外,VCRC 不需要 RAM 空间来存储查找表。对于具有 VCRC 模块的器件,此方法一直用于计算 EEPROM 读取/写入事务中使用的发送数据 CRC。
注: CRC 方法可在 T-Format 库头文件中选择。