工具/软件:
我们的器件有两个 TMAG5273:一个是 A2 型号、另一个是 B2。
我编写了一个驱动程序、使用针对 X、Y 和 Z 的 1 字节、16 位读取模式与它们进行通信、一切都正常。
然后、我开启了 CRC 生成功能、并添加了根据数据表中的信息检查 CRC 的代码。 对于此模式、它指出 CRC 是根据“命令字节和当前数据包中发送的数据“计算得出的、但不定义“命令字节“是什么。 假设这意味着辅助地址+读取位、我使用了 0x6B 和 0x45 A 芯片和 B 芯片的字节 0。
对于 B 芯片、这没有问题。 然而,对于一个芯片,我的计算永远不会与芯片的匹配(我再次检查了在线 CRC 计算器)。 在尝试字节 0 的各种其他值后、我编写了代码来尝试所有可能的值、然后得到了 0xBC 。 我在司机身上使用了这个值...它运行得很好!
一方面、问题已经解决。 但另一方面: 为什么要使用这个数字? 我找不到任何提到这一价值的地方。 它从何而来?
下面是从 A 传感器返回的一些真实数据 (X、Y 和 Z 值+ CONV_STATUS + CRC):
0x00 0x0c 0xff 0xeb 0x00 0x0F 0x01 0x11
