{ crc <<= 1; } } crc8Table[i] = crc; } } //这里是生成离线表格的过程,当离线生成好表格数据,这段循环代码就可以直接被表格crc8Table[256]代替 uint8_t calculateCRC8Table(const uint8_t *data, size_t length, uint8_t initialCrc) { uint8_t crc = initialCrc; for (size_t i = 0;...
unsigned char CRC8_Table(unsigned char *p, char counter) { unsigned char crc8 = 0; for( ; counter > 0; counter--) { crc8 = CRC8Table[crc8^*p]; //查表得到CRC码 p++; } return crc8; } DS18B20的两种校验CRC码的方法本质上都是一样的。查表法是对0x00~0xff这256个数依次生成与每一...
我们可以在generate_crc8_table函数之后添加代码来打印CRC8校验表。 c void print_crc8_table() { for (uint8_t i = 0; i < 256; i++) { printf("0x%02X: 0x%02X ", i, crc8_table[i]); } } int main() { // 生成CRC8校验表 generate_crc8_table(); // 打印CRC8校验表 print_cr...
/* CRC Info: Name Polynomial Initial FinalXor InputReflected ResultReflected CRC8_ITU 0x07 0x00 0x55 false false */ unsigned char crc8_itu(unsigned char crc, const unsigned char* buf, unsigned int len) { for(unsigned int i = 0; i < len; i++) { crc = crc8_itu__table[crc ^ ...
定义CRC8表:CRC8表是一个256字节的数组,用于存储预先计算好的CRC8值。可以在程序中定义一个静态全局的CRC8表,以便在计算CRC8时进行查表操作。 代码语言:c 复制 staticconstunsignedcharcrc8_table[256]={0x00,0x07,0x0E,0x09,0x1C,0x1B,0x12,0x15,0x38,0x3F,0x36,0x31,0x24,0x23,0x2A,0x2D,0x...
unsigned char CRC8_Table(unsigned char *p, char counter) { unsigned char crc8 = 0; for( ; counter > 0; counter--) { crc8 = CRC8Table[crc8^*p]; //查表得到CRC码 p++; } return crc8; } 1. 2. 3. 4. 5. 6. 7. 8. ...
/*CRC Info:Name Polynomial Initial FinalXor InputReflected ResultReflectedCRC8_ITU 0x07 0x00 0x55 false false*/unsignedcharcrc8_itu(unsignedcharcrc,constunsignedchar* buf,unsignedintlen){for(unsignedinti =0; i < len; i++){crc = crc8_itu__table[crc ^ buf[i]];}returncrc^0x55;} ...
create_crc8_table函数生成 CRC8 查找表。每个字节计算得到 CRC 项,并存储在crc_table列表中。 步骤2:定义CRC8校验计算函数 接下来,我们定义一个函数,该函数接收数据并计算其CRC8值。 AI检测代码解析 defcrc8_check(data,crc_table):crc=0x00# 初始化CRC值forbyteindata:crc=crc_table[crc^byte]# 查找当前...
crc8 = CRC8Table[crc8^*p]; //查表得到CRC码 p++; } return crc8; } DS18B20的两种校验CRC码的方法本质上都是一样的。查表法是对0x00~0xff这256个数依次生成与每一个数对应的CRC码所组合成的表,每次算一字节数据的CRC码不用经过calcrc_1byte(uchar abyte)这个函数对每个数据的最低位进行判断是1...
4.如果LSB为0,重复第三步;若LSB为1,CRC寄存器与生成多项式码相异或。 5.重复第3与第4步直到8次移位全部完成。此时一个8-bit数据处理完毕。 6.重复第2至第5步直到所有数据全部处理完成。 7.最终CRC寄存器的内容即为CRC值。 const uint16 CRC_Table[256] = { ...