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.

[参考译文] TMS570LS1227:I2C 在读取 EEPROM 时卡住

Guru**** 2756805 points

Other Parts Discussed in Thread: TMS570LS1227

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/861651/tms570ls1227-i2c-stuck-when-reading-eeprom

器件型号:TMS570LS1227

大家好、

我的客户发现 有关 TMS570LS1227的问题、如下所示:

为570加电时、570从 EEPROM 读取程序。 有时、当在初始化时从 EEPROM 读取程序时、I2C 将被卡住、因为 SCL 在3.3V 时保持高电平、SDA 保持低电平、并且从 EEPROM 读取程序没有任何错误。

仅将 EEPROM 断电、可通过 I2C 接口观察到波形。 然后为 EEPROM 加电、一切正常。

那么、为什么在初始化时 I2C 有时会卡住?  

感谢您的回答。

Gary

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

    您好!

    在开始从 EEPROM 读取之前、您是否可以尝试在初始化时设置一些延迟?

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

    您好、Miro、

    您能给我解释一下这个问题吗? 毕竟、我不能在没有任何解释的情况下告诉我的客户。

    感谢您的回答。

    Gary

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

    您好!

    总线上是否有其他从器件? 它们是否在总线上具有外部上拉电阻器?

    我建议延迟、以确保所有电压都处于稳定水平。

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

    您好、Miro、

    570和 EEPROM 由同一个 VCC3V3供电、在 VCC3V3稳定且3V3的波形稳定后、读取 EEPROM 延迟20ms。

    现在、我与客户重新沟通问题、详细信息如下所述:

    它们使用 I2C EEPROM 来存储一些标志位、在初始化570 (初始化时间~ 20ms)后、570开始读取/写入 EEPROM。 有时、570无法读取/写入 EEPROM、程序将卡在读取/写入部分。 发生这种情况时、它们会测试 I2C 引脚、并且没有波形。  发生概率很低,有时每两周仅发生一次。

    那么、是否存在一些不正确的软件配置或相关布局问题、或此问题的其他原因?  

    谢谢你。

    Gary

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

    您好!

    据我了解、电路板上有可能会断开 EEPROM 的电源。 如果是、我们可以了解谁在断开 EEPROM 电源的连接时将 SDA 线路保持在低电平。 此外、状态寄存器中的值可能会有所帮助。

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

    您好、Miro、

    感谢您的建议。

    他们尝试断开 EEPROM 的电源、在断开电源后、会出现 SDA&SCL 波形。  

    因此、EEPROM 可能会将 SDA 线路保持在低电平。 但我对 SCL 线路有疑问:EEPROM 无法保持 SCL 为高电平、因为它是开漏输出、对吗? SCL 为什么保持高电平、因为570会将 SCL 线路拉低并释放它。

    此外、570中有如此多的寄存器。 您是指 I2C 状态寄存器(I2CSTR)吗? 或者还有其他一些寄存器可以帮助我们找到原因?

    再次感谢。

    Gary

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

    您好!

    通过上拉电阻器使线路保持高电平。

    覆盖此情况的一种方法(当数据线(SDA)保持在低电平并由从器件引起时)是发送九个时钟脉冲的主器件。 将总线保持在低电平的器件应在这九个时钟内的某个时间将其释放。 如果这不起作用、那么只有下电上电可以起作用(一些从器件有复位引脚)。

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

    您好、Miro、

    很抱歉、我的问题混淆了。

    实际上、我要问的是:

    SCL 线路由上拉电阻器保持高电平、如果 TMS570 I2C 块正常工作、它应该继续发出 SCL 时钟、因为无论 SDA 是否保持低电平、SCL 线路都可以下拉至 GND、 我们应该捕获 SCL 波形。 现在我们可以看到没有 SCL 转换、I2C 块是否卡住?

    因为当 EEPROM 断电时、I2C 输出会立即恢复。 因此、我假设程序尝试发出 I2C 信号、但 TMS570的 I2C 块卡住。 否则、SCL 应具有一个波形。