我有一个使用 BQ40Z50-R3的设计。 此器件在与 Lumissil "IS31FL3193" RGB 驱动器共享的100kHz SMBus/I2C 总线上。 我们致力于在 SMBus 和 I2C 事务之间保持兼容的电压和时序。 此总线上还有其他 I2C 器件、但我将仅介绍的问题似乎是 BQ40Z50和 RGB 驱动器之间的交互。
BQ40Z50使用7位地址0x0B 和 RGB 驱动器地址0x68。 我发现、当我们对 RGB 驱动器进行寻址以将数据写入其 RGB 寄存器(0x04、0x05、0x06)和数据更新寄存器(0x07)时、BQ40Z50偶尔会通过两种方式中断 I2C 通信:
1)如果我们从不与 BQ40Z50通信(但它位于总线上的"正在侦听")、那么通常情况下、RGB 驱动器会在地址+R/NW 事务之后否定选择其中一个寄存器写入、但事务将没有 STOP 转换
2) 2)如果我们与 BQ40Z50进行通信(每秒读取一次电池容量和温度)、然后在几十毫秒后与 RGB 驱动器进行通信、则 BQ40Z50将中断 I2C、将数据线保持在低电平、从而停止主器件(我们的 MCU) 从时钟周期6或10中的7进行计时、可用于最后一个数据字节事务。
3) 3)在1)或2)下、如果我从总线断开 BQ40Z50、则 RGB 驱动器 I2C 通信全部按预期完成(接受失败的电池 SMBus 通信)
4) 4)如果我通过 I2C/SMBus 缓冲器隔离 BQ40Z50 (在本例中为 Diodes Inc."PI6ULS5V9511A")并且仅在与 BQ40Z50通信期间启用缓冲器、则所有 RGB I2C 事务也可以。
因此、证据表明、即使从未解决 BQ40Z50的 I2C 也会出现中断。
我请注意、 根据 SMBus 规范、 从器件*地址* 0x04、0x05、0x06和0x07是"保留供将来使用"、并且巧合的是、我们写入的 RGB *寄存器*为0x04、0x05、0x06和0x07、 但我想不出为什么在解决 BQ40Z50以外的其他器件后、BQ40Z50会因数据/寄存器写入而烦恼?
请告诉我、上述问题是否为已知问题、或 BQ40Z50的勘误表中是否包含此问题?
非常感谢、
Oli.
附注:我找不到 BQ40Z50-R3的勘误表、因此、如果它存在、请您告诉我吗?!






