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.

[参考译文] PCM1862:通过 I2C 读取寄存器

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/950408/pcm1862-reading-registers-via-i2c

器件型号:PCM1862

您好!

我将再次访问使用 PCM1862器件进行麦克风/线路输入的较旧设计的固件、我在软件中注意到、当我使用以下命令从 PCM1862读取寄存器时:

IIC_START:IIC_DEVICE_ADDRESS (WRITE):IIC_REGISTER_ADDRESS:IIC_RESTART:IIC_DEVICE_ADDRESS (READ):READ (ACK):READ (ACK):等 :read(nack):IIC_stop

寄存器地址 始终设置 MSBit (0x80)。 我不记得为什么要这么做、在当前数据表中找不到任何说明必须这么做的原因的内容。

是否有人可以提供帮助、解释这是什么?

它不是读取/写入位、因为它与 IIC_DEVICE_ADDRESS 一同提供、在 PCM1862写入寄存器例程中也是如此。

感谢能提供解释的任何人。

此致

菲利普·J

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

    您好、Philip、

    这些器件具有7位 I2C 从器件地址。 该地址的前6位固定为(MSB) 100101 (LSB)、地址的最后一位取决于 AD 引脚的状态。 读/写位位于该地址之后。 不过、这是器件地址、而不是寄存器地址。 如果您在写入 MSB 为高电平的所有寄存器地址、则不会访问正确的寄存器。 上面的序列没有显示 R/W 位和寄存器地址之间发生的 ACK、因此它可能是您所指的 ACK 位?

    最棒的

    Zak

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

    你好、Zak、

    感谢您回答我的问题、很抱歉、由于未完成序列而无法显示您提到的 ACK、这不是他们按照 I2C 规范所需处理的 ACK。

    您说在 MSbit 置位时、我不会正确读取/写入寄存器、但奇怪的是、由于最高编号寄存器(在第0页中)是120、芯片会忽略 MSbit 吗? 我问是因为在发布后、我想:"到底是什么、让我们移除 MSbit = 1、看看会发生什么情况"、它的工作原理是一样的!!

    不管怎样、芯片工作正常、我想解决的故障可能是我向寄存器6到9写入了4或8的值以选择输入、但我遗漏了"位6应始终作为"1"写入的位。 现在、我的程序正在写入0x44或0x48、一切看起来都正常

    再次感谢您的观看

    菲利普·J