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.

[参考译文] PCM1791A:外部数字滤波器模式+单声道不能正常工作

Guru**** 2431790 points


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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1233460/pcm1791a-external-digital-filter-mode-mono-doesn-t-seem-to-work-correctly

器件型号:PCM1791A

一些背景信息:

  • 时钟@ LRCK 引脚= 744.192kHz
  • 时钟@ BCK 和 SCK 引脚= 23.814MHz (32xFS)
  • 单声道模式的输出电路设置(如图37所示)
  • 静音引脚(单声道模式下的 DATA-R)接地
  • 数据引脚上的数据看起来像图39 (24位)的底部

写入寄存器(此处仅注明非默认值):

-注册 20

  • DFTH = 1
  • 单声道= 1

-注册表18

  • FMT = 010 (24位右对齐)

这样的设置使得输出有一些奇怪的噪声/失真、我不明白为什么。

如果我设置 CHSL=1、输出看起来完全相同。 但是、当 DFTH = 1时、它应为静默模式(无输出)、因为 R DATA 通道来自 MUTE 引脚(接地)。 所以似乎有些东西不起作用、特定于 DFTH 和单声道的东西都被启用了。

除此之外、如果我设置 DFTH=0、FMT=000 (16位右对齐)并使用16位而不是24位数据输入数据、情况似乎正常工作。

但在我看来、这并不合理、因为考虑到时钟速率、他们似乎不应该这么做。

我似乎可以使用"古怪"的方式使其正常工作、但格式必须是16位而不是24位。 而且,我想了解发生了什么-我不是一个只是抓着我的肩膀,并在事情没有意义时继续前进的粉丝。

有什么建议吗?

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

    您好!

       与 FS、BCLK 等相关的方式 如下:

    F (Bck)=通道数 X 通道宽度 x Fs   

    因此、如果 bk=32Fs、从某种意义上讲、您告诉器件它是 2个通道和16位  (23.814MHz=2x16x744.192kHz)、  

    这可能就是它对16位正确反应而不是24位反应的原因。

    话虽如此、请注意 、此器件支持高达200kHz 的采样频率。

    此致、

    Arash

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

    Arash,

    在外部数字滤波器模式下、采样频率可以(和应该)更高。

    在外部数字滤波器模式下、24位分布在 FS 的 L 和 R 上(图39)。

    即使将这些内容忽略不计、在外部数字滤波器模式和单声道模式下、无论 CHSL 如何、当数据-R 来自 MUTE 引脚(在我的设计上接地)时、输出都是相同的也没有道理。 因此、当选择 R CHANNEL 作为单声道模式的源时、它应该是静音/无输出、但不是。 所以事情的行为肯定是异常的。

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

    伊诺霍什、

    您是否会共享这些寄存器的代码(写回)以及 CLKS 和数据捕获、以便我可以查看和查看边沿

    此致、

    Arash

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

    代码非常简单。 我添加了读内容、否则就没有必要:

    uint8_t write;
    static uint8_t read_18 = 0;
    static uint8_t read_20 = 0;
    
    write = 2 << 4;
    _write(18, &write, 1);
    read_18 = _read(18);	// at this point, read_18 contains the correct value
    write = 1 << 4 | 1 << 3;
    _write(20, &write, 1);
    read_20 = _read(20);	// at this point, read_20 contains the correct value

    在深入介绍示波器捕获之前、我想指出、无论 FS/BCK/数据是什么样子、如果同时设置了 DFTH 和 Mono、DAC 都无法正常工作。 证明如果我更改了对寄存器20的写入、同时将 CHSL 设置为选择 R 通道、 DAC 的输出根本不会更改。 当设置 DFTH 时、R 沟道数据来自 在 PCB 上接地的 MUTE 引脚。 根据数据表、在这种情况下、输出应基本静音。

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

    您好 inojosh、

    Arash 今天不在办公室、明天还会再来、但如果能看到时钟捕获来确认正确的时钟以及查看 您在原帖中提到的失真/噪声、仍然会有所帮助。

    此致、
    Jeff McPherson

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

    我只是想出来-有一个头晕目眩的启示。

    24位数据被对齐、这样一半的数据与错误的采样相关联。 所以这些内容看起来非常接近正确、但并不完全正确。

    尽管如此、我还是不明白 CHSL 为什么不支持 DFTH 和单声道设置。

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

    如果你以前没有做过,可能在此时 测试 DAC 是一个好主意,当它不是在外部数字滤波器模式与标准 I2S ,只是为了验证问题 仍然存在。 我怀疑 设置仍然不正确。

    此致、

    Arash