我正在寻找一些关于编写C函数来计算LTO RFID芯片的16位CRC的建议。
规范说:
对于受16位CRC保护的命令和数据, 生成多项式应为G(x)= x16 + x12 + x5 + 1 CRC字节 应通过生成器处理所有字节来生成 电路。见图F.11。寄存器R0至R15应为1位宽 其中R0应为最低有效位,R15为最高有效位 重要的一点。这些寄存器应在之前设置为(6363) 开始处理。字节应按顺序送入 编码器,最低有效位优先。在字节之后 处理后,R0的内容为CRC0,且最小 重要的一点。 R15的含量为CRC15,应为最多 重要的一点。
但我只是一个谦虚的自学C程序员,这对我来说毫无意义。
有人可以帮我提供一些代码或公式的解释吗?
答案 0 :(得分:0)
ECMA 319 Standard中的图表显示了该怎么做:
虽然它包含错误。 R11和R10之间的异或应该有另一个输入从R15接通电线。
来自输入的位来自顶部的导线,从第一个输入字节的最低有效位开始。在每个时钟,每个寄存器设置为其输入。圆圈中的加号是独占或门。
您可以使用逐位操作^
,&
和>>
在C中实现此功能。享受!