我们有这个编解码器,正在设置I2C端口。 每次读取控制寄存器状态(使用地址的自动增量)时,寄存器3A的值在我们的编程值和0x88之间切换。 此外,每次读取时,将寄存器4增量控制为0x20。
这是相当令人惊讶的行为,并不是随机的。 我们希望将I2C用于控制接口,而将4线串行端口仅用于数据。 我们需要确信,I2C上的数据正是我们所期望的。 我已通读数据表,但找不到任何迹象表明这是预期行为。
您能否解释一下这是否是预期的,以及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.
我们有这个编解码器,正在设置I2C端口。 每次读取控制寄存器状态(使用地址的自动增量)时,寄存器3A的值在我们的编程值和0x88之间切换。 此外,每次读取时,将寄存器4增量控制为0x20。
这是相当令人惊讶的行为,并不是随机的。 我们希望将I2C用于控制接口,而将4线串行端口仅用于数据。 我们需要确信,I2C上的数据正是我们所期望的。 我已通读数据表,但找不到任何迹象表明这是预期行为。
您能否解释一下这是否是预期的,以及I2C总线是否可以用作唯一的控制端口?
好的,我弄明白了子寄存器的事情。 我将尝试将此记录在案,以备将来参考。
数据表指出,"索引寄存器地址被记录下来,以便在下一个控制寄存器上执行下一个读/写操作"。 图32显示了正常的I2C自动索引,在每次发送ACK时寄存器地址都会增加。
要清除,每次发送ACK时主寄存器地址都会增加。 每次向主寄存器地址发出新的读取命令时,子寄存器地址都会增加。
因此,从寄存器3开始读取四个字节将为您提供以下寄存器内容:
3A 4 5A 6A
再次阅读相同内容,您将获得:
3B 4 5B 6B
继续发送相同的命令,您将获得:
3c 4 5C 6A
3D 4 5D 6B
3A 4 5A 6A
等等
每次读取到主寄存器地址时,子寄存器地址都会增加其自己的子寄存器地址,并且在读取最后一个子寄存器时,子寄存器地址会自动换行。
Brian