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.

[参考译文] BQ76952:BQ7695202与 STM MCU 的 I2C 通信问题

Guru**** 2465890 points
Other Parts Discussed in Thread: BQSTUDIO, EV2400, BQ76952

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1352225/bq76952-i2c-communication-issue-with-bq7695202-with-stm-mcu

器件型号:BQ76952
主题中讨论的其他器件:BQSTUDIOEV2400

尊敬的团队:

我们的团队采用 BQ7695202开发了定制硬件电路、通过 I2C 通过 STM32L433 MCU 促进通信。

遗憾的是、我们在阅读 BQ7695202和 MCU 提供的信息或在两者之间建立通信时遇到了困难。

我们恳请您提供诊断问题和解决建议方面的支持。

图中包含一段示意图、供您参考、

我们在 SDA 和 SCL 引脚上有4.7k 上拉电阻器,

在硬件上、我们将获得 REG18 - 1.8V、REG1 - 3.4V 和 REG2 - 0V

请建议我们是否还有其他可在硬件上测试的参数?

我还要分享我们的 STM C 文件供参考

此外、

当我们使用"HAL_I2C_IsDeviceReady"库函数检查器件是否准备就绪时、它返回 HAL_ERROR

e2e.ti.com/.../bq7695202_5F00_i2c.c

请告诉我们我们硬件和固件的纠正和改进点。

谢谢你。

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

    您好、Santu:

    您是否见过此器件的 STM32示例代码以了解其是否有效或进行比较?

    https://www.ti.com/tool/download/SLUC701

    您是否具有事务事件的任何逻辑分析仪图像、以便检查正在发生的情况。

    此致、

    路易斯·埃尔南德斯·萨洛蒙

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

    您好、Luis:

    当我们运行此代码时、将无法检索数据。 使用 I2C_DEVICE_READY 命令进行检查后、该命令返回错误代码1。

    我们将尝试在 DSO 上捕获信号并将其共享。

    另外、我很想知道我们如何才能确保 BQ7695202硬件从一开始就可以正常工作?

    您在我们的硬件电路中是否发现了任何建议或错误?

    此致、

    桑图

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

    您好、Santu:

    您能详细说明  I2C_DEVICE_READY 命令吗? 是的、逻辑分析仪的图像会非常有用!

    原理图对我来说很好! 我会测量 REG18以检查器件是否开启。 如果 REG18上有1.8V 的电压、它应该能够正常工作。

    此外、可以将示波器放在 TS1上、默认情况下该器件应该对该热敏电阻脉冲、所以如果一切正常、应该在这里周期性地脉冲。

    此致、

    路易斯·埃尔南德斯·萨洛蒙

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

    您好、Luis:

    我们通过适当调整 I2C 时序配置、允许建立通信、从而成功解决了 I2C 通信问题。 不过、在尝试读取 Cell 电压的值时会遇到问题、尤其是对于 Cell 1。

    1. 使用命令 I2C_READ (device_addr、reg_addr、length)检索单元格数据时、我们观察到将 reg_addr 解析为0x16且长度为2个字节导致这两个字节的数据都不正确。 但是、当我们对 reg_addr 0x16和0x17的长度进行解析时、我们获得了这两个字节的正确数据。

    2. 对于电芯1、我们读取 reg_addr 0x14和0x15。 当 reg_addr 0x14提供正确的数据时、reg_addr 0x15始终返回不正确的数据(始终为0xff)。

    我们注意到、虽然我们使用读取命令获取所有电池的正确数据、但对于电池1、仅通过读取单个字节获取正确的数据。

    请提供建议。

    谢谢!

    此致、

    桑图

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

    您好、Santu:

    很高兴听到您使 I2C 大部分工作 。

    通常、如果该器件返回0xFF、则表示数据可能尚未准备好进行读回。 发送命令以读取电芯电压后、可能必须添加短暂的延迟、以确保器件有足够的时间进行处理。  如果添加一个小的延迟、您看到了改进吗?

    您的序列是否与  BQ769x2软件开发指南

    此致、

    路易斯·埃尔南德斯·萨洛蒙

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

    尊敬的 Luis:

    我们已尝试增加延迟、但仍然没有接收到第1节电池的数据。

    请分享用于读取单元格值的最新代码、查看

    .e2e.ti.com/.../6237.main.c

    谢谢你。

    此致、

    桑图·雷迪

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

    您好、Luis:

    此外、借助上述固件、我们还试图检索温度值。 但是、我们只能获得 TS1的读数、TS2、TS3等不能获得。 您能评论一下并提供您的想法、建议和反馈吗?

    谢谢你。

    桑图

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

    您好、Santu:

    我会研究此事,并在明天作出回应!

    此致、

    路易斯·埃尔南德斯·萨洛蒙

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

    您好、Santu:

    您是否具有通信线路的逻辑分析仪捕获?

    我还建议查看我们的一些示例代码来比较其工作原理(https://www.ti.com/tool/download/SLUC701)。

    此致、

    路易斯·埃尔南德斯·萨洛蒙

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

    尊敬的 Luis:

    我们参考了用于构建我们的固件的相同示例代码。

    目前、我们实现了基本的逻辑分析器、但我不确定它涵盖的是代码的哪一部分。

    同时、我将与大家分享部分代码、方便大家回顾。

    用于电池单元问题

    初始化部分

    单元格读取部分

    对于温度问题、可以在此处看到

    初始化

    温度读数部分

    请查看这部分代码、让我们知道我们是否在该代码中有任何错误

    谢谢!

    此致、

    桑图

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

    您好、Santu:  

    我将在明天进行审查并提供反馈!

    此致、

    路易斯·埃尔南德斯·萨洛蒙

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

    您好、Santu:

    代码中的内容不太清楚。 如果您可以获得事务序列的逻辑分析仪图像、这可能会有所帮助!  

    可以非常便宜地在线购买逻辑分析仪、以进行简单的调试。

    此致、

    路易斯·埃尔南德斯·萨洛蒙

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

    尊敬的 Luis:

    以下是采集的 I2C 数据图像

     读取电芯1电压

    字节1 - 87

    字节2 - FF

    这是我们接收到的错误数据

    2.读取电芯2的电压

    字节1 - 6C

    字节2 - 07

    读取的数据在此处正确、实际电池电压为~1.9V

    3.读取 temp 1 (TS0)

    字节1 - F9

    字节2 - OB

    数据读取正确,温度33.4

    4.读取温度3 (TS3)

    字节1和字节2 - 00

    数据不正确。

    请帮助我们理解这个问题

    谢谢你。

    此致、

    桑图

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

    您好、Luis:

    硬件方面的问题也比较多 在下图中共享

    我们已在电芯0 -电芯1和电芯1 -电芯2之间应用2V、以此类推。
    TP1、TP2和 TP3的预期输出电压应为多少。

    那么 C217、D201和 Z217的作用

    等待您的回复。 非常感谢您在获得进一步理解方面的支持、我们也非常重视您更快的回应。

    谢谢你。

    此致

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

    您好、Santu:

    在读取时、您可以尝试改为读取两个连续的字节、看看这是否有用。 通常、您可以按如下顺序读取字节: 第 1.2节电芯1电压- 0x14 部分的第二部分。

    不能完全确定为什么它不能如你目前所做的那样工作、但我也会内部检查。

    抱歉,我们还没有想出什么可能会发生!

    关于新问题:

    您应该可以预期所测量电池之间的电压。 相对于 VSS、TP-1将接近0V。

    C217用作 VC0的滤波电容器。 现在、C216也应连接到 GND、而不应连接到 VC0。

    D201/Z217保护 VC0引脚免受过负瞬态(D201、应为肖特基二极管)和过正瞬态(Z217)的影响。

    此致、

    路易斯·埃尔南德斯·萨洛蒙

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

    您好、Luis:

    我们已根据您的建议对 C216进行了修改。 也感谢您解答其他问题。

    我们已将 Cell_0 (也称为 BAT-)连接到 GND、现在我们要获取电芯1的正确值。

    不过、在查看多个 TI 参考设计文档时、我发现这种修改通常不会完成。 因此、我不确定它是否是正确的方法。

    我们仍在通过仔细查看我们的代码来调查温度问题。

    非常感谢您深入了解我们在解决温度问题时应优先考虑硬件还是固件。

    谢谢。

    此致、

    桑图

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

    您好、Santu:

    我建议您使用 EVM 或 EV2400并将其 I2C 线路连接到电路板、这样您就可以进行测试以查看测量值是否可从我们的 bqStudio GUI 正确读取。 这将让我们知道问题是与硬件相关还是与软件相关。 如果 bqStudio 上的所有内容读取正确、则问题在于硬件。  

    表示 CELL_0。 它应该将滤波组件连接到 BATT-。 通常、BATT-应通过网络或0欧姆电阻器连接到 VSS、从而 IC 接地也以 BATT-为基准。 这样做是为了将电池的高电流路径与 IC 接地的低电流路径分开。 它还在 PACK+/PACK-端子上提供了更好的 ESD 抗扰性、因为 ESD 电流会更好地流过电池而不是流过 IC 接地。

    此致、

    路易斯·埃尔南德斯·萨洛蒙

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

    您好、Luis:

    今天、在分析固件时、我们遇到了有关数据存储器表的一些详细信息。

    从提供的图像中、似乎只有默认状态为0x07的 TS1返回值、而其他默认状态为0x00。

    尽管我们尝试更改这些值、但未观察到任何变化。 我们想知道这些设置是不可更改还是已锁定。

    我们遵循了解封和获得完全访问权限的程序,但没有任何效果。

    您能否提供有关配置安全设置和更改热敏电阻引脚默认状态过程的指导?

    此外、我们还会征求您的建议、了解我们是同时购买 BQ79652 EVM 和 EV2400、还是仅购买 EV2400。

    谢谢你。

    此致、

    桑图

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

    您好、Santu:

    BQ76952 EVM 具有板载 EV2400 IC。 因此、如果您有 EVM、则不需要 EV2400。

    对于 数据存储器表、这些是热敏电阻配置的默认状态、默认情况下、TS1是唯一配置为热敏电阻的引脚、这就是它为0x07的原因。 您需要配置将用于您的应用的所有引脚。

    要更改其他寄存器、必须确保遵循正确的步骤。 您必须:

    1. 进入 CONFIG UPDATE 模式
    2. 更改寄存器
    3. 发送校验和与长度
    4. 退出 CONFIG UPDATE 模式

    此外、还有在特性表中写入寄存器的 第 3.3节写入"启用的保护 A" 软件开发指南

    除非部件密封、否则应该没有问题。 默认情况下、该器件不处于 SEALED 模式、除非您将其编程为在 OTP 上 SEALED。

    此致、

    路易斯·埃尔南德斯·萨洛蒙

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

    为了了解该问题、我们进行了进一步的软件测试、以下是我们的观察结果:

    1. 发出 CONFIG_UPDATE 命令(0x0090)、然后为 BATTERY_STATUS 读取2个字节(0x12和0x13)后、我们观察到以下值:地址0x12中的第一个字节为0x84、地址0x13中的第二个字节为0x05。 检查0x0584的第一个位、我们发现它为0、虽然应该为1、因为我们在读取该值前已写入 CONFIG_UPDATE 寄存器。

    下面是我们测试的场景:

    1. 当我们检查电池状态两次时、在两次读取和写入 CONFIG_UPDATE 之间插入一个延迟:

      • 第二个字节发生改变。 读取时的第二个字节为0x05、第二次读取时的第二个字节为0x85。
      • 如果没有延迟、第二个字节每次都保持0x05。
    2. 如果我们在两者之间未写入 CONFIG_UPDATE 的情况下读取电池状态、则我们会始终得到相同的值。

    3. 在上述测试中、我们每次读取一个字节的电池状态。 但是、当我们读取寄存器地址0x12处的两个字节时、第一个字节保留为0x84、但第二个字节更改为0xC4。

    您能帮助我们理解为什么我们无法修改 CONFIG 寄存器吗?

    谢谢你。

    此致、

    桑图

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

    您好!

    我们现在在美国假日、期待明天得到答案。

    此致、

    路易斯·埃尔南德斯·萨洛蒙

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

    您好、Santu:

    您是否具有事务的逻辑分析仪波形? 了解您发送的内容以及您的

    发送0x0090子命令将使您进入 CONFIG_UPDATE 模式。  

    对于 Battery Status、您需要发送0x12命令、然后读取两个字节、通过使用0x11进行读取来获取回数据。 类似于 第1.2节电芯1电压- 0x14 举例来说、您是在做这件事吗? 我认为这里不应该有任何0x13。  

    此致、

    路易斯·埃尔南德斯·萨洛蒙