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:I2C 总线速度和 I2C 勘误表

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

https://e2e.ti.com/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1393427/mct8316a-i2c-bus-speed-and-i2c-errata

器件型号:MCT8316A
主题中讨论的其他器件: MCF8316A

工具与软件:

您好!
我正在开发一个电机控制平台、使用4个 MCT8316A 器件、全部在同一条 I2C 总线上、并使用 I2C 多路复用器单独与每个器件通信。 速度为100KHz。
我的基本测试软件使用一些锯齿流运行全部4个电机:将速度(通过 I2C、而不是 GPIO)提高到某个最大值、减小到0、改变方向并再次运行、依此类推。
要提高/降低速度、我要使用读取-修改-写入将速度写入 DEVICE_CTRL 寄存器。
在多次写入/读取中、我可以看到读取操作失败。
当降低 I2C 总线速度时、我可以看到故障率也会降低。


我有2个问题:
1.找到此勘误页面- https://e2e.ti.com/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1066777/faq-production-device-information
勘误表#8说"在电机运行期间、请勿从器件读取寄存器"。
它是否仍然相关?

2. I2C 写入/读取速度–在数据表的第8.6.2章中、有一条注释:"为了实现可靠的通信、应在通过 I2C 总线传输的每个字节之间使用100-µs 延迟"。
但是、在 SDA/SCL 交流特性表中、我没有看到对此延迟的任何要求。
我正在使用 STM32器件控制驱动程序、我的代码使用 ST HAL I2C 函数、这些函数可以写入整个字节流、而无需在字节之间留出100us 中断(1个器件地址+ 3个控制字+ 4个寄存器数据)。
我是否应该将此延迟添加到代码中?

谢谢!

达根

--读/写操作的示波器捕获@100KHz

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

    尊敬的 Dagan:

    [报价 userid="616881" url="~/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1393427/mct8316a-i2c-bus-speed-and-i2c-errata 勘误表#8说"请勿在电机运行期间从器件读取寄存器"。
    它是否仍然相关?

    此勘误表仅与 MCF8316A 相关、不是 MCT8316A 勘误表。 此勘误表导致 MCF8316A 的算法卡住、只能通过对器件进行下电上电来恢复。

    [报价用户 id="616881" url="~/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1393427/mct8316a-i2c-bus-speed-and-i2c-errata ]我正在使用 STM32器件来控制驱动程序、我的代码使用 ST HAL I2C 函数写入整个字节流、而无需100us 字节间间隔(1个器件地址+ 3个控制字+ 4个寄存器数据)。
    我是否应该将此延迟添加到我的代码中?

    请添加100us 字节间延迟、此延迟为执行内部电机换向算法留出了时间。  

    此致、

    约书亚

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

    谢谢你约书亚-我会添加它。

    达根