目前基于P3H2840的官方demo进行调试,发现在I2C/I3C 模式下 demo 上温度传感器读到的值有差异(如下图所示),是正常的吗?
您好,
每次读取 I3C 模式寄存器时看到的第二个字节 0xff 都是不正确的,这表明集线器配置存在问题。作为参考,P3H2x4xHN-ARD 上的板载温度传感器是 NXP P3T1755DP 设备,完全支持 I3C,因此一旦集线器正确设置,两种模式下的读数应该相同。
请检查以下三项:
动态地址分配— P3T1755DP 在 I2C 模式下启动,必须先接收动态地址(通过 ENTDAA、SETAASA 或 SETDASA),然后 I3C 私有传输才能工作。如果在此步骤完成之前调用 i3c_xfer,则设备无法正确响应 I3C 帧,并且第二个字节将读取为 0xff。确认地址分配 CCC 已成功运行,并且 0x4c 是分配的动态地址。
突发长度使能 — REG#17[6] (BL_ENABLE) — 如果设置此位,则 I3C 写入阶段必须在寄存器指针之后包含一个突发长度字节。如果您的 i3c_xfer 调用仅发送 1 个写字节(寄存器地址),则集线器会收到不完整的帧,并且读取响应未对齐,导致第二个字节出现 0xff。请读取寄存器#17,并确认第6位是否已设置。如果是,要么将 BL 字节添加到写入有效载荷中,要么在不需要时清除 BL_ENABLE。
目标端口 VCCIO — REG#22 — 在 I3C 模式下,目标端口使用参考 REG#22 中的 VCCIO 设置的推挽驱动电平。如果这与 P3T1755DP 的实际供电电压不匹配,则在推挽模式下传输的数据字节可能会损坏。请确认 REG#22 显示的电压是否为传感器所连接的目标端口的正确工作电压。