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.

[参考译文] MSPM0G3507:I2C 控制器问题

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1482253/mspm0g3507-i2c-controller-problem

器件型号:MSPM0G3507
主题中讨论的其他器件:BQ40Z50

工具与软件:

您好!

我在 通过 smbus/i2c 到 MSPM0G3507从 BQ40z50读取寄存器时遇到问题  

它在很长时间内都能正常 工作、但 I2C 突然停止工作、SCL 被下拉。 下面是 我通过逻辑分析仪获得的数据  

我 曾尝试通过调试模式找到问题、发现 i2c 控制器状态繁忙、因此无法将命令读取或写入 BQ40Z50。

if (dl_I2C_getControllerStatus (I2C_1_INST)&dl_i2C_CONTROLLER_STATUS_BUS_BUS)


  返回 BQ40Z50_BUSY;    

}

是否有办法解决此问题? 或者、除了控制器繁忙之外是否存在任何问题?    

此致、

Andy

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

    正如我所知、在写入 BQ40Z50的第一个(数据)位后、时钟正在延展、即中间字节(非常不寻常)。 我从未看到 MSPM0 I2C 停止中间字节、因此我的第一个猜测是它正在拉伸目标。

    BQ40Z50能够拉伸时钟、但数据表/TRM (SLUSBS8B/SLUUA43A)不说明它何时/为何会这样做。 在论坛上搜索"BQ40Z50 and Strache"会显示一些信息、但没有硬性线索、例如:

    https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1124391/bq40z50-r1-clock-stretch?tisearch=e2e-sitesearch&keymatch=bq40z50%2520AND%2520stretch#

    左边的"33"是一条命令吗? TRM 是指"0x0033"命令[Ref sec 12.1.59] 、它将芯片置于"ROM mode"、这听起来像是某种诊断功能。

    电源管理论坛-人们可能会有一些更好的答案。

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

    Bruce、您好!

    是否有办法解决拉伸问题?  

    在左边的命令是否是"33"? TRM 是指"0x0033"命令[Ref sec 12.1.59] 、它将芯片置于"ROM mode"、这听起来像是某种诊断功能。[/QUOT]

    否这是关于读取命令"0x0016"(即"BatteryStatus")、数据显示0033 (十六进制)。

    如何查找 电源管理论坛人员?

    此致、

    Andy

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

    SMBus 强制执行时钟低电平超时(我已经看到这两种情况、即25ms 或35ms)、然后所有代理都应"重置"。

    BQ40Z50规定其时钟延展的最大值为25ms [Ref SLUSBS8B Sec 7.33]、但我不知道它的恢复操作是什么。

    MSPM0可以检测到超时[参考 MSPM0 TRM (SLAU846B) Sec 20.2.3.6]、但它所做的只是通知您发生了这种情况。

    在 I2C 级别、SCL-low 的唯一方法是对目标进行复位/下电上电;BQ40Z50似乎耗尽了电池、我看不到复位引脚、因此我不知道这是否可以完成。

    MSPM0控制器侧能够进行时钟延展[Ref MSPM0 TRM Sec 20.2.0.3.7]、但列出的原因 都在字节边界上发生。

    也可能(远程)存在某种东西(噪音?) 看到的总线上的电压尖峰。

    电源管理论坛在这里:

    https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum

    如果 MSPM0人可以参与讨论、您可能可以包含指向此主题的链接。