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.

[参考译文] TMS320F280037C:F280037C I2C 与 BQ769412 进行通信时不确认地址

Guru**** 2782615 points

Other Parts Discussed in Thread: BQ769142

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1615470/tms320f280037c-f280037c-i2c-communication-with-bq769412-not-acknowledging-address

器件型号: TMS320F280037C
主题中讨论的其他器件: BQ769142

您好团队:

我正在尝试在 TI C2000 F280037C 微控制器和 BQ769412 电芯平衡器器件之间建立 I2C 通信。

在 F280037C 上配置 I2C、使用 GPIO14 作为 SDA、使用 GPIO15 作为 SCL。 这两个引脚都正确多路复用至 I2C 外设。 I2C 时钟速度为 100kHz。 外部 10 千欧上拉电阻器从 SDA 和 SCL 连接到 3.3 伏。

使用的目标 I2C 地址为 0x08 作为 7 位地址。

当我使用逻辑分析仪观察总线时、我只看到一个启动条件、后跟地址 0x08、然后是一个 NACK、接着是一个停止条件。 BQ769412 永远不会确认地址。 未观察到更多数据帧。

相同的 I2C 驱动程序和配置可与其他 I2C 器件(例如 EEPROM)正常工作、因此确认 MCU I2C 外设和代码正常工作。

在硬件侧、BQ769412 的 RST_SHUT 引脚连接到 MCU 的 GPIO 并被驱动为高电平。 ALERT 引脚配置为输入。 SDA 和 SCL 具有外部上拉电阻。 BQ 器件已通电、MCU 和 BQ 器件之间共用接地。

在此阶段、我的目标只是使 BQ769412 确认 I2C 地址。 无需寄存器访问或数据传输。

我想确认 BQ769412 响应 I2C 所需的最低硬件连接和条件。 具体来说:

在器件确认 I2C 之前、施加电池或 VSTACK 电压是否是必需的?

将 RST_SHUT 驱动为高电平是否足以唤醒器件、或者是否有任何所需的时序?

是否有任何其他引脚(例如 CFETOFF、DFETOFF 或 HDQ)必须连接或驱动至特定的电平以实现 I2C 通信?

即使通信模式配置为带 CRC 的 I2C、器件是否也会确认 I2C 地址、这是默认设置?

如能就从 BQ769412 获取 I2C ACK 的最低要求提供任何指导、都将非常有帮助。

谢谢你。

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

    尊敬的 Prashanth:

    您能否提供一些与 BQ 器件通信的逻辑分析仪数据流捕获结果? 让这个团队来看看这个问题

    此致、

    彼得

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

    您好:

    感谢您的答复。

    我已经使用逻辑分析仪捕获了 I2C 通信、并附加捕获结果以供参考。

    在捕获中、MCU 生成启动条件、后跟 7 位地址 0x08。 BQ 器件通过 NACK 进行响应、然后生成停止条件。 未观察到数据字节或更多 I2C 帧。

    此行为在多次尝试之间以及尝试读取和写入操作时是一致的。 总线时序看起来正确、并且相同的 I2C 配置可与同一 MCU 上的其他 I2C 器件正常运行。

    如果您需要任何其他捕获、例如不同的 I2C 速度或引脚电平波形、包括 SDA 和 SCL 时序、请告诉我。

    感谢你的帮助。

    此致、
    Prashanth

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

    您好 Prashanth、

    在硬件端、BQ769412 的 RST_SHUT 引脚连接到 MCU 的 GPIO 并被驱动为高电平。 ALERT 引脚配置为输入。 SDA 和 SCL 具有外部上拉电阻。 BQ 器件已通电、并且接地在 MCU 和 BQ 器件之间共用。[/报价]

    您提到 BQ 器件已通电。 能否通过检查 REG18 引脚来确认这一点? 如果器件处于唤醒状态、其读数应~1.8V。

    您还提到了将 BQ769142 的 RST_SHUT 引脚拉为高电平。 如果 RST_SHUT 引脚保持高电平超过 1 秒、这将导致我们的器件关断、这可能导致器件无法响应地址的原因。 我们有此常见问题解答、可进一步详细说明这一点:((+)【常见问题解答】BQ76952:如何复位 BQ769x2 器件? -电源管理论坛 — 电源管理- TI E2E 支持论坛)

    您是否不能将此引脚拉高并尝试在通电时唤醒器件?

    是否将 RST_SHUT 驱动为足够高的值以唤醒器件、或者是否有任何需要的时序?

    要唤醒器件、应将 TS2 引脚拉至低电平或将 LD 引脚拉至~1.45V 以上。 我们的 (+)【常见问题解答】BQ76952:关断模式如何工作?中对此进行了进一步说明。 -电源管理论坛 — 电源管理- TI E2E 支持论坛 、该论坛也应该适用于此次应用。

    是否有任何其他引脚必须连接或驱动至特定电平才能进行 I2C 通信、例如 CFETOFF、DFETOFF 或 HDQ?

    这些引脚可以单独使用、不需要用于 I2C 通信。  

    即使通信模式配置为具有 CRC 的 I2C(这是默认设置)、器件也会确认 I2C 地址吗?

    I2C 地址不会根据是否启用 CRC 而变化。 用户稍后可以更改它、但默认情况下遵循以下内容: (+)【常见问题解答】BQ76952:BQ769x2 系列的 I2C 器件地址是多少? -电源管理论坛 — 电源管理- TI E2E 支持论坛

    此致、
    Alexis

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

    您好 Alexis、

    感谢您的指导。

    我现在能够成功地与 BQ769412 器件通信。 该问题与 CRC 处理有关。 默认情况下、器件处于带 CRC 模式的 I2C 模式、之前我指的是未实现 CRC 的 MSP430 示例代码、这就是器件未进行确认的原因。

    根据 BQ 开发支持页面上提供的 STM32 示例代码修改我的 I2C 驱动程序(采用适当的 CRC 实现)后、器件现在会在 I2C 上正确响应。

    关于硬件:

    • RST_SHUT 引脚现在保持低电平(未驱动为高电平)。

    • DFETOFF 保持低电平。

    • SDA 和 SCL 具有外部上拉电阻。

    • MCU 和 BQ 之间共用接地。

    • REG18 测量值约为 1.8V、确认该器件处于唤醒状态。

    • 器件现在确认 I2C 地址、通信稳定。


    但是、我现在面临的是与测量相关的问题。

    我正在使用设置为 13V 的工作台电源来测试器件。这种 13V 电压分布在使用电阻分压器网络的 12 个电池输入之间、纯粹用于验证目的(未连接实际电池)。

    大多数电芯电压 (Cell1 至 Cell10) 的读取都正确(每个~1.08V)。 不过:

    • Cell0 未正确读取。

    • Cell11 未正确读取。

    • 电池组电压也与施加的电压不完全匹配。

    所有中间电芯电压都是准确的。

    这表明可能存在以下问题:

    • VC0 / VSS 基准

    • 栈顶连接

    • BAT 与 VC 堆栈对齐

    • VC 引脚配置

    我将附加我们的定制电路板原理图的相关部分以供参考。

    您能否告知在使用电阻分压器测试设置而不是实际的电池组时、必须满足哪些硬件条件以确保第一个和最后一个电芯的读数准确?

    具体来说:

    • VC0 和 BAT 对齐是否有任何要求?

    • 未使用的 VC 引脚是否需要特定的端接?

    • 使用电阻分压器而不是实际电芯进行测试时、是否有任何建议?

    感谢您的支持。

    此致、
    Prashanth