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.

[参考译文] MCT8316A:无法将影子寄存器传输到 EEPROM、反之亦然

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

https://e2e.ti.com/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1182486/mct8316a-unable-to-transfer-shadow-registers-into-eeprom-and-vice-versa

器件型号:MCT8316A

您好!

我有一个 MCT8316A 电机驱动器、通过 I2C 使用 PIC32MM 微控制器进行控制。 我尝试 使用数据表中显示的默认配置写入 EEPROM。 配置如下:

为了实现这一点、我将按照数据表的"8.6.2 I2C 串行接口"部分中的详细说明对每个寄存器进行写入。 例如、要将数据0x6EC4C100写入对应于 ISD_CONFIG 的影子寄存器、我将通过 I2C 发送以下内容:

请注意、如数据表所示、每个字节事务之间存在100us 的延迟。 请确认此 I2C 命令是否正确。 我将对所有其他影子寄存器重复相同的过程。

完成该操作后、我将值0x8000000写入寄存 器0x0000E6、以便将影子寄存器传输到 EEPROM。 这是与该命令对应的 I2C 事务:

之后、我只需等待几秒钟、然后关闭电源。 然后、我再次为驱动器供电、并读取 EEPROM。

为了读取 EEPROM、我将值 0x40000000写入寄存器0x0000E6。  这是与该命令对应的 I2C 事务:

之后、我等待200ms、然后开始读取每个影子寄存器。

为了读取每个影子寄存器、我 执行以下 I2C 事务(读取 ISD_CONFIG 寄存器的示例):

从该示例中可以看到、我从 ISD_CONFIG 寄存 器读取的值为0x64738C20、预期值为0x6EC4C100。 这意味着 EEPROM 不会写入我配置的影子寄存器。

我的程序是否有问题?

谢谢!

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

    您好、Blas、

    首先、对于 MCT8316A 数据表中的错误、我深表歉意。 请将0x8A50000写入 寄存器0x0000E6。 ALGO_CTRL1寄存器中的位20至27包含 EEPROM 寄存器访问密钥、即0xA5、位31是 EEEPROM 写入位。  希望这能解决这个问题。  

    此致、

    Vishnu

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

    谢谢、Vishnu。 我确认此更改解决了我的问题。

    此致!

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

    感谢 Blas 的确认!