TI论坛
直播中

郭中

10年用户 1003经验值
擅长:存储技术
私信 关注
[问答]

用两个PCM1864实现8路采样,PCM1864的18脚DOUT一直无输出是哪里的问题?

请教IT的工程师:
用两个PCM1864实现8路采样, 每个PCM1864实现4路单端MIC输入, 32000采样, 16bit。TDM输出。 目前时钟配置正常输出LRCK = 32K BCK = 8192K,但是DOUT一直无数据输出
实现大致框架参考PCM1864手册p73

软件配置如下:(只是列出Master端的1864配置,Slave端配置大致相同)
I2CRegWrite1(baseAddr, 0x00, 0xFE, (0x94u >> 1));
I2CRegWrite1(baseAddr, 0x00, 0x00, (0x94u >> 1));
I2CRegWrite1(baseAddr, 0x00, 0x03, (0x94u >> 1));
I2CRegWrite1(baseAddr, 0x15, 0x11u, (0x94u >> 1));
I2CRegWrite1(baseAddr, 0x00, 0x00, (0x94u >> 1));
I2CRegWrite1(baseAddr, 0x01, 0, (0x94u >> 1));
I2CRegWrite1(baseAddr, 0x02, 0, (0x94u >> 1));
I2CRegWrite1(baseAddr, 0x03, 0, (0x94u >> 1));
I2CRegWrite1(baseAddr, 0x04, 0, (0x94u >> 1));
I2CRegWrite1(baseAddr, 0x05, 0x86, (0x94u >> 1));
I2CRegWrite1(baseAddr, 0x06, 0x41, (0x94u >> 1));
I2CRegWrite1(baseAddr, 0x07, 0x41, (0x94u >> 1));
I2CRegWrite1(baseAddr, 0x08, 0x42, (0x94u >> 1));
I2CRegWrite1(baseAddr, 0x09, 0x42, (0x94u >> 1));
I2CRegWrite1(baseAddr, 0x0A, 0x00, (0x94u >> 1));
I2CRegWrite1(baseAddr, 0x10, 0x00, (0x94u >> 1));
I2CRegWrite1(baseAddr, 0x11, 0x01, (0x94u >> 1));
I2CRegWrite1(baseAddr, 0x12, 0x00, (0x94u >> 1));
I2CRegWrite1(baseAddr, 0x13, 0x04, (0x94u >> 1));
// 设置数据模式和数据位宽
I2CRegWrite1(baseAddr, 0x0B, 0xDF, (0x94u >> 1));
I2CRegWrite1(baseAddr, 0X0C, 0x01, (0x94u >> 1));
// 字时钟的上升沿到捕获有效数据的时钟个数
I2CRegWrite1(baseAddr, 0X0D, 0x00, (0x94u >> 1));
I2CRegWrite1(baseAddr, 0X0E, 0x00, (0x94u >> 1));
//选择主从模式
I2CRegWrite1(baseAddr, 0x20, 0x11, (0x94u >> 1));
//配置LRCK 和 BCK
I2CRegWrite1(baseAddr, 0X25, 0, (0x94u >> 1));
I2CRegWrite1(baseAddr, 0X26, 2, (0x94u >> 1));
I2CRegWrite1(baseAddr, 0X27, 255, (0x94u >> 1));

回帖(2)

李元宵

2024-10-14 10:21:03
[color=#ff0000]请教IT的工程师:[/color]
用两个PCM1864实现8路采样, 每个PCM1864实现4路单端MIC输入, 32000采样, 16bit。TDM输出。 目前时钟配置正常输出LRCK = 32K BCK = 8192K,但是DOUT一直无数据输出
[color=#ff0000]实现大致框架参考PCM1864手册p73[/color]
[img]https://file1.elecfans.com/web2/M00/00/30/wKgaomaoDZaAAMZcAAGPHgmLvHk293.jpg[/img]
[color=#ff0000]软件配置如下:(只是列出Master端的1864配置,Slave端配置大致相同)[/color]
I2CRegWrite1(baseAddr, 0x00, 0xFE, (0x94u >> 1));
I2CRegWrite1(baseAddr, 0x00, 0x00, (0x94u >> 1));
I2CRegWrite1(baseAddr, 0x00, 0x03, (0x94u >> 1));
I2CRegWrite1(baseAddr, 0x15, 0x11u, (0x94u >> 1));
I2CRegWrite1(baseAddr, 0x00, 0x00, (0x94u >> 1));
I2CRegWrite1(baseAddr, 0x01, 0, (0x94u >> 1));
I2CRegWrite1(baseAddr, 0x02, 0, (0x94u >> 1));
I2CRegWrite1(baseAddr, 0x03, 0, (0x94u >> 1));
I2CRegWrite1(baseAddr, 0x04, 0, (0x94u >> 1));
I2CRegWrite1(baseAddr, 0x05, 0x86, (0x94u >> 1));
I2CRegWrite1(baseAddr, 0x06, 0x41, (0x94u >> 1));
I2CRegWrite1(baseAddr, 0x07, 0x41, (0x94u >> 1));
I2CRegWrite1(baseAddr, 0x08, 0x42, (0x94u >> 1));
I2CRegWrite1(baseAddr, 0x09, 0x42, (0x94u >> 1));
I2CRegWrite1(baseAddr, 0x0A, 0x00, (0x94u >> 1));
I2CRegWrite1(baseAddr, 0x10, 0x00, (0x94u >> 1));
I2CRegWrite1(baseAddr, 0x11, 0x01, (0x94u >> 1));
I2CRegWrite1(baseAddr, 0x12, 0x00, (0x94u >> 1));
I2CRegWrite1(baseAddr, 0x13, 0x04, (0x94u >> 1));
// 设置数据模式和数据位宽
I2CRegWrite1(baseAddr, 0x0B, 0xDF, (0x94u >> 1));
I2CRegWrite1(baseAddr, 0X0C, 0x01, (0x94u >> 1));
// 字时钟的上升沿到捕获有效数据的时钟个数
I2CRegWrite1(baseAddr, 0X0D, 0x00, (0x94u >> 1));
I2CRegWrite1(baseAddr, 0X0E, 0x00, (0x94u >> 1));
//选择主从模式
I2CRegWrite1(baseAddr, 0x20, 0x11, (0x94u >> 1));
//配置LRCK 和 BCK
I2CRegWrite1(baseAddr, 0X25, 0, (0x94u >> 1));
I2CRegWrite1(baseAddr, 0X26, 2, (0x94u >> 1));
I2CRegWrite1(baseAddr, 0X27, 255, (0x94u >> 1));
举报

1652711011.026500

2024-10-15 17:58:00
根据您提供的信息,您正在使用两个PCM1864芯片实现8路采样,每个PCM1864芯片实现4路单端MIC输入,32000采样,16bit。TDM输出。目前时钟配置正常输出LRCK = 32K BCK = 8192K,但是DOUT一直无数据输出。

首先,我们需要检查以下几个方面:

1. 硬件连接:确保PCM1864芯片与麦克风、时钟源和其他相关硬件之间的连接正确无误。检查电源、地线、数据线和时钟线是否连接正确。

2. 时钟配置:您提到时钟配置正常,但请再次确认LRCK和BCK的频率是否符合PCM1864的要求。LRCK应为32KHz,BCK应为8192KHz。此外,确保时钟信号的相位和极性正确。

3. I2C配置:检查I2C配置是否正确。您提供的代码片段显示了Master端的1864配置,但请确保Slave端的配置也正确。同时,检查I2C通信是否正常,确保I2CRegWrite1函数能够正确写入寄存器值。

4. PCM1864寄存器配置:请参考PCM1864手册,确保所有相关寄存器的配置正确。以下是一些关键寄存器的配置建议:

   - 控制寄存器(0x00):设置为0x94,启用4路单端输入,16位采样,32K采样率。
   - 通道映射寄存器(0x03):设置为0x94,将4路单端输入映射到相应的通道。
   - 时钟控制寄存器(0x15):设置为0x11,启用内部时钟,禁用外部时钟。

5. 软件逻辑:检查您的软件逻辑是否正确处理PCM1864的数据输出。确保在读取DOUT数据时,LRCK和BCK时钟信号已经稳定,并且软件能够正确地读取16位数据。

如果以上检查都没有问题,但DOUT仍然无数据输出,建议您尝试以下操作:

1. 使用示波器或逻辑分析仪检查LRCK和BCK时钟信号,确保它们在正确的频率和相位。

2. 使用示波器或逻辑分析仪检查DOUT数据线,确保在读取数据时有数据信号。

3. 尝试使用不同的麦克风或更换PCM1864芯片,以排除硬件故障的可能性。

4. 参考其他成功实现PCM1864的示例代码或项目,检查您的代码是否存在潜在问题。

希望以上建议能帮助您解决问题。如果问题仍然存在,请提供更多详细信息,以便进一步分析。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分