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.

[参考译文] TPS25750:使用 I2Cw 将数据写入 BQ25792问题

Guru**** 2604225 points
Other Parts Discussed in Thread: BQ25792, TPS25750

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1288882/tps25750-issues-writing-data-to-bq25792-using-i2cw

器件型号:TPS25750
主题中讨论的其他器件:BQ25792

你好。

我正在尝试从 BQ25792 (VBUS、VSYS 和 BAT 电压)读取 ADC 数据。
使用 I2Cr 读取时的电压无效。
可能需要 首先在寄存器2Eh 中启用 BQ25792中的 ADC。  
这就是我遇到的问题。

当我从 BQ25792读取2Eh 寄存器时、我会得到响应数据0x30。
我想将0x80写入该寄存器、从而 设置 ADC_EN = 1并更改 ADC_SAMPLE = 00 (从12位到15位)。

我在 应用模式下安装了 TPS25750、已使用最新的 GUI 进行了补丁。

确认修补完成后所执行的操作:

  1. DATA1寄存器加载64字节:
    • 字节0:0x6B (BQ 从器件地址)
    • 字节1: 0x2E (BQ 寄存器地址)
    • 字节2: 0x01 (2Eh 寄存器大小- 1个字节)
    • 字节 3-63:0x00
  2. CMD1寄存器加载4个字节: 'I''2''C''r'
  3. 延迟10ms
  4. 读取  CMD1 寄存器。 寄存器为空
  5. 延迟10ms
  6. DATA1寄存器读取2个字节。 DATA1寄存器包含0x00 (任务返回代码?) 和0x30 (默认的2Eh 寄存器 POR 值?)
  7. DATA1寄存器加载64字节:
    • 字节0:0x6B (BQ 从器件地址)
    • 字节1:0x01 (2Eh 寄存器大小- 1个字节)
    • 字节2:0x00 (保留)
    • 字节3:0x2E (BQ 寄存器地址)
    • 字节4:0x80 (将 ADC_EN 设置为1的有效载荷)
    • 字节5-63:0x00
  8. CMD1寄存器加载4个字节:'I''2''C''w'
  9. 延迟10ms
  10. 读取 CMD1寄存器。 寄存器为空
  11. 延迟10ms
  12. DATA1寄存器加载64字节:
    • 字节0:0x6B (BQ 从器件地址)
    • 字节1:0x2E (BQ 寄存器地址)
    • 字节2: 0x01 (2E 寄存器大小- 1个字节)
    • 字节3-63:0x00
  13. CMD1寄存器加载4个字节: 'I''2''C''r'
  14. 延迟10ms
  15. DATA1寄存器读取2个字节。 DATA1寄存器包含0x00 (任务返回代码?) 和 仍为0x30 、而不是0x80

我期待任何建议。 您是否有此类通信的详细且正确的示例?

此致 Mateusz Kusmierz

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

    尊敬的 Mateusz:

    我认为您对如何使用 I2Cw 和 I2Cr 命令与 BQ25792进行连接的理解是不正确的。

    您需要遵循以下顺序来执行您正在执行的任务:

    1. 使用 I2Cw 命令将0x80写入寄存器0x2e (启用 ADC)。这将是2字节的写入

     使用 I2Cw 命令提供 ADC 的地址 (对于 IBUS 为0x31、对于 IBAT 为0x33、对于 VBUS...)  这将是单字节写入。

    3. 使用 I2Cr 命令从 BQ25792读取2个字节 (返回数据中应包含3个字节的数据)。  第一个值是返回的字节数、接下来的2个值是 ADC 值。

    只要您知道 I2Cr 命令返回的第一个字节是有效字节的数量、而不是数据的第一个字节、您的 I2Cr 和 I2Cw 命令结构在我看来是正确的。

    请尝试此订单、如果不成功、您能否向我们提供 I2Cs_SCL、I2Cs_SDA、I2Cm_SCL 和 I2Cm_SDA 线路的示波器捕获、以便我们帮助进行进一步调试。

    此致、

    卡盘

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

    您好、Chuck。

    感谢您的答复。 您的解释对我们帮助很大。 我已经能够读取一些电压和电流。

    但是您是否确定从 I2Cr 命令(在 DATA1寄存器中)返回的第一个字节是有效字节的数量? 它看起来始终为0x00、并且在 SLVUC05A 文档(TPS25750主机接口技术参考手册第60页、第 3.4.2段)中明确指出:1从 I2Cr DATAX 寄存器返回的 t 字节为标准任务返回代码、 0x00表示 任务成功完成。

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

    Mateusz,

    我查看了文档、您是对的。  第一个字节是状态返回、而不是字节计数。