我想使用命令 read_page(1100) 05(0000 0101) 读取 hitags256 页,为此我必须对 4 个字节 (00 00 0C 05) 执行 crc8_sae_j1850,多项式为 0x1D,初始值为 0xFF。请给我一个如何继续的想法。 如果可能的话,我还想向我发送解决此问题的例程,该例程可以选择打印获得的值。 谢谢你。
您没有指定语言。 crcany 为具有该名称的 CRC 生成此 C 代码:
#include <stddef.h>
#include <stdint.h>
uint8_t crc8sae_j1850_bit(uint8_t crc, void const *mem, size_t len) {
uint8_t const *data = mem;
if (data == NULL)
return 0;
crc = ~crc;
for (size_t i = 0; i < len; i++) {
crc ^= data[i];
for (unsigned k = 0; k < 8; k++) {
crc = crc & 0x80 ? (crc << 1) ^ 0x1d : crc << 1;
}
}
crc = ~crc;
return crc;
}
您仅指定了部分 CRC 参数。您还需要说明最终的异或是
0xff
,并且这些位没有被反映。