This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMAG5273:CRC 计算 — 奇数行为(第 2 部分)

Guru**** 2680515 points

Other Parts Discussed in Thread: TMAG5273

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/1592349/tmag5273-tmag5273-crc-calculation---odd-behaviour-part-2

器件型号: TMAG5273

先前的讨论中继续

所述的行为可以概括如下:如果在单个 I2C 总线上有(至少)两个器件、并在两个器件之间交替使用 TX 和 Rx 命令;那么总线上的其他数据可能会影响要通信的第一个器件的 CRC 计算结果、即使该数据正在发送到另一个器件也是如此。

在链接的讨论中、我发现我们的两个 TMAG5273 器件中有一个 CRC 计算错误、但采用了从未改变的方式、因此我找到了一种权变措施。

再试验一下、我发现、如果我在不存在的器件中插入了一条虚拟 TX 消息、那么该器件的地址将影响其中一个 TMAG6180 的 CRC 计算。 对于任何给定地址、对 CRC 计算的影响是可重复的、但我尚未找到预测该影响的方法。

在我们的代码中、设置后、我们依次向每个器件发送转换触发消息 (0x98 0x00)、等待、然后使用特殊的 1 字节 Rx 命令从每个器件获取数据。 数据始终是合理的、但第一个器件的 CRC 总是错误的、如链接讨论中所述。

如果我 每个转换触发消息之前插入虚拟消息、这似乎会对 CRC 计算产生进一步影响。 如果我将其插入触发消息之后或 Rx 消息之后、则该消息无效。

因此、假设我没有出错(!)、芯片中是否可能存在错误、在某些情况下会影响 CRC 计算、可能涉及总线上其他器件的地址?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我找到了一个一致的结果。

    下面是我们要发送的典型数据序列:

    时间 (ms) 数据 说明
    0.00 44 98 00   在器件 B 中触发转换
    0.31 6a. 98 00   在器件 A 中触发转换
    3.98 45 45 44 00 06 00 17 00 08 61 dB   从器件 B 读取数据
    6.02 6B 45 C5 00 06 FF FE 00 06 C1 3A.   从器件 A 读取数据

    第 4 个事务 (0x3A) 的 CRC 正确。 但是、第三个事务的 CRC 不是;它应该为 0xCF。

    不过 ,如果我们假装第三个事务之前实际上插入了 0x6A ,那么 CRC (0xDB) 是正确的! 因此、以某种方式、前一条消息的地址被包含在 CRC 计算中!

    如果我们交换与设备通信的顺序、我们会观察到相同的结果:

    时间 (ms) 数据 说明
    0.00 6A 98 00   在器件 A 中触发转换
    0.31 44 98 00   在器件 B 中触发转换
    3.98 6b 45 DA 00 00 00 03 00 03 01 96   从器件 A 读取数据
    6.08 45 45 5B 00 02 00 13 00 0D A1 Ea.   从器件 B 读取数据

    同样、第三个事务的 CRC 不正确...除非我们在开头附加 0x44。 第 4 个事务的 CRC 正确。

    我希望这表明这一问题是两个芯片共有的、因此不是因为一个芯片出现故障。

    您是否能够重现此设置以尝试重新创建此结果?

    同时、您能否确认我们使用的芯片符合规格?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我更新了代码、以便它首先对器件 A 执行 TX 和 Rx、然后对器件 B 重复此操作。这似乎可以解决问题。

    我仍然很想知道这个问题是因为芯片中的错误,还是因为我们错误地使用了芯片。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Steve、

    感谢您发布到传感器论坛!

    我今天不能设置这个,但明天我应该有一些时间来测试自己。 感谢您的耐心。

    此致、

    ~Alicia

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Steve、

    我已向您发送了一个朋友请求、以便我们可以通过下午来讨论。

    此致、

    ~Alicia