TMAG3001 在 I2C 读取期间支持可选的 CRC。CRC 可通过 CRC_EN 寄存器位启用。CRC 是对由 I2C 读取类型决定的数据串执行的。CRC 信息作为数据字节之后的单字节发送。代码由多项式 x8 + x2 + x + 1 生成。初始 CRC 位为 FFh。
可以使用以下公式来计算 CRC:
方程式 1. d = 数据输入,c = 初始 CRC (FFh)
方程式 2. newcrc[0] = d[7] ^ d[6] ^ d[0] ^ c[0] ^ c[6] ^ c[7]
方程式 3. newcrc[1] = d[6] ^ d[1] ^ d[0] ^ c[0] ^ c[1] ^ c[6]
方程式 4. newcrc[2] = d[6] ^ d[2] ^ d[1] ^ d[0] ^ c[0] ^ c[1] ^ c[2] ^ c[6]
方程式 5. newcrc[3] = d[7] ^ d[3] ^ d[2] ^ d[1] ^ c[1] ^ c[2] ^ c[3] ^ c[7]
方程式 6. newcrc[4] = d[4] ^ d[3] ^ d[2] ^ c[2] ^ c[3] ^ c[4]
方程式 7. newcrc[5] = d[5] ^ d[4] ^ d[3] ^ c[3] ^ c[4] ^ c[5]
方程式 8. newcrc[6] = d[6] ^ d[5] ^ d[4] ^ c[4] ^ c[5] ^ c[6]
方程式 9. newcrc[7] = d[7] ^ d[6] ^ d[5] ^ c[5] ^ c[6] ^ c[7]
以下示例展示了基于各种输入数据计算出的 CRC 字节:
I2C 数据 00h:CRC = F3h
I2C 数据 FFh:CRC = 00h
I2C 数据 80h:CRC = 7Ah
I2C 数据 4Ch:CRC = 10h
I2C 数据 E0h:CRC = 5Dh
I2C 数据 00000000h:CRC = D1h
I2C 数据 FFFFFFFFh:CRC = 0Fh