This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TPS23882:通过4字节 I2C 读取无效的电流和电压

Guru**** 671890 points
Other Parts Discussed in Thread: TPS23882
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1117413/tps23882-invalid-current-and-voltage-readings-via-4-byte-i2c

器件型号:TPS23882

我有一个 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

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Ed:  

    我将对此进行更详细的研究。 您能否更详细地解释为什么第3个字节和第4个字节的数据是错误的和不一致的?

    对于您的一些问题:

    -是的、TPS23882数据表的图9-5准确且最新。

    -当主接收器完成对数据的读取时,使用 NACK 位,并通过 NACK 位向从接收器指示这一点。

    -对于图9-5中的配置 B,前2个字节用于端口4-1,后2个字节用于端口8-5。 前2个字节不适用于所有端口4-1、而是4-1范围内的端口。 第二个2字节也是如此、它们并不适用于所有端口8-5、而是适用于8-5范围内的端口。 在这里、表9-24在执行4字节读取或2字节读取时生效。  

    非常尊重、

    Brandon Beader

    TI PoE PME

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我找到了问题的根本原因。 这是我最谦卑的道歉,根本原因是我方面的编码错误。 在4字节端口对读取后返回的32位数据被分配给一个16位值、从而丢失端口5、6、7、8的数据。 在我的辩护中,编译器没有提出我本来希望得到的任何警告。