主题中讨论的其他器件:TLV320AIC3204
您好!
我与 AIC3254通信时遇到问题。 当我通过 I2C 端口写入寄存器时、除非我在各个寄存器访问之间添加一个延迟(~1ms)、否则该操作不会写入正确的值。 我具有以下配置:
- TI TLV320AIC3204_54_RHB_EVM 板上的 AIC3254。 USB 接口板未连接。 电路板由外部3.3V 工作台电源供电、电流~10mA。 这为 IOVDD 和 HPVDD/LDO_IN 提供3.3V 电压。
- LDO_SELECT = 1 (IOVDD)并且外部电源断开。
- 109KHz 下的 I2C (也尝试400kHz)、具有3.3V IOVDD 的上拉电阻。
- NXP ARM 处理器是 I2C 主处理器
- MCLK 由外部20MHz 时钟供电。 在2/5/10MHz 下进行测试时、结果相同。
- 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 延迟值是通过实验确定的。 较短的延迟也可能起作用。
这里发生什么事了? 我在文档中是否忽略了一些时序限制?