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.

[参考译文] TLV320AIC3254:通过 I2C 读取和写入的寄存器不可靠

Guru**** 2458880 points
Other Parts Discussed in Thread: TLV320AIC3204

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/757218/tlv320aic3254-unreliable-register-read-and-write-over-i2c

器件型号:TLV320AIC3254
主题中讨论的其他器件:TLV320AIC3204

您好!

我与 AIC3254通信时遇到问题。  当我通过 I2C 端口写入寄存器时、除非我在各个寄存器访问之间添加一个延迟(~1ms)、否则该操作不会写入正确的值。  我具有以下配置:

  1. TI TLV320AIC3204_54_RHB_EVM 板上的 AIC3254。 USB 接口板未连接。 电路板由外部3.3V 工作台电源供电、电流~10mA。  这为 IOVDD 和 HPVDD/LDO_IN 提供3.3V 电压。
  2. LDO_SELECT = 1 (IOVDD)并且外部电源断开。   
  3. 109KHz 下的 I2C (也尝试400kHz)、具有3.3V IOVDD 的上拉电阻。
  4. NXP ARM 处理器是 I2C 主处理器
  5. MCLK 由外部20MHz 时钟供电。 在2/5/10MHz 下进行测试时、结果相同。
  6. DIN、DOUT、BCLK 和 WCLK 当前未连接。

我使用评估板上的外部稳压器执行了相同的测试、结果相同。

我可以在评估板上与 I2C EEPROM 正确通信、演示 I2C 是否正常工作。

我可以读取 AIC3254寄存器值、这似乎可以根据读回各种默认寄存器值正常工作。

此简单测试演示了问题:

加电

I2Cwrite reg0 0x00  //设置 PAGE 0

i2Cwrite reg1 0x01  //复位编解码器

延迟1ms

i2写入 reg11 0x81  //写入 NDAC 值  

i2Cwrite reg12 0x82  //写入 MDAC 值  

(笑声)

I2Cread 前16个寄存器返回: 00 60 00 11 04 00 00 00 81 01  00 80 02

如您所见、寄存器12返回0x01而不是0x81。  如果我在 I2CWRITE 到寄存器11和寄存器12之间插入1ms 延迟、那么它工作正常。  这并不特定于 PAGE 0、这些寄存器或值1ms 延迟值是通过实验确定的。  较短的延迟也可能起作用。

这里发生什么事了? 我在文档中是否忽略了一些时序限制?

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

    这很奇怪、在这个器件的历史记录中、我们没有看到任何 I2C 通信问题。 许多 TI 器件中也使用了相同的 I2C 通信块。

    您是否有逻辑分析仪? 最好是查看通信、看看第二个写入是否正在进行。 寄存器12的默认值为0x01、因此有必要了解这是否会提供任何提示。

    此致、
    -Steve Wilson
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的回复 Steve。 我已经使用示波器检查了总线、它的行为符合预期。 我的经验是 I2C 可以正常工作、也可以不工作、但不能在部分时间内工作。 实际上、我不认为这是 I2C 总线问题、而是处理编解码器内部 I2C 数据的内容。 我将汇编评估套件的编解码器和 USB 接口部件、并检查它们是否仍然有效。 将更新。

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

    我可以告诉您评估模块工作正常。 该器件自2010年左右发布、我已经对其进行了无数次编程、没有延迟。

    现在、当您说"它按预期运行"时、您实际上会看到所有命令、AIC3254会为不执行的写入提供 ACK? 还是不是? NXP 处理器是否使用重复启动? 或者它们是单独的写入命令吗?

    此致、
    -Steve Wilson