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.

[参考译文] PCM1863:I2C 读取不起作用 i.e) I2C 不读取 PCM1863中的寄存器值

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/966596/pcm1863-i2c-read-is-not-working-i-e-i2c-is-not-reading-register-values-in-pcm1863

器件型号:PCM1863
主题中讨论的其他器件: HDC1080

大家好、

我们在定制的 Linux 板中使用 PCM1863器件来从立体声模拟麦克风收集音频样本。

主处理器基于运行 Linux 的 ARM Cortex A7。 我们有用于读取和写入 I2C 从设备的定制 I2C Linux 驱动程序。 在我们的电路中、I2C 总线在以下 I2C 地址有两个从器件:
从器件-1 @ slaveadr = 0x40 (HDC1080器件)
从器件-2 @ slaveadr = 0x4A (PCM1863器件)

我们看到 HDC1080 I2C 写入和读取工作正常。 PCM1863 I2C 写入正在工作。 但问题在于 I2C 读取不起作用、因此请检查写入的寄存器值。

对于 I2C 写入、我们遵循以下序列:

[开始]-[SLAVE_ADDR+WR]-[REG_ADR]-[WR_DATA]-[停止]
例如)
[开始]-[0x94]-[0x06]-[0x50]-[停止]
对于 I2C 读取、我们遵循以下序列:

[开始]-[SLAVE_ADDR+WR]-[REG_ADR]-[重复启动]-[SLAVE_ADDR+RD]-[读取 RD_DATA]-[停止]

例如)

[开始]-[0x94]-[0x06]-[重复启动]-[0x95]-[读取数据]-[停止]

我们看到从器件地址和寄存器地址阶段从 PCM1863获取 ACK。 但是、读取阶段(从器件地址和第三数据)将获得超时、并且没有来自 PCM1863的数据。

请帮助我们、PCM1863中的 I2C 读取可能存在什么问题?  

此致。
Prabhakar

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

    大家好、

    我们解决了这个问题。 在发出 REPEACT_START 时出现代码问题。 当我们在 Repeat_start 后添加 SW 延迟时、我们可以读取 I2C 寄存器数据。  

    此致、

    Prabhakar