主题中讨论的其他器件: 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