工具/软件:
我正在使用 TLV320AIC3104编解码器。 我正在使用 I2C 写入编解码器芯片中的寄存器、但无法读回相同的值。 这是预期的器件行为吗?
我已经附上了同样的屏幕截图 
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.
工具/软件:
我正在使用 TLV320AIC3104编解码器。 我正在使用 I2C 写入编解码器芯片中的寄存器、但无法读回相同的值。 这是预期的器件行为吗?
我已经附上了同样的屏幕截图 
您好、Jeff、

i2cget 命令读取地址处的寄存器值 0x10。 然后、 0x11 使用 i2cset 命令写入同一寄存器。 然而,当我再次读取同一个寄存器时,它返回 0xFF 而不是 0x11。 我在许多寄存器中遇到同样的问题—我无法正确读回写入的值。 尊敬的 Rutuja,
否、这不是预期行为。 常量0xFF 表示器件确认了 I2C 事务、但未返回任何数据。
处寄存器值的命令i2cget读取地址
0x10
图片显示0x19是寄存器地址、而不是0x10。 这是一个拼写错误、还是我误解了计算?
此外、是否有任何需要读取的寄存器? 您提到的许多寄存器都有问题、但这些都有问题吗?
该器件还有一个问题、即它仅支持"重复启动"I2C 读取事务。 某些控制器将使用连续读取样式。 这将导致器件错误地返回地址+1的读取值。 因此、使用这种连续样式时、寄存器0x10会返回值0x11。 您可以在示波器上探测 I2C 事务、以查看是否出现这种情况。 您也可以写入值、然后从所需的寄存器地址-1读取、以查看结果是否匹配。
此致、
Jeff McPherson
您好、Jeff、
你是对的、这是一个拼写错误。 正确的寄存器地址应为0x19、而不是0x10。 感谢您的参与!
我已经检查了需要读取响应的寄存器、但还没有收到预期的结果。
正如您提到的、我还尝试从所需寄存器以及从其上方和下方的一个地址(+1和-1)读取、但仍然没有获得预期的输出。

在上面的屏幕截图中、寄存器0x16的值为0x78。 我正尝试将该寄存器更新为0x20。 然而、当我从寄存器0x16读回时、我仍然得到0x78、这不是预期的结果。
我还尝试读取寄存器0x15和0x17、但结果也不符合预期。