我的设计有TLV320AIC3101,我通过I2C总线从微控制器配置它。 如果写入作为单个完整的I2C事务发生,AIC3101寄存器将正确写入。 如果我写入寄存器地址,然后重复启动并写入数据,AIC3101寄存器将保持不变。
数据表中的第11.5 1节提到了重复启动,因此我希望它能够正常工作。 我想他们可能只考虑阅读,但这似乎很奇怪。
其他人有没有遇到这种情况? 我错过了什么吗?
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.
我的设计有TLV320AIC3101,我通过I2C总线从微控制器配置它。 如果写入作为单个完整的I2C事务发生,AIC3101寄存器将正确写入。 如果我写入寄存器地址,然后重复启动并写入数据,AIC3101寄存器将保持不变。
数据表中的第11.5 1节提到了重复启动,因此我希望它能够正常工作。 我想他们可能只考虑阅读,但这似乎很奇怪。
其他人有没有遇到这种情况? 我错过了什么吗?
希望这将说明问题与设备处理I2C之外的任何其他问题无关。 以下是从显示事务的单个捕获中提取的,该捕获同时显示了重复开始和不重复开始的事务。 尽管为清晰起见,它被分解,但这是连续图像之间I2C总线上没有活动的连续运行。
首先,我们阅读Register 3,它包含记录的默认值0x10:
然后,我们将0xFF值写入Register 3作为单个事务,不重复开始:
之后,我们阅读了Register 3并看到0xFF的值写正确:
然后,我们将0x00值写入Register 3,仍然使用不重复开始的单个事务:
我们阅读Register 3 (注册3)并确认它现在包含0x00:
接下来,我们再次将0xFF写入Register 3,这次在中间重复开始:
我们读取了寄存器3,发现值 未写入,且寄存器仍包含0x00: