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.

[参考译文] BQ24271:I2C 总线冲突

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1231347/bq24271-i2c-bus-collision

器件型号:BQ24271
主题中讨论的其他器件: BQ25887BQ24270、USB2ANY、 BQ24160、BQ24765 BQ24250

您好!  

我的 BQ24271存在一个问题、导致 I2C 总线冲突。 我的总线图如下所示。  

I2C 总线上有6个器件以100kHz 的频率运行、其中 PIC uC 作为主器件。  有两个电池管理部分、由于电量监测计共享相同的 I2C 地址、因此这些部分已拆分为两个总线、其中有一个 MUX 用于控制 SDA 线路。 鉴于元件在时间和成本 上的可用性、选择 SPDT 多路复用器相对于特定的 I2C 多路复用器、同时切换 SCL 和 SDA。设计意图是当取消选定总线上的 MUX 为高阻态时、通过 SDA 上拉电阻、 从器件永远不会接收到 START 条件。

我可以可靠地读取和写入除 BQ24271之外的所有器件、我还可以通过 BM1S 总线读取/写入 MAX17055。 但是、当我写入/读取 共享 BM1S 总线的 BQ24271时、我会遇到总线冲突(大多数情况下、虽然偶尔不会发生)。 由于总线上的其余器件为36h、20h 和50h、因此不存在地址冲突。  

如图所示、在 SCL 上有4k7上拉至 Vdd、在 MUX 两侧有10k 上拉电阻、因此在 SDA 线路上有5k 上拉至 Vdd 的组合。 VDD 为3V。

我已经在多路复用器两侧的总线上用示波器观察了波形、所有信号都有一个良好的平坦顶部、因此寄生电容和信号看起来都很干净、没有令人担忧的影响。

我得到的问题是、如果我保持总线选择静态、并且还将 MUX 从板上移除并将硬接线 SDA 连接到 SDA (BM1S)、从而使其成为没有 SDA (BM2S)的单总线、以防 MUX 发生奇怪的情况。

观察 BQ24271和 BQ25887之间的直流特性、可以看到它们是相同的、尽管灌电流的测试条件不同。

非常感谢任何帮助。

 

安迪

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

    Andy、您好!

    您是否可以在某种类型的逻辑分析仪中而不仅仅是在示波器中测量 I2C 事务? 当发生这些冲突时、是否为 BM1S 和 BM2S 供电? 我知道所有地址都不同、但我们可以将其范围缩小至仅包含 BQ24271、这种情况在某种程度上是不错的(例如:不为 BM2S 供电)。  

    此致、

    安东尼·范

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

    尊敬的 Anthony、感谢您的回复我们的数字存储示波器为 I2C 提供协议解码、我们还有 Saleae 逻辑分析仪。 我计划在第二天再做一些测试。 BM1S 和 BM2S 都是供电的、并且 Vdd 很常见、因此总线不可能通过未加电的内容进行下拉。 值得注意的是、我在不使用 MUX (从电路板上移除)的情况下进行了测试、在 SDA 与 SDA (BM1S)之间进行链接、因此需要远离 BM2S、但也存在同样的问题。 我将尝试在总线冲突发生时获取一些协议消息和示波器跟踪、并在此处发布。

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

    Andy、您好!

    这听起来是开始调试的良好开端。

    如果您能够在监控也可以工作的 I2C 数据线路时共享逻辑软件中的 saleae 文件。 我以前使用过该软件、这样就可以用于调试了。  

    期待您取得成果。  

    此致、

    安东尼·范

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

    尊敬的 Anthony:

    我设法得到了一个 Saleae 轨迹。 我将尝试在我们的数字存储示波器上捕获总线冲突点的物理波形、但写入似乎就是总线冲突的问题。

    以下是按顺序执行的写入命令:

    BQ24270_SET_DEFAULTS

    BQ24270_写_ILIM

    bq24270_写_ichg

    BQ24270_写_iterm

    如果我读取状态或任何其他寄存器对此事进行读取、那么 I2C 总线很高兴、并且没有发生总线冲突、只要我写入、或者至少在大多数时间里、它会引起总线冲突。 顺便说一下、我们使用 BQ25887进行2S 电池管理、没有问题、而且 EEPROM、电量监测计和 I/O 扩展器上也有读/写功能、也没有问题。 我们使用的 F/W 库是相同的、实际上它不仅仅是一个 I2C 管理器、而是用来为器件排队-这个库已经很成熟、并且用在了其它应用中。  

    下面是一个 aleae 捕获文件的链接: I2C-TRACE-BUS-COMPILSE.Sal。 我放置了一个标记、以便您了解在 I/O 扩展器上执行写入后发生写入时会发生什么(ADR:20h)

    我在她的阴道里感觉到一阵强烈的快感,我就快要射了。

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

    Andy、您好!

     

    我和团队遇到 OneDrive 链接问题。 由于某种原因、我们似乎无法下载该文件。 我可以看到您的文件、但下载过程似乎没有执行任何操作。  

     

    我会继续尝试、但为了避免进一步延迟、您是否能够将它们上传到我发送给您电子邮件的此 tidrive 文件夹中? 您应该有一个链接和访问代码。

    此致、

    安东尼·范

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

    尊敬的 Anthony、我现已上传至 TI 驱动器

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

    我还在 TI 驱动器中上传了所有器件的完整启动序列、其中包括对器件进行配置的写入操作、然后仅 BQ24271每1秒读取一次、这将在另一条总线上随着读取状态 BQ25887进行切换。

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

    Andy、您好!

    非常感谢! 当我运行测试设置时、我将查看这个和生理数据。  

    此致、

    安东尼·范

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

    所以我今天一直在自己看看 Saleae 轨迹。 发生总线冲突时我上传至 TI 驱动器的跟踪。

    如果我检查从器件地址20h 的写入、即我们得到的 I/O 扩展器:

    该序列符合预期、主器件发送启动条件、主器件发送地址(20h)到从器件、从器件 ACK、主器件发送寄存器05h、从器件 ACK、主器件发送数据07h、从器件 ACK、发送停止条件。

    但是、对于 BQ24271、我们得到:

    主器件发送启动条件、主器件发送地址(6Bh)、从器件 NAK!!

    不完全确定主器件为何会发送另一个启动条件并进行读取、这可能是 Microchip I2C HAL 驱动程序中的错误。 但是、我们为什么地址6Bh 得到一个 NAK?

    以下是 BQ24271的一种良好读取序列:

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

    Andy、您好!

    这是否仅在一个器件上发生?  

    此致、

    安东尼·范

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

    很遗憾、我换芯片3次了。 结果相同。

    我能否确认地址绝对为6Bh。  

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

    Andy、您好!

    当您更换芯片时、是否将它们移至另一个不会发生 I2C 总线冲突的电路板? 我很想知道这是您正在查看的一个电路板、或者该行为是否源于 IC。 从我看到的情况可以看出、该 SALAE 使用了具有相应读/写位的7位地址进行了正确设置。 是否能够尝试使用另一个 I2C 主器件?  

    此致、

    Anthony Pham。  

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

    尊敬的 Anthony:

    我们目前只填充了一个板。 然而、我们现已订购一些 VQFN24分线板、应在明天供货。 因此、如果仅仅进行健全性检查、我的计划是将芯片放在分线板上、按照最低硬件要求布线、并在独立的 I2C 主设备上进行测试。  

    我会继续向您发布信息。

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

    Andy、您好!

    那将是很好的,期待结果. 这一定是更好地了解行为发生所需的条件的东西。  

    此致、

    安东尼·范

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

    大家好、Anthony、请提供最新消息。 我们将 BQ24271 (之前采用的是应用板)放置在分线板上、对所有元件进行布线、使之尽可能靠近、但请记住、我们无法控制布局布线! 但是、我们 确实采用了星形配置接地。 我们不需要作为电池充电器运行、只需通过 I2C 查询器件、即可实现目标。 请注意、我们没有将电池连接到分线板。 BQ24271通过 USB (引脚22)供电、我们选择通过高质量 USB 适配器供电、因为我们想要创建真实的设置、而不是使用昂贵的台式电源。 然后、我们将其连接到独立的 I2C 主设备(比如我们踢的 RasPi)、并使用外部 I2C 上拉电阻连接到接头上的 RasPi 电源引脚。 然后、我们编写了一些 python 脚本来将 与 PIC 完全相同的命令发送到 BQ24271。 我们注意到了一些采用两种不同配置的有趣行为 a、如图所示:

    在配置1中、我们能够执行 I2C 写入和读取、而不会出现错误。 但是、如果我们  使用配置2中所示的自己的 USB 电源为 BQ24271供电、则会得到 RasPi 主站的错误、SMBus 远程 IO 错误121。 我们打算重复该测试并获得一些信号迹线、但这是接地差分 或噪声的提示。 请注意、USB 电缆非常短(< 40cm)、并且接地是相连的。  然后、我们在 Raspi 接头接地与分线板接地之间添加了连接、这 似乎可以解决问题、又暗示接地问题。  我们认为这是一个粗略的测试、因此让我们将 RasPi 连接到实际应用板(带有 PIC)、因为我们有一个可以轻松 访问的 I2C 接头。 擦除 PIC 存储器、使所有 I/O 都为高阻抗、并向多路复用器选择线路添加一个上拉电阻器、以始终使用 电池管理1S。 我们注意到类似的行为、请参阅以下配置:


    在配置1中、我们遇到 RasPi 报告 SMBus 远程 IO 错误121的问题、 如果我们从 USB 适配器上的第二个端口为应用板供电、也会遇到相同的问题。 但是、对于配置2、我们允许使用电池为应用板供电。 在此配置中、我们可以执行 I2C 写入和读取、而不会出现错误。  

    我很感谢一些接地、USB VBUS 和 I2C 线路的布线会很有用、当我们更详细地重新运行测试时、我们会将它们发布在这里。我们的目标是首先了解行为并报告它们。

    对于我们的应用板、它是具有接地平面和电源平面的4层堆叠。 下面是供参考的一些电路片段。 有趣的是、BQ25887连接到了同一个 USB VBUS 和 I2C、尽管是在另一条总线上、而 I2C 通信可由电池或 USB 电源供电。


    完整的电池管理1S 电路、与应用参考设计几乎相同。




    USB 接口具有铁氧体和 CM 扼流圈、可为运行和充电提供 USB 电源。


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

    Andy、您好!

    感谢您的下次访问! 这非常全面、可以解决我的很多问题。 听起来就像您说的那样、某处会有一个差分。 但是、我能否确认 BQ24271似乎正常工作?  

    此致、

    安东尼·范

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

    尊敬的 Anthony:

    在 上述工作场景中、是的。 但为什么 BQ24271对我们之前使用的任何其他 BQ 产品线更加敏感、这令人困惑。 我们没有在明知不同的情况下采取任何措施。 我们遵循了相关信函中的数据表、采用了 推荐布局等。 我们针对客户的产品使用了许多 BQ 系列、它是一家设计公司、对我们来说是"目标"产品。  

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

    Andy、您好!

    我听到了。 我不能说我能够在末端重现这个问题。

    我们随后添加了一个链接,从 Raspi 接头接地到分线板接地 ,这似乎解决了问题,再次暗示接地问题

    我注意到在原理图上从 AGND 到 PGND 有一个铁氧体磁芯。 是否在没有铁氧体的情况下尝试过这种方法?

    此致、

    安东尼·范

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

    尊敬的 Anthony:
    非常感谢您的支持。 非常感谢。
    我们计划在明天为此项目安排一个工作日(许多项目正在进行中!!)、因此我们将了解故障和工作场景的一些轨迹。 我们可以使用0R 电阻器轻松替换铁氧体磁芯、因此我们也可以尝试这一点。 但安装在分线板上的 BQ 没有铁氧体、是星形连接接地。 没有高电流、因为没有负载、也没有连接电池、因此出现了 I2C 错误。  遗憾的是、Pi 上提供错误代码121的 I2C SMBus 库没有明确说明 I2C 错误。 我们可能会尝试另一个库、该库可以提供更详细的错误信息。 另外、希望当我们将示波器与协议解码器相连接时、它能够 指示正在发生的情况。

    我不禁认为我们是黑暗的木材在这里,没有看到树木和它感觉我们缺少一些明显的东西,因为你不能模拟这。 您使用什么 I2C 主器件进行测试、以及上拉值和电压电平是多少? 我们在项目的许多其他串行协议中使用 I2C、因此我们 在这方面非常舒适。

    我会一直提醒您。

    Br  

    安迪

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

    Andy、您好!

    我在 EVM 板上使用 BQ24271、还在与 USB2ANY 器件一起使用。  

    此致、

    安东尼·范

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

    您好,Anthony。

    很抱歉耽误你的时间。 我们上周一直在关注这一问题,并收集了更多的唾液迹线、示波器屏幕截图和跟踪数据,我想与您分享所有这些信息。 我无法访问  tidrive 来上传它们。 您能给我发电子邮件吗?

    与此同时、为了给您一些反馈、我们可以在 与 BQ24271的直接连接(总线上无其他内容)上模拟相同的行为、这种连接是我们放置在分线板上的、而且连接我们的应用板时、 使用运行一些 python 脚本的 RPi 来驱动 I2C 总线。

    我们已经观察到、当电池电压大于4.1V 时、我们有可靠的 I2C 通信(在两个硬件上)。 我们注意到、当我们连接 USB 电源适配器时、我们会得到以下状态寄存器值(请注意、这些值会位移以表示上下文值):

    这表明蓄电池故障

    电池 OVP 也不知道原因、数据表也不会详细阐述太多可能的原因。



    仅使用电池连接时、我们得到以下状态寄存器值:

    借助于 USB 状态寄存器、报告 VUSB < VUVLO、这正是您在未连接的情况下所期望的结果。

    现在为失败!

    当电池电压降至4V 左右时、所有问题都开始了。
    BQ24271 I2C 变得不可靠和错误:


    这是100%可重复的、电池电压> 4.1 OK、对于两个硬件都<=4V 误差。

    但是、当迹线看起来不是太糟糕时:


    我要共享更多的跟踪。

    那么、我的理论是、当 BQ 检测到电池电压时、会发生一些情况、这将切断电池充电。 此时还值得注意的是、PSEL 已被拉高、因此根据数据表、最大充电电流将是100mA。 VBUS 正常、纹波约为120mV:


    BQ24271 I2C 传输期间、VBUS 上出现了一些清理。

    值得注意的是、大多数情况下、在设置器件默认值时会发生故障、但有时会在器件配置的后期发生。

    以下是我们的设置(取自我们的 Python 脚本):


    i2c_writeDate 的原型为:地址、寄存器、数据、掩码和验证、 设置该值时将读回并检查该值是否设置正确。


    顺便说一下、MAX17055电量监测计在电池小于4V 的应用板上完美工作。


    我们撞到了砖墙、因为无论我们在 BQ24271周围做什么尝试、都没有看到任何改进、这是否属于器件问题? 我们大约在6周前从 DigiKey 购买了这些器件。  


    我们过去使用过很多 BQ 器件,但这个特殊的 样本 给我们带来了巨大的麻烦。  板上有一个可正常工作的 BQ25887。

    我们的应用板采用了锤击技术、移除并放置了多种 BQ24271芯片、我们越来越担心它会超过多少次。


    我期待收到您的回复。 请发送一个链接、以便我可以共享信息。

    Br  

    安迪

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

    Andy、您好!

    再次感谢您的调查。 我将努力让你有一个链接,以便你能够分享。 与电池电压的相关性非常有趣。 这是100%出乎意料的情况。  

    当我向您发送上传链接时、您是否能够共享您的布局?

    此致、

    安东尼·范

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

    尊敬的 Anthony:

    这太棒了、R.E.链接。

    如果没有 NDA、我无法共享完整的原理图或布局、但我可以共享 BQ 器件的一个片段。 我已在该线程的先前部分发送了一段原理图片段。 唯一的区别是铁氧体磁珠连接 AGND、替换为0r 没有区别、我们所做的破孔板破解没有铁氧体、且行为相同。

    第1层(顶部):

    第16层(底部):

    第1层和第16层:

    第2层(PWR 平面)

    第15层(GND 层):

    全部:

     

    板该区域的3D 模型

    顶部:


    底部:


    出于完整性考虑、这里是我们在分线板上敲出的黑客实验开发板。 我们从未打算在充电模式下使用它、因此实际上不是 一个热平面、但即使它决定进入该模式、电流限制在100mA、所以应该可以。 我们还尝试在一定程度上使组件能够代表应用电路板上的位置。




    希望这对您有所帮助

    Br  

    安迪

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

    Andy、您好!

    感谢您的分享。 我们的团队会仔细研究、我计划在几天内帮助您。 感谢您对此的耐心等待。  

    此致、

    安东尼·范

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

    尊敬的 Anthony:

    感谢您组织链接。 我已将数据上传至存档文件(bq24271-test-data.zip)、以及我们用于 BQ 和 MAX 芯片的 Python 测试脚本。 它应该在任何具有 I2C SMBus 功能的 Linux Box 上运行。Python >v3.10我们在测试中使用 RaspPI。
    我们在应用板设置中添加了一些注释供您参考。


    红色方块是突出显示的 BQ24271电路、红色圆圈显示总线选择线路上的10k 上拉电阻、因此 I2C 通信路由到1S 电池管理、因为微型控制器未编程、否则将默认为破坏状态。 FPC 是 I2C 端口(很高兴我们把它放在那里!) 它连接到 RaspPi、

    如有任何问题、请随时发布、或者如果您希望我们为您运行特定测试并收集数据、请随时发表。

    非常感谢您的帮助。

    Br  

    安迪

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

    尊敬的 Anthony:

    我只是想问是否有任何进展吗?

    Br

    安迪

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

    Andy、您好!

    今天、我能够预留一些实验时间来查看您分享的信息。 我想看看我今天是否能向您提供最新消息。

    此致、

    安东尼·范

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

    Andy、您好!

    我们研究了重现这种现象并讨论了为什么在星型配置和增量配置中某种功能可以起作用。 这归结为接地基准问题。 最后、我们采用了我们的 I2C 主机(USB2ANY)并将其作为接地基准、并将其提升到比 BQ24271 GND 更高的水平。  

    以很小的增量、我们能够看到非常类似的行为、偶尔我们无法读取、但可以写入。  

    每次写入后、我都打印了成功值。 这些是左侧的零点。 每次读取、-0x2C 代表一个 NACK。 可以看到、在写入0x84后、出现了 NACK、后跟成功读取0x84。 当 GND 基准具有大约300mV 的差异时、就会发生这种情况。  

    到目前为止、这是复制成功写入然后 NACK 读取的唯一方法、我理解、这很可能会在您使用单独的分线板进行测试时介绍。  

    至于电池电压的影响、我们无法复制此情况。  

    此致、

    安东尼·范

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

    大家好、Anthony、这真的很有趣、谢谢。 我来看一下我是否能在两种设置上看到接地差异、但我对应用板感到惊讶、因为接地端都连接到应用板上一个巨大的接地层。 当然、从微控制器运行时、微控制器连接到同一个接地大平面。 有趣的是,写 往往比读对我们更有问题。 将 I2C 电压拉高到设置的电压是多少。 我们应用板设置上的上拉电阻达到3V、这实际上是微电源轨。 在分线板上、上拉电阻连接到 RaspPi 3V3电源。

    我们现在正绝望地解决这一问题,因为我们似乎无处可去。 甚至想把 bq 换成另一个。  有几个问题、是否提供了引脚对引脚兼容选项? 我们能否将表现与应用板相同行为的输出板发送给您进行调查? 这可能是批次的公差问题吗? TI 可以发送样片给我们吗?

    Br

    安迪

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

    Andy、您好!

    对于引脚对引脚兼容的器件、您可以查看 BQ24160系列器件。 我将看看什么最佳的选择可能会继续前进,并与您联系。  

    此致、

    安东尼·范

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

    您好、Anthony、我们已尝试过 BQ24160。 可惜的是,它也在遭受同样的痛苦。
    当电池已连接且良好的电压>3.9V I2C 通信似乎是稳定的。 在3.9V 以下或没有连接电池时、我们得到 BQ 芯片保持 SDA 线的电压。 我们已尝试将 SCL 线路切换至最多9个周期、这确实会释放线路、但一旦建立通信、它就会再次变为低电平。 在我们的应用硬件和输出板上、同样如此。 I2C 主机进行通信。

    我做了一个小谷歌,并偶然发现了这篇文章:
    https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/162597/i2c-slave---bq24765---battery-charger-hold-data-line-low

    似乎这个插页有类似的问题。

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

    Andy、您好!

    安东尼将回到办公室周五,并将回到你,当他回来。

    此致、

    埃里克

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

    谢谢您告诉我。

    Br

    安迪

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

    Andy、您好!

    除了切换该线程的 SCL 线之外、您是否能够尝试其他项目?

    此致、

    安东尼·范

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

    尊敬的 Anthony:

    对于一个小小的电台沉默表示歉意,只有我们必须优先考虑另一个项目,也有导致延误的假期。

    我想说一个好消息。

    尽管使用了各种 I2C 主器件来驱动 BQ、但我们一直遇到这个问题。 简而言之、总线冲突主要是在电池电量低或断开连接时发生的、这是100%可重复的。

    因此、我们来看看您一直在使用的任何 USB 2转换器。 在技术规格中、实际上看看原理图、I2C 上拉电阻器是一个非常低的值1.5k。 我们 认为 这允许 总线上安装可能的器件。  


    我们的应用板上安装了4k7、所有其他 I2C 器件也兼容。 过去、我们通常使用4k7作为一般经验值、对于不超过5个从器件的100kB/S 总线速度、  对于一条总线上超过5个的 I2C 从器件、我们往往会处理数据、并采取科学得多的方法。 在我们的黑客实验板上、我们最初使用10k、然后开始降低电阻并观察结果。 令我们惊讶的是、 当我们小于2k5时、随着 SCL 和 SDA 的上升沿变得更加尖锐、总线冲突变得更少。 然后、根据 USB 2任何原理图、我们便全部使用了1k5。 哇、我们很少发生总线冲突。 然后、在 PIC uC 上有一个设置可以禁用转换控制、这也进一步提高了效果。  

    因此、BQ24271在 SCL 和 SDA 上似乎需要非常尖锐的边沿。  对于100KB/S 和少数器件、IHO 具有如此低的上拉值1k5是不常见的。 但你生活和学习。  我希望这对其他可能有类似问题的民间人士有所帮助。

    我不会把这个标记为已解决 ,因为我们正在测试过程中,所以我们试图计数鸡前,他们孵化...

    安迪

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

    嗨、Andy!  

    希望你的假期是好的!  

    o 对于100kB/S 和少量设备来说,上拉值1k5是不常见的。

    我将记下这一点、以便在最后得到反馈。

    谢谢你让我保持更新,我会看看我是否能找到一些方法来帮助我的最后。  

    此致、

    Anthony Pham。

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

    尊敬的 Anthony:

    因此、我们今天进行了大量测试、我们可以自信地得出结论:问题现已解决(通过稍微解决软件问题)、其原因是两个问题的组合:

    1、SCL 与 SDA 的上升沿需要尽可能的尖锐,如接近"理想"的方波,从而拉线路硬。 在我们未连接电池和4k7上拉的测试中、当 I2C 线路类似以下情况时、我们经常遇到许多总线冲突故障:


    同时使用1k5上拉所示的 I2C 波形、并极大地减少总线冲突:


    (注意:并非我们的图  示、图像由 www.joshmcguigan.com/.../提供以用于说明)

    2.有100%的优点在以下的帖子: https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/162597/i2c-slave---bq24765---battery-charger-hold-data-line-low 和 Wang5577的评论


    " 如果在 SDA 信号滤波期间发生开关、将会大大增加。 接地噪声可以耦合到 SMBus 时钟信号。 该噪声插入了一个额外的 SMBus 时钟信号、它可能会向读取推荐或其他器件地址转换为 bq24765充电器地址。 那么、我们可以看到数据线保持低电平、 "

    考虑到 BQ24271是开关模式降压、我们认为这就是我们实现这种行为的原因、上拉电阻值越高、更容易出现这种情况。

    我们的软件解决方法是检测总线冲突、然后置位 多达9个时钟、到那时 SDA 线路应该变为高电平。 然而,我们已经看到了一个没有发生这种情况的边缘情况,所以对于皮带 n 护架,如果发生这种情况 ,我们保持 SCL 低电平>35毫秒,以重置 SDA 线,如扎卡里·格利克施泰因在后文中所建议的那样。 然后,这似乎重置和恢复。

    值得一提的是,我们把统计数据放在4k7的总线冲突1在大约20帧,而1k5的总线冲突1在大约5000帧!

    现在、我们又遇到了一个问题、即我们可以进行可靠的 I2C 通信。 我们在连接电池后会在 STATUS 寄存器(值0x27)中报告电池故障:


    不过、我们没有温度传感器故障、在这方面一切看起来都很好。 遗憾的是、数据表未涉及构成电池故障的任何原因。
    您能帮助我们完成最后的障碍吗?

    非常感谢。

    Br

    安迪

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

    Andy、您好!

    我们解决了 I2C 冲突、这一点很好。  

    关于显示0x27的状态寄存器、您是否在 电池和电源状态寄存器(0x01)中获得了该值? 您是否还能够测量电池电压?

    此致、

    安东尼·范

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

    尊敬的 Anthony:

    感谢您的答复。 在查看数据表几个小时后、您预计我现在可能无法对其进行调整、但是经过漫长的一天的测试、您的头脑再次查看寄存器0x01、我意识到我们获得了"01节电池 OVP"。 电池电压为3.9V、电池稳压电压为默认值(3.6V)。 我没有注意到这还未被设定为4.2V (我们已将这行代码注释掉!!)  
    设置该状态后、我们会在小破解板上报告充电状态(限制为100mA、因为没有热平面)。 我们再次注意到更多的总线冲突、但我预期这可归结为它是布线不良的黑客电路板等。 手指交叉了!

    不过、我们现在可以返回到应用板、重新安装 BQ24271、将上拉电阻更改为1.5k、然后应用其他更改、然后看看我们如何开始。

    非常感谢您的帮助。 这是非常赞赏的。 与我们使用的任何其他 BQ 系列相比、我们对这一特定 BQ 系列的了解肯定更多! 很多头在 路上刮着,沿着兔洞走下去,但我们最终还是在理解一些行为特征。  

    我希望这对 TI 以及未来可能会碰到此主题的其他人都有用。

    再次表示感谢。

    Br

    安迪

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

    尊敬的 Anthony:

    似乎我们的 BQ24270写入问题仍在导致问题、并再次困扰我们。

    您能为我们阅读任何注册表时的原因提供帮助或一些解释/想法吗、一切都很好、

    但是、当我们更频繁地写入任何寄存器时、我们从从从器件获得 NAK? BQ24270具有唯一地址(6Bh)、因此不存在地址冲突、因为总线上的其余器件为36h (MAX17055)、20h (I/O 扩展器)和50h (EEPROM)。  

    下面对比了对寄存器3的写入操作、左边的写入操作良好、而右边的写入操作错误、在 BQ 在 TOE 写入地址后给出了一个 NAK。

    请注意、现在、由于我们将上拉电阻降低至1k5、我们具有尖锐的边沿。

    我们想知道这些 NAK 原因中是否有一个适用:


    但仍令人困惑的为什么只是写一个字...

    Br

    安迪

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

    Andy、您好!

    这很遗憾。 我会对此进行深入探讨、但想知道您是否能够在连接 BQ24271时进行重复?  

    此致、

    安东尼·范

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

    尊敬的 Anthony:

    是的、它只是我们没有发现它、因为我们当时正在尝试解决总线冲突问题、并且我们只有读取命令-从来没有给过它第二次考虑写入命令的行为会有这样的区别(在我使用 I2C 的20多年以来从未看到过这种行为!)、 很难准确量化故障率、我们添加了一个计数器来对 故障前的正确写入帧进行计数。 大约是500到1000个数据包中的1个、读取从未失败。 二者都导致了偶尔的总线碰撞、但我们从碰撞中恢复过来。

    在实际硬件中、我们得到的故障率为1/5 (ish)、因此我们开始使用 Hack 板设置将 I2C 器件添加到总线、并且随着我们将器件增加到5个 I2C 从器件(所有其他从器件都正常)、我们看到故障率增加。 我们尝试了其他 I2C 主器件、结果相同。 我们还观察到、写入命令问题会随着器件上的负载而变得更糟、当无负载时则会变得更糟、并且随着负载增加到100mA 而得到改善、随后随着电池电荷和 SYS 电流的总和朝向500mA、情况又会变得更糟。 不过、这是我们的黑客行为电路板设置、因此可能只使用线迹、因为它们只是导线等。 我们不想旋转 PCB、所有评估套件目前都不可用。  这种只影响写入命令的现象无疑会让我们感到困惑。  

    我们有一个适用于 BQ24250的评估套件、不推荐将其用于新设计、因此我们将改用 bq24270。 我们将其放到了实际应用硬件上、并移除了 bq2470。 这就像一种魅力、不会发生总线冲突或错误。 。

    作为工程师、我们想要彻底解决这个问题、但我们认为我们已竭尽所能、将此与任何 PCB 问题和多路复用器、不同的 I2C 主器件、不同的 I2C 上拉电阻器隔离开来、从而为总线增加220pF 的电容(使情况更糟、如我们所料)。 就工程师付出的时间而言、我们已经走到了尽头、因此我们不再 使用 BQ24270、而是改用其他器件-待定。

    如果我们没有尝试完全不同的一批芯片、我认为还有什么我们本来可以尝试的、甚至留待尝试的。

    Br  

    安迪

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

    Andy、您好!

    我了解找出根本原因的决心。 我一直在努力理解我的大脑。 由于您希望移至其他器件、我将标记您的回复并关闭该主题。

    非常感谢您在这方面所做的努力以及您收集的数据。  

    此致、

    安东尼·范