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
以下代码示例可用于具有校验和数据完整性功能的器件,例如 ADS1259 和 ADS1262。可以通过发送指向数据的指针以及要考虑的数据包的长度来计算校验和。数据字节与常量一起相加以创建校验和字节。然后将计算出的校验和字节与随数据传输的校验和进行比较。字节值应匹配,否则会出错。
/**
* 计算一系列数据字节的校验和。
*
* \详细信息:计算指定长度的
* 数据数组指向的一系列字节。还加上常数 0x9B。
*
* \参数 uint8_t *data 是指向数据数组的指针。
* \参数 uint32_t length 是数据数组的长度。
*
* \返回 uint8_t result。
*/
uint8_t calcChecksum(uint8_t* data, uint32_t length)
{
uint32_t result = 0;
uint32_t i;
for(i = 0; i < length; i++)
result += data[i]; // 将转换数据字节相加
result += 0x9B; // 加上常数
return (uint8_t) result;
}