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.

[参考译文] PCM5121:自动时钟的最小寄存器设置

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1388401/pcm5121-minimum-register-setup-for-autoclock

器件型号:PCM5121

工具与软件:

尊敬的:  

我在几次尝试使 PCM5121工作没有成功

我的设置非常简单

ESP32-S3生成的 I2C (DAT/FRAME/BCL)(无 SCK)  

硬件则严格遵循数据表和应用手册。

声音非常标准44.1kHz 立体声16位

上电后、I2C 使用0x00值配置寄存器40 (对于16位的 I2S)

在发送这个 wav 文件前、寄存器118表示为0x80

发送 wav 文件后、寄存器118报告0x81、这意味着电荷泵问题

问题:  

1我是否有义务提供 SCK? 根据数据表、我可以在没有的情况下工作

2/是否有任何其他必须配置的寄存器?

非常感谢  

日文

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

    您好、JP、

    我怀疑您是否测量引脚 VNEG、它是否工作不正常。 如果是这样、这表示电荷泵不正常工作、这可能是时钟设置问题所致。

     更多信息、请参阅第8.3.6.3节和第8.3.6.4节。

    附件是一个 zip 文件、其中包含多个适用于不同场景的脚本。 您可以从其中一个开始、并根据任务修改所需的寄存器。

    PCM512x-sample-code.zip

    此致、

    Arash

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

    感谢 Arash 关心我的问题。

    基本上、我添加了一个 SCK @ 4.xxMHz、现在它可以完美地工作、  

    除了寄存器40之外、它看起来还必须配置一些其他寄存器。  

    如果你有任何想法,只是建议,否则,我要测试寄存器/寄存器:-(

    此致

    日文

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

    大家好、JP、现在可以正常工作了。

    我怀疑 ,因为你没有使用 SCK 你必须 设置所有的 PLL 寄存器和时钟分频器寄存器用于参考 bck , 这没有正确完成. 我认为、如果您参考第8.3.6.5节(PLL 计算)中的示例、就应该能够设置这些寄存器。  另请  参阅时钟树(图63。 PCM512x 时钟分配树)、您会看到 不同多路复用器的多个寄存器需要 与 PLL 系数一起设置。

    此致、

    Arash

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

    尊敬的 Arash:  

    感谢您的宝贵支持。

    相同的设置确实有非常恼人的问题。

    我的设置使用4线 I2S、SCK 调谐为5、6488MHz (根据 PCM5121数据表的表32)、我正在使用 TDM 8通道16位@ 44.1kHz

    我听 tl 所有频道,但时间的时间(我会说,随机)有一些短暂的噼啪声,  

    附加了示波器提取、该提取显示杂散噼啪声期间 DAC 输出具有非常高的值。  (我尝试了带有 CAPA 的 VCOM 或带有 GND 的 VREF、不成功)

    除寄存器40 = 0x10外、所有寄存器均设置为默认值

    有什么想法来帮助我? 是否可能有一些寄存器需要微调?

    提前感谢

    日文

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

    尊敬的 Jean-Paul:

    两个输出通道上是否出现爆裂声、或者只是其中一个?

    其他寄存器设置(例如 Arash 共享的示例代码)是否会发生这种情况?

    此致、
    Jeff McPherson

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

    尊敬的 Jeff:  

    感谢您的快速响应、  

    是、两个频道上都出现噼啪声

    我没有测试其他寄存器设置、因为我使用标准配置(16位/44.1kHz)将 HW 更改为4线、并  根据数据表中提到的使用默认时钟自动选择  

    您是否建议忘记4W 并使用提供的寄存器?

    此致、JP

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

    更重要的是、连接的波形看起来是由 PCM5121生成的、因为我的 WAV 示例是一种简单语音

    波形看起来像受控振荡...

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

    测试1:具有以下寄存器的 SCK ->结果相同、可听到噼啪声  

    wrbuf[0]= 37;wrbuf[1]= 0x00;i2c_master_transmit (dev_handle、wrbuf、2、 -1);//确保启用自动时钟
    wrbuf[0]= 40;wrbuf[1]= 0x10;i2c_master_transmit (dev_handle、wrbuf、2、 -1);// 16位 TDM 数据格式
    wrbuf[0]= 02;wrbuf[1]= 0x10;i2c_master_transmit (dev_handle、wrbuf、2、 -1);//待机请求
    wrbuf[0]= 02;wrbuf[1]= 0x00;i2c_master_transmit (dev_handle、wrbuf、2、 -1);//待机释放

    测试2:不使用具有以下寄存器的 SCK ->结果 完美  

    wrbuf[0]= 0x25;wrbuf[1]= 0x1A;i2c_master_transmit (dev_handle、wrbuf、2、 -1 );//自适应分频器设置:禁用自动配置并忽略 SCK 损耗
    wrbuf[0]= 0x14;wrbuf[1]= 0x00;i2c_master_transmit (dev_handle、wrbuf、2、 -1);// PLL P 分频器
    wrbuf[0]= 0x15;wrbuf[1]= 0x0F;i2c_master_transmit (dev_handle、wrbuf、2、 -1);// PLL J 分频器
    wrbuf[0]= 0x16;wrbuf[1]= 0x00;i2c_master_transmit (dev_handle、wrbuf、2、 -1);// PLL D1分频器
    wrbuf[0]= 0x17;wrbuf[1]= 0x00;i2c_master_transmit (dev_handle、wrbuf、2、 -1);// PLL D2分频器
    wrbuf[0]= 0x18;wrbuf[1]= 0x00;i2c_master_transmit (dev_handle、wrbuf、2、 -1);// PLL R 分频器
    wrbuf[0]= 0x1B;wrbuf[1]= 0x01;i2c_master_transmit (dev_handle、wrbuf、2、 -1);// miniDSP CLK 分频器
    wrbuf[0]= 0x1C;wrbuf[1]= 0x0E;i2c_master_transmit (dev_handle、wrbuf、2、 -1);// DAC CLK 分频器
    wrbuf[0]= 0x1D;wrbuf[1]= 0x03;i2c_master_transmit (dev_handle、wrbuf、2、 -1);// NCP CLK 分频器
    wrbuf[0]= 0x1E;wrbuf[1]= 0x00;i2c_master_transmit (dev_handle、wrbuf、2、 -1);// OSC CLK 分频器
    wrbuf[0]= 0x22;wrbuf[1]= 0x00;i2c_master_transmit (dev_handle、wrbuf、2、 -1);// FS 设置
    wrbuf[0]= 0x23;wrbuf[1]= 0x04;i2c_master_transmit (dev_handle、wrbuf、2、 -1);// IDAC1
    wrbuf[0]= 0x24;wrbuf[1]= 0x00;i2c_master_transmit (dev_handle、wrbuf、2、 -1);// IDAC2
    wrbuf[0]= 0x0d;wrbuf[1]= 0x10;i2c_master_transmit (dev_handle、wrbuf、2、 -1);//将 PLL 时钟源设置为 BCK、而不是 SCK
    wrbuf[0]= 0x02;wrbuf[1]= 0x10;i2c_master_transmit (dev_handle、wrbuf、2、 -1);//待机请求
    wrbuf[0]= 0x02;wrbuf[1]= 0x00;i2c_master_transmit (dev_handle、wrbuf、2、 -1);//待机释放

    如果你有任何建议,使它使用4W 不要犹豫

    谢谢  

    日文

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

    您好、JP、

    时钟树/PLL 的计时不正确可能导致噼啪声。 如果您要使用4Wire、我建议仔细检查数据表中的第8.3.6节、以确保正确设置时钟树并支持比率。

    您是否需要 SCLK? 如果 BCLK 可用、那么就没有主要原因将 SCLK 用作 PLL 源。

    此致、
    Jeff McPherson