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.

[参考译文] MCF8316A:CRC 不匹配

Guru**** 2463330 points
Other Parts Discussed in Thread: MCF8316A, MCF8316AEVM, MCF8316C-Q1

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

https://e2e.ti.com/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1293390/mcf8316a-crc-not-matching

器件型号:MCF8316A

您好!

最近我一直在测试 MCF8316A、每当我遇到一个问题、我主要是在论坛上找到它、但这个问题我很难找到很多相关信息。

我将评估模块套件(MCF8316AEVM)与外部 MC (Arduino)配合使用、并且我已成功写入和读取寄存器、并将寄存器写入 EEPROM、因此建立了通信(所有这些都已禁用 CRC)。

当时我正在写入速度并进行读取(使用 I2C)、大部分情况下都可以正常工作并保持准确、但有时会停止正确通信、无法写入新速度或读取完整的寄存器、 或者有时是完整寄存器(也称为读取 FG_SPEED_fdbk、为我提供0xFFFFFFFF 的值)。 我知道在使用 I2C 进行速度控制时读取寄存器的错误、但读取应该在电机运行时读取的寄存器是否合适、至少每秒读取一次? 至少这是我的想法、因此我猜想、因为我不仅仅是以新的速度重写登记册、 但是我只是使用0x06630000 (最大速度5%)的值来递增 DIGITAL_SPEED_CTRL 寄存器、且通信发生损坏且希望实施 CRC 以确保数据流正确。

我在代码中执行了 CRC 计算、通过使用在线计算器、我确保了结果正确、并且正在写入或读取正确的 CRC 值。 不过、当读取某个数据的 CRC 值的 MCF 时、我会得到一个完全不同的值、该值未显示在任何 CRC8算法中。 现在、我遇到了这个论坛文章: https://e2e.ti.com/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1120366/mcf8316a-cannot-clear-faults、它确实指出这是一个自定义的 CRC8、但初始值和多项式与 ROHC 相同、所以我使用 ROHC 查找表。

只是为了确认使用示例值0x440FCEC6构建 CRC 的方法、此示例值读取到 MOTOR_STARTUP1寄存器(0x84)

1) 0x02

2) 0xD0、0x00、0x84

3) 0x03 (因为数据表要求+ READ 位)

4) 0x44、0x0F、0xCE、0xC6

计算结果为0x13、读数为0x20

这是正确的操作顺序吗? 我也尝试过4) 0xC6, 0xCE, 0x0F, 0x44,我计算为0x5D,这仍然不是我从 MCF 得到的20。

如果有人能对电机转速写入和读取可能遇到的困难以及 MCF 计算 CRC 的方式给出一些见解、我将不胜感激。

提前感谢!

此致、

约旦

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

    您好、Jordan、

    我们需要一些时间来研究这一点。 我的目标是最晚在12月1日前给您回复。

    此致、

    约书亚

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

    您好、Jordan、

    对于 CRC 计算、 在 CRC-8-ROHC 模式下使用该 CRC 计算器: https://www.lddgo.net/en/encrypt/crc、 当输入"0x02 0xD0 0x00 0x84 0x03 0xc6 0xce 0x0F 0x44"(MCF8316A 将以这种方式接收数据)时、我也能够获得0x5D。 该 CRC-8-ROHC 模式具有"REFIN"和"REFOUT"设置

    使用链接 E2E 帖子 http://www.sunshine2k.de/coding/javascript/crc/crc_js.html 中的计算器 并在自定义 CRC-8和初始值0xFF 之上选中"Input Reflected"和"Result Analysised"、我还可以获得0x5D 作为结果。 MCF8316A 不会 在其 CRC 计算中反映输入或结果、因此在不  选中"反映输入"和"反映结果"的情况下、我确实得到了结果0x20。

    Unknown 说:
    如果有人能提供一些关于电机转速写入和读取可能被破解的见解,我将非常感激。

    MCF8316A 的 I2C 勘误表会导致电机驱动器的算法卡滞。 如果电机驱动器完全停止通信并且仅在下电上电后纠正、则很遗憾、您可能遇到勘误表。 确保不会发生勘误的唯一方法是、在电机运行时不通过 I2C 进行通信。  如果您需要一个在电机运行期间可通过 I2C 通信的类似器件、MCF8316C-Q1没有此勘误表、并且与 MCF8316A 引脚对引脚兼容。

    此致、

    约书亚

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

    你好、Joshua、感谢你回来给我听。

    啊,我看到,我是相当新的 CRC (这是我第一次遇到它),所以我甚至没有意识到有"REFIN"和"REFOUT"设置。 现在要看的东西!

    至于通信误差、我想了很多。

    在任何一种情况下都感谢你的信息,现在得到一些供思考的食物

    我会将其标记为已解决的问题、如果出现其他问题、我将打开一个新主题。