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.

[参考译文] TMS320F28386D:执行连续操作时 I2C 主器件具有错误行为

Guru**** 2448780 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1331872/tms320f28386d-i2c-master-incorrect-behavior-when-performing-consecutive-operations

器件型号:TMS320F28386D

您好!

我们将对从设备执行连续的主设备写入操作。

在执行第二个操作之前、我们要检查 I2CSTR 的 SCD 位是否等于1、BB 位是否等于0。

在速度为100kbit/s 时、我们可以看到第二次写入失败。

速率为400kbit/s 时、我们就不会出现问题。

我怀疑在 STP 位的传输开始时 SCD 位和 BB 位会被设置、但如果我们过快、则在尝试启动第二个访问之前未完成其传输、出现问题。

您确认了吗?

克莱门特

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

    您好 ,Clement,

    Unknown 说:
    我怀疑 STP 位的传输开始时 SCD 位和 BB 位会被设置,但如果我们太快,那么在我们尝试启动第二次访问之前就不会进行传输了,并出现了问题。

    当 SCL 和随后的 SDA 变为高电平时会设置 SCD (在这种情况下、一旦 SDA 变为高电平、就会生成 SCD 本身)、如果总线忙、则会设置 BB; 您能否附上100kbit/s 和400kbit/s 情形下发生的情况的屏幕截图?  如果发送行为错误、您的结论是有意义的、但根据 I2C 模块设计得 过快的方式、实际上只要该模块在数据表规格内工作、可能性就不大。

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

    Omer:

    感谢您的回答、我要进行调查、可能是另一个组件方面的问题。

    我将无法在本周进行调查、因此我将在两周时间内与您联系。

    克莱门特

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

    之所以会出现该错误、实际上是因为我们的软件团队使用的是 I2CSTR 寄存器的 SCD 位、而不是 I2CMDR 寄存器的 STP 位。

    由于 I2C 外设时钟设置为10MHz、我认为我们在 I2C 状态机返回到就绪状态之前太快地启动新事务、并且我们无法正确启动新事务。

    此问题现已修复。