RDK X5 接 VEML7700、VL53L8CX 时无应答或超时,ESP32-C3 曾读取成功
我使用 RDK X5 测试两个 I²C 传感器模块,目前都无法在 X5 上读取,希望请教如何继续定位。
1.环境与接线
-
RDK X5 V1.0,Ubuntu 22.04.5,内核
6.1.83,aarch64。 -
/dev/i2c-5对应341c0000.i2c,驱动为i2c_designware,速率 100kHz。 -
使用 40PIN 物理针号:1→3.3V、3→SDA、5→SCL、GND→地。
-
也测试过备用 I²C0:物理27→SDA、28→SCL。
-
两个模块分别测试,模块 VIN 使用3.3V。
| 模块 | 7位地址 | ESP32-C3 测试 | X5 测试 |
|---|---|---|---|
| VEML7700 环境光模块 | 0x10 |
曾成功初始化、配置读回并读取变化的光照数据;也出现过 SDA 持续为低的失败 | 未读取成功,出现过地址 NACK 和约1秒超时 |
| 红色 VL53L8CX 测距模块 | 0x29 |
连续11次 ID 检查通过;ST驱动初始化成功,8×8、约2Hz输出距离 | 地址无应答,寄存器读取返回 Remote I/O error |
ESP32-C3 使用 GPIO4/SDA、GPIO5/SCL,速率同样为100kHz。VEML7700 使用 Adafruit 驱动;VL53L8CX 使用 STM32duino/ST 驱动。
2.X5 已核对的配置
运行设备树中 I²C5 为 okay、clock-frequency=100000,pinctrl 指向 i2c5grp。对应引脚由 I²C5 控制器占用,UART3 为 disabled,未发现复用冲突。
总线没有其他用户进程占用,也没有已实例化的 I²C 客户设备节点。
读取命令例如:
# VEML7700:读取配置寄存器
i2ctransfer -y 5 w1@0x10 0x00 r2
# VL53L8CX:检测默认地址、尝试寄存器读取
i2cdetect -y -r 5 0x29 0x29
i2ctransfer -y 5 w2@0x29 0x00 0x00 r2
3.VEML7700 的进一步现象
曾捕获两种不同失败:
-
快速失败时,内核明确报告:
slave address not acknowledged (7bit mode)。 -
另一轮连续3次约1.06秒超时,内核报告:
controller timed out。
超时期间保持控制器 runtime active,并读取不清中断、不取走数据的状态寄存器,结果为:
ENABLE=1,ENABLE_STATUS=1
TXFLR=3,RXFLR=0
ACTIVITY=0,MASTER_ACTIVITY=0
TX_ABRT_SOURCE=0
未观察到 TX_ABRT 或 STOP_DET
表现为命令进入发送队列后,没有观察到正常推进。超时后驱动重新初始化控制器,但继续读取仍可能超时。
此外,在 I²C0 上做过以下对照:
-
SDA/SCL均断开:约5ms返回未应答。
-
仅接模块SCL:仍快速返回未应答。
-
仅接模块SDA:8次中7次超时。
-
模块改由ESP32的3V3供电、两板共地、仅由X5通信,仍未成功。
这些对照之间经历过断电上电,因此存在上电状态变化的影响,不能直接据此断言SDA短路。
4.VL53L8CX 的情况
ESP32上读到的芯片 ID 为 F0 / 0C,已实际输出距离;X5目前连默认地址应答都没有,尚未进入驱动初始化阶段。
模块此前确认的接法是 VIN=3.3V、LPn悬空、SPI_I2C_N接地。ESP32测试程序没有驱动LPn。模块背面有标为 TXS0104E 的转换芯片,但尚未取得对应原理图,不能确认LPn是否经过电平转换。
5.想请教的问题
-
X5 这两组 I²C 接口是否还有需要核对的输入使能、上下拉或IO电源域设置?
-
上述“有时地址NACK、有时发送队列停滞后超时”的表现,应优先检查哪些电气条件或控制器状态?
-
如何进一步区分线材/焊接、模块电平转换与上拉配合,以及X5接口本身的问题?
-
是否有这类模块接X5成功的接线、上拉阻值或配置案例?