工具/软件:
我正在使用 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、但结果也不符合预期。