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.

[参考译文] TPS65721:I2C 连续读取错误

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/992010/tps65721-i2c-continuous-reading-error

器件型号:TPS65721
主题中讨论的其他器件: TPS65720

你好!

在从 TPS65721持续读取(1个寄存器中的更多数据)期间、我遇到了非常奇怪的错误。

我的解决方案:

CPU:STM32F103CBTX

IDE:STM CubeIDE

库:STM HAL 库

I2C 总线速度:400和100KHz -同一问题

逻辑分析仪:Kingst LA5016

说明。

情况 A:在对 TPS 寄存器进行一对一读取期间一切正常、我从寄存器中看到正确的信息。

情况 b:当我尝试读取来自 第一个寄存器的奇数数量寄存器- 3、5、7 ectr -信息是正确的、但所有其他信息是0xFF、0xFE。

请参阅示例:我尝试读取 IR0-IR2寄存器

案例 C:当我尝试读取偶数数量的寄存器时- 2、4、6。。。 -由于读取序列未正确完成、I2C 总线挂起 HAL_BUSY 错误。

当我尝试从 CHGSTATUS 读取6个寄存器到 CHGSTATE 时、请参阅一个示例

该问题在我的设备中可100%重现。

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

    您好 Alexey、

    是否触发了任何故障或中断? 您是否在读取之间向任何寄存器写入任何内容?

    最棒的

    Emily

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

    您好、Emily、

    [引用 userid="367134" URL"~/support/power-management/f/power-management-forum/992010/tps65721-i2c-continuous-reading-error/3664019 #3664019")是否触发了任何故障或中断? [/报价]

    否 在连续读取之前、我调整了我的应用程序、以排除使用 I2C 总线进行的任何其他操作-结果相同。 之前没有写过...

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

    Alexey、

    PMIC 和所有稳压器是否按预期运行? 如所示、该问题仅适用于 I2C 同时读取所有寄存器?

    最棒的

    Emily

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="367134" URL"~/support/power-management/f/power-management-forum/992010/tps65721-i2c-continuous-reading-error/3668530 #3668530"] PMIC 和所有稳压器是否按预期运行? 如所示、此问题仅适用于 I2C 同时读取所有寄存器?[/QUERP]

    是的、PMIC 按预期工作:系统电压为5V、DCDC1 = 3、3V、LDO1 = 3.3V (HOLDed、不可堆叠)。 将锂聚合物可充电电池3、7V 连接到 BATT、USB 电源-连接到交流。

    仅当我尝试在一个 I2C 请求中同时读取多个寄存器时、才会出现此问题。

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

    Alexey、

    您能否验证 是否下载了最新的软件支持文件? 如果是、我建议在同时读取所有寄存器时探测 SDA 和 SCL、而不是逐个查看您是否可以解决 I2C 的问题。  

    最棒的
    Emily

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

    您好、Emily、

    由于我们不使用 TPS65720_1EVM 开发板、此软件包在我们的案例中不适用。

    总之、在我的主题启动帖子的屏幕截图中、您可以直接看到来自 PMIC 引脚的信号- SDA、SCL 和 INT、然后再由 SW 应用进行任何修改。  


    BR、
    Alexey

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

    您好、Emily、

    我还有其他信息:连续写入也不正确。 请参阅屏幕截图。

    测试条件非常简单:我想将我自己的位图设置为 IRQ 屏蔽寄存器 TPS_IRMASK0-:-TPS_IRMASK2。 我希望允许所有可能的中断、但根据数据表、我们必须保持 TPS_IRMASK0中的 B4位和 TPS_IRMASK2中的 B0位不变。 这意味着我应该从开始寄存器 TPS_IRMASK0 (寄存器地址为0x0D)写入3个字节0x10、0x00、0x01。

    正如您在第一个屏幕截图中看到的、连续写入没有任何错误;看起来一切都正常。 但是、写入数据后、我会立即检查这些寄存器上的内容。  在第1个寄存器 TPS_IRMASK0处、我看到正确的信息0x10、但其余寄存器 TPS_IRMASK1和 TPS_IRMASK2仍具有默认数据0xFF。 这意味着之前的写入操作没有成功完成。

      序列开始

     序列结束(很抱歉、使用不同的刻度)。

    快速更新:对同一寄存器进行一对一写入的结果。 一切都很好。

    BR、
    Alexey

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

    您好 Alexey、

    请跳转以快速帮助 Emily -看起来您正在寻找自动递增功能(https://www.i2c-bus.org/auto-increment/) -但 TPS6572x 数据表中没有提到这一点、因此它可能没有此功能。 它不是 I2C 规范的必需部分、该器件已使用12年。  

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

    尊敬的 Kevin:

    非常感谢您的澄清! 此 PMIC 的最新数据表的发布(修订)日期为2018年5月。 我希望在"修订历史记录"/"勘误表"章节中提及有关 I2C 发布级别的重要信息...

    总之、再次感谢您!

    BR、

    Alexey