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.

[参考译文] TLV320AIC3120EVM-U:使用总线盗版通过 I2C 读取和写入编解码器寄存器

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1253434/tlv320aic3120evm-u-read-and-writing-of-codec-registers-via-i2c-using-bus-pirate

器件型号:TLV320AIC3120EVM-U

大家好-我正尝试使用一个连接到评估板上 SDA 和 SCL 线路的总线海盗来直接与编解码器寄存器通信。   我发出命令来读取寄存器、但我始终会接收0xFF 作为寄存器数据。  下面是我从连接到总线海盗的终端程序复制的示例命令行:

I2C>[0x30 0x0F [0x30 r]        **注释-此行可解释为: 起始条件、器件地址、寄存器地址、重复起始条件、器件地址、 读取数据、停止条件
I2C 起始位
写入:0x30 ACK
写入:0x0F ACK
I2C 起始位
写入:0x30 ACK
读取:0xFF
NACK
I2C 停止位
I2C>

请注意、编解码器正在确认发送的所有数据、但返回的数据不是我预期的数据。  

请告诉我、这是否应该按我的预期工作、或者可能需要进行哪些更改。  在使用微控制器尝试执行这些操作之前、我想验证我是否可以通过 I2C 读取和写入编解码器寄存器。

谢谢!

克里斯

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

    Chris、您好!

    从您共享的伪序列中、我注意到您的设备地址在重复的"开始"之后没有更改、因为已设置了读取位。 可能这就是您没有获得预期结果的原因。 地址仍然有效、所以它仍然返回一个 ACK、但是数据是垃圾数据(在这个情况下一直保持高电平)。

    请告诉我、这是否可以解决问题、或者我误解了什么内容、
    J·麦克弗森

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

    Jeff、您好、感谢您的帮助。   您对所发生的事情是正确的。 我使它开始工作、并 能够将数据写入编解码器上的寄存器、然后使用总线海盗使用以下命令序列读回它:

    此行将0x01写入寄存器0x15[   IS START 条件  ]是 STOP 条件

    [0x30 0x15 0x01]          

    此行会正确返回先前写入编解码器的0x01、0x31用于读回数据

    [0x30 0x15 [0x31 r]

    谢谢、 Chris