ZHCAAO5A June 2020 – August 2021 ADS112C04 , ADS112U04 , ADS114S06 , ADS114S08 , ADS122C04 , ADS122U04 , ADS1235 , ADS1235-Q1 , ADS124S06 , ADS124S08 , ADS1259 , ADS1259-Q1 , ADS125H01 , ADS125H02 , ADS1260 , ADS1260-Q1 , ADS1261 , ADS1262 , ADS1263 , ADS127L01 , ADS131A02 , ADS131A04 , ADS131M04 , ADS131M06 , ADS131M08
可以通过多种方式重新组合数据,同时实现相同的结果。一种方法是使用指向数据数组的指针,然后按照经过反射的位和字节顺序将内容存储到另一个数组中。
/**
* 重新配置数据以进行 CRC 计算(与 LSB 优先传输方式进行对比)。
*
* \详细信息:以提交的字节的相反顺序重新排列位,
* 并为 CRC 更改计算的字节顺序。必须执行该操作,因为总是按照
* LSB 优先的顺序从 UART 向外传输数据。
*
* \参数 uint8_t *data 是指向数据数组的指针。
* \参数 uint32_t length 是数据数组的长度。
*
* \返回计算得到的 crc_t CRCvalue。
*/
crc_t formatCRCdata(uint8_t *data, uint32_t length)
{
uint32_t u32i, u32j;
uint8_t checkCRC[length];
crc_t dataCRC;
// 将 LSB 作为 CRC 数组中的第一个元素开始复制
u32j = length - 1;
for(u32i = 0; u32i < length; u32i++) // 对于数据包中的每个字节
{
checkCRC[u32i] = revByte((data[u32j])); // 反转字节
u32j--;
}
dataCRC = crcBitwise(checkCRC, length); // 或 TableCRCcalc(checkCRC, length)
return dataCRC;
}