我有一个 SAME70 CPU、通过一个2线 I2C 链路连接到隔离器、将流量转换为 TPS23882的3线 I2C 链路。 TPS 具有配置 B。简单的1字节和2字节 I2C 读取是可以的、包括器件输入电压(寄存器2Eh/2Fh 作为单个2字节 I2C 读取)。
SAME70 "host"将从寄存器30h 读取4个字节、以获取通道1和5的电流、然后根据数据表中的图9-5读取通道1和5等的电压、通道2+6、通道3+7和/或通道4+8的电压。
当我的主机读取4个字节以获取"端口对"的电流(或电压)时:第一个端口的数据(以字节[0]和[1]为单位)正确、但第二个端口的数据(以字节[2]和[3]为单位)无效/不一致。 根据图9-5、在写入 START 然后写入从机地址后、进入循环执行4次:在设置 RCV 就绪之前读取、然后读取保存寄存器以获取1个字节的数据;在循环完成后、写入 STOP 命令并完成交互。 端口1、2、3或4的数据位于前2个字节中并被验证为有效、而相应端口5、6、7或8的数据位于第3和第4个字节中、但始终是错误和不一致的。
我必须做一些不正确的事情。 可能缺少一些配置?
在 TPS23882数据表中:
- TPS23882数据表的图9-5是否准确-是否有更新?
在9-5中,在停止位之前有一个 NACK 位,我不知道 NACK 是关于什么。
-在9-5中,端口注释为“Port 4-1/LSB Port 4-1/MSB…… 端口8-5/LSB 端口8-5/MSB"、而定义电流/电压寄存器设置30h 至3Eh 的表9-24指定端口对1+5、2+6、3+7、4+8。
如果能对我的问题有任何见解、我们将不胜感激。
ED