您好、
我使用两个 pcm1864。 我有一个 DSP、它是时钟的主控器、它会生成 MCLK、BCLK e LRCLK。
这3个时钟连接到两个 pcm1864。 两个1864是带有这个连接的时钟的从器件:
DSP_MCLK ---->SCKI (引脚15)
DSP_LRCLK ---->LRCLK (引脚16)
DSP_BCLK ---->BCLK (pin17)
我已在从模式下配置了 PCM1874、并使用 tdm8 fornat (32位)、方法如下:
// first PCM1864 pcm1864_write_register(PCM1864_01, 0x06, 0x41); // select VINL1 for ADC1L pcm1864_write_register(PCM1864_01, 0x07, 0x44); // select VINR3 for ADC1R pcm1864_write_register(PCM1864_01, 0x08, 0x42); // select VINL2 for ADC2L pcm1864_write_register(PCM1864_01, 0x09, 0x48); // select VINR4 for ADC2R pcm1864_write_register(PCM1864_01, 0x20, 0x01); // activate auto detect mode pcm1864_write_register(PCM1864_01, 0x0B, 0x03); // select TDM digital output, slave mode, 32 bit audio word and duty cycle of LRCK is 50% pcm1864_write_register(PCM1864_01, 0x0C, 0x01); // select 4-channel output (ch1[L], ch1[R], ch2[L], ch2[R]) pcm1864_write_register(PCM1864_01, 0x0D, 0x00); // offset position in of TDM8 output: 0 (first 4 channels) wait_500ms(); pcm1864_dump_status_tegisters(PCM1864_01); // second PCM1864 pcm1864_write_register(PCM1864_02, 0x06, 0x41); // select VINL1 for ADC1L pcm1864_write_register(PCM1864_02, 0x07, 0x44); // select VINR3 for ADC1R pcm1864_write_register(PCM1864_02, 0x08, 0x42); // select VINL2 for ADC2L pcm1864_write_register(PCM1864_02, 0x09, 0x48); // select VINR4 for ADC2R pcm1864_write_register(PCM1864_02, 0x20, 0x01); // activate auto detect mode pcm1864_write_register(PCM1864_02, 0x0B, 0x03); // select TDM digital output, slave mode, 32 bit audio word and duty cycle of LRCK is 50% pcm1864_write_register(PCM1864_02, 0x0C, 0x01); // select 4-channel output (ch1[L], ch1[R], ch2[L], ch2[R]) pcm1864_write_register(PCM1864_02, 0x0D, 0x80); // offset position in of TDM8 output: 128 (second 4 channels) wait_500ms(); pcm1864_dump_status_tegisters(PCM1864_02);
但是、在状态寄存器中进行配置(等待500毫秒)之后、我得到以下值:
页面 | 寄存器 | PCM1864.1 | 描述1 | PCM1864.2中的一个 | 描述2 |
0 | 0x20 | 0x01 | CLKDET=1 (正常) | 0x0F | 预期值= 0x01 |
0 | 0x28 | 0x00 | PLL 已禁用(正常?) | 0x13 | PLL 被启用并且被锁定至 bck |
0 | 0x70 | 0x70 | 上电并运行 | 0x70 | 上电并运行 |
0 | 0x72 | 0x0F | 器件状态:运行 | 0x0F | 器件状态:运行 |
0 | 0x73 | 0x03 | 32kHz 至48kHz (正常) | 0x03 | 32kHz 至48kHz (正常) |
0 | 0x74 | 0x44 | BCK:256fs - SCK:512fs (正常) | 0x47 | 无效的 SCK 比率或 LRCK 停止(不良) |
0 | 0x75 | 0x00 | 无错误(正常) | 0x11 | SCK 暂停和错误(错误) |
0 | 0x78 | 0x07 | DVDD、AVVD、LOD 正常 | 0x07 | DVDD、AVVD、LOD 正常 |
3. | 0x12 | 0x00 | 保留值错误 | 0x40 | 权利保留值 |
253. | 0x14 | 0x01 | 保留值错误 | 0x00 | 权利保留值 |
因此有些值似乎不正确、实际上在数字输出中、我没有期望值。
我尝试更改配置以禁用时钟自动检测(P0.0x20 -将 CLKDET_EN 位更改为0)、但对于 PCM1864、该位未更改(在第一个 PCM1864中读取0x01、在第二个 PCM1864中读取0xFF)。
在附件中、在配置步骤期间会转储寄存器。
有人能指着我的方向找到错误的步骤吗?
感谢您的支持。