大家好。
首先介绍一些背景。
我正在开发一个具有四个相同插件模块插槽的装置。 只要这些模块上的 I2C 器件都是相同的、因此具有相同的地址。 为了管理此操作、我添加了一个 PCA9546A 芯片来选择要与之通信的插槽。 这些插槽距离 PCA9546A 一英寸(25mm)以内、而 PCA9546A 与控制它的 MCU 的距离大致相同。 我将两个 PNP 晶体管配置为线路上的恒定电流上拉、并将其替换为1k5电阻器、以检查是否存在问题。 我以100kHz 的频率运行。
当对 PCA9546A 寻址以选择通道时、SDA 和 CLK 线路输出正确的信号(由示波器、逻辑分析仪和 Active-Pro 调试器进行验证)、但 PCA9546A 没有 Ack 信号。 我将软件更改为扫描从0到0x7F 的所有 I2C 地址以查找器件、但找不到器件。
然后、我将引脚焊接到电路板上并连接到外部 I2C 设备(总线扩展器)、扫描在0x27处找到地址、 然后、我绕过了 PCA9546A、基本上将 MCU 直接连接到其中一个插槽上、并插接一个模块、然后再次进行扫描、该扫描会在地址0x38和0x50处检测模块上的两个 I2C 器件。
我想可以肯定地说、问题不在我的硬件/固件上、而不是 PCA9546A 芯片上。 我已经对电路板布局进行了几次检查、所有连接都正常。 3个地址引脚接地、/RESET 引脚连接到 MCU 并被正确驱动。 正如其他 I2C 器件所验证的、SDA 和 SCL 线也是正确的。
我为原型制作了5块电路板、并使用完全相同的结果对全部5块电路板进行了测试、因此这不应该是单个芯片问题。
我的问题是、其他人有没有遇到同样的问题?
此致
克里斯