主题中讨论的其他器件:ISO1641、 ISO1640
大家好、这是我之前在隔离论坛上发表的文章的延续: https://e2e.ti.com/support/isolation-group/isolation/f/isolation-forum/1340104/5105191
我一直在尝试 使用 MCU I2C 主器件通过 ISO1641隔离器与 BQ76942建立隔离式 I2C 通信。 AFE 的 I2C 地址已通过 OTP 编程更改为0x60、尚未向其写入其他配置。
我面临的问题是、 MCU 传输的一些 SCL 脉冲无法到达 AFE。 下面是我示波器上的一幅图、它展示了这个问题:
- 粉色:SDA2 (从器件)
- 绿色:SDA1 (主器件)
- 黄色:SCL2 (从器件)
- 蓝色:SCL1 (主器件)
主器件(蓝色)发送的一些时钟不会传递到从器件(黄色)。 发生这种情况后、总线进入 BUS_BUSY 状态、看不到进一步的通信。 此外、每次我 重新启动主器件和从器件时、我都会观察到相同的波形-每次都削波完全相同的 SCL 脉冲。
- VCC1相对于 GND1为3.3伏。 SCL1和 SDA1 使用4.7k 电阻器上拉至 VCC1。
- SCL2和 SDA2使用2K 电阻器上拉至 VCC2。
- VCC2短接至 VCC1、GND2短接至 GND1。
- 在 VCC1和 GND1之间连接一个0.1uF 电容器、在 VCC2和 GND2之间连接另一个0.1uF 电容器。
我在从侧尝试了许多电阻器:2K、4.7K、6.8K、10K 和20K。 所有这些都显示出非常类似的 SCL2缺失的症状。 主侧一直有到 VCC1的4.7K 上拉电阻。
我尝试过50kHz、100kHz 和400kHz 波特率。 SCL 时钟也丢失了。
我还尝试了向 VCC2提供5V 电源、但没有效果。
有 一个更令人困惑的 行为、我希望这可能有助于缩小问题范围:
从总线移除 AFE 后、这就是我看到的波形。 SIDE1的 SCL 和 SDA 脉冲显示在隔离器的第2侧。 但是、未看到任何停止条件;我认为这是在缺少指定从器件地址的情况下预料到的。
当我重新连接 AFE、但尝试使用不同的不存在地址进行通信时、我会看到相同的波形。
通过将 MCU 的 I2C 总线直接连接到 AFE 的 I2C 总线、我成功地对 MCU 和 AFE 进行了单元测试。 这样、我就能够建立可靠的通信。
此外、我还能够使用 ISO1641隔离器与 MPU9250传感器进行通信、从而对其进行单元测试。
- 为什么某些 SCL 脉冲会丢失、我该如何解决该问题?
- 隔离论坛的 Andrew 建议、BQ76942可能正在将 SCL 信号驱动至低电平。 这是可能性吗?
- Andrew 还指出我的第一个图像的 ACK 位已损坏。 为什么会发生这种情况?
- 从我的测试来看、该问题仅在 ISO1641和 BQ76942的组合中出现。 无论是与其他 I2C 从器件一起还是绕过隔离器时、都不会发生这种情况。 这两个器件之间是否需要意识到某种交互?
谢谢。
阿鲁什