ZHCU875Z August 2001 – October 2023 SM320F28335-EP
C2000 是一个 16 位字可寻址目标,这意味着它的 char 数据类型是 16 位。但是,CRC 算法作用于 8 位单元,我们将其称为“八位位组”。在计算 C2000 段的 CRC 时,数据不能按字符逐个馈送到 CRC 循环,必须按八位位组逐个馈送。唯一打破这种惯例的算法是 C28_CHECKSUM_16 算法。该算法会读入 16 位字来执行校验和。这样做是为了匹配 CCS 的校验和实用程序。
需要按照 C2000 是 8 位机器的顺序将数据馈送到 CRC,因此我们需要考虑先馈送字符中的两个八位位组的哪一个。C2000 是一个小端字节序机器,但在一个不可分割的单元(如 char)中谈论位的字节序是没有意义的。按照惯例,我们认为 char 中的数据首先存储最低有效的八位位组,然后才是最高有效的八位位组。
理论上,CRC 算法按照位在数据中出现的顺序逐位计算 CRC。对于具有 8 位字符的机器,此顺序被认为是从每个字节的 MSB 到 LSB(从字节 0 开始)。但是,对于 C2000,CRC 从字节 0 的最低有效八位位组的 MSB 到 LSB 开始,然后是字节 0 的最高有效八位位组的 MSB 到 LSB,依此类推。