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.

[参考译文] PCM5242:配置问题

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1402430/pcm5242-configuration-issue

器件型号:PCM5242
主题中讨论的其他器件: TLV320ADC6140

工具与软件:

我们有以下配置:
一个 Δ µController 连接到以48kHz 频率运行的2个 ADC (TLV320ADC6140)和1个 DAC (PCM5242)、共享相同的 TDM 时钟(位时钟和帧选择)同步。
对于此测试配置、我们只想查看尽可能与输入信号相似的输出信号。
我们无法从 DAC 获得干净的音频输出:如果信号输入频率较低(20Hz),它看起来不会太差,但如果我们将频率增加到200Hz 或更高,则 DAC 输出根本不好(参见屏幕截图)

配置为:
TDM 8个时隙、每个时隙具有32位数据(每帧256位)
生成 BCLK 和 FSYNC 的 ADC1 =主站、时隙1-4
ADC2 =从站、插槽5-8
µController =两个串行音频接口、每个接口设置为从接口。 首先连接到 ADC1和 ADC2、有8个时隙。 另一个也通过8个时隙连接到 DAC (前2个时隙处于活动状态)
DAC =从器件、时隙1-2、单端模拟输出。 BCLK 和 FSYNC 连接到来自 ADC1的信号、因此 DAC 每帧256位。 我们希望它能够读取其通道的前2x32位。
12.288MHZ TCXO 被连接至 ADC MCLK 和 DAC SCK。
来自 ADC1的 BCLK = 12.288MHZ、数据在上升沿输出、在下降沿有效
第一音频位(TDM)上的 FSYNC = 48kHz

时钟配置目前如下:来自 SCK 的 PLLCK /来自 SCK 的 DACK。 关于 OSRCK 和 DSPCK 我们特别困惑...

PCM5242寄存器(按此顺序设置)

0x02:0x10;//待机模式
0x01:0x01;// reset 寄存器
0x02:0x00;//正常运行
# 20ms 延迟
0x04:0x00;//禁用 PLL
0x09:0x20;//反转 bck 模式
0x0E:0x30;// DAC 时钟源:SCK clock
0x25:0x1A;//忽略 SCK 检测、忽略 SCK 停止检测、禁用时钟自动设置
0x14:0x01;// PLL P=2 -相关文档不清楚
0x15:0x10;// PLL J=16
0x16:0x00;// PLL D1=0
0x17:0x00;// PLL D2=0
0x18:0x00;// PLL R=1
0x1b:0x01;// DSP 时钟分频器=2
0x1C:0x0F;// DAC 时钟分频器=16
0x1D:0x03;// NCP 时钟分频器=4
0x1E:0x00;// OSCK 时钟分频器=1
0x22:0x00;// 8倍插值、单速
0x23:0x04;// IDAC1
0x24:0x00;// IDAC2 IDAC=1024
0x28:0x13;// I2S 数据格式=TDM/DSP、I2S 字长=32位
0x02:0x10;//待机模式
0x02:0x00;//正常运行

当输入信号为200Hz 正弦波时、第一个附加的截屏对应于此配置:


附加的第二个屏幕截图是如果我们更改此设置:
0x1E:0x08;// OSCK 时钟分频器=8

您能检查一下我们的配置并告诉我们是否有问题吗? 或者为 PCM5242寄存器建议其他设置?

我们还尝试让 PCM5242能够与 PPC3配合使用、但它却不能。 我们发现一些信息说它可以与 PC2一起工作、但看起来很旧、所以可能不能再在 Windows 11上工作了?

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

    您好!

    您能否单独测试 DAC、也就是将数字输入(正弦波)发送到 DAC、看看您是否可以相应地构建输出。  

    BCK 和 FS (FSYCN)频率的经验法则如下:

    bck=通道 x 深度的数量 x Fsync 以及您的输入 CLKS 正确。

    从屏幕截图中可以看出、内部 CLKS 可能设置不正确。  我使用 Windows 11并使用 PC2、没有问题。 如果您希望使用 PPC3、 您可以打开 PPC3并使用 I2C 主站、将您的脚本写入其中并对寄存器进行编程。 但我建议使用 PC2、因为它的 GUI 使测试变得非常简单。

    请使用 PC2、如果仍有问题、请告诉我、我将看一下。

    此致、

    Arash

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

    µcontroller 可以从 μ C 发送数字正弦波信号、该信号是相同的。

    我试图找到 PC2、但没有成功。 你知道我在哪里可以得到这个吗?

    PS:我尚未购买 PCM5242 EV 板。 我们利用它设计了一个特定的电路板。

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

    您可以点击下载 或申请  PPC、一旦授予您的访问权限、在打开的页面(左侧)内、您应该会看到 PPC2

    https://www.ti.com/tool/PUREPATHCONSOLE

    以下是2个脚本、您可以根据需要使用和修改它们。   它们来自寄存器转储并  通过 EVM 进行了验证。 一个具有光输入、另一个 I2S 由 AP 提供。

    e2e.ti.com/.../PCM5242-with-Optical-input.txte2e.ti.com/.../PCM5242-with-PSIA-input.txt  

    此致、

    Arash

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

    尊敬的 Arash:

    已尝试 PC2、但它在我的案例中没有用途、因为我没有 EVM 板。

    根据您所说的内容、再次查看信号、似乎很清楚这与 PCM5242读取输入位的方式有关。

    在标准配置中、采用2通道数字输入32位48kHz、BCLK 应为3.072 MHz。

    但在我们的配置中、数字输入信号有8个通道、因此应为12.288 MHz。

    我们需要使用这个位时钟来配置 PCM5242、希望它能够从8上的前2个时隙中获取位。

    你认为我们可以实现这一点吗? 如何实现?

    此致

    Christophe

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

    尊敬的  Christophe:

    是的,您可以实现这一点, 因为 PCM5242可以获取 TDM 输入。 因此、您已确保告诉器件它应该期待 TDM、并相应地移动数据。    有关 选择 TDM 和移动数据的信息、请参阅页0/寄存器40和寄存器41。 我放了一个快速文档、可以参考该文档来将器件设置为在 TDM 情况下接受适当的数据。

    e2e.ti.com/.../TDM-into-I2S-devices.docx

    此致、

    Arash

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

    非常感谢 Arash、

    我进行了检查、如果没有错误、这些设置似乎是正确的。

    我再次读取所有寄存器和设置、我真的看不出会出什么问题...

    您能更深入地了解一下吗?

    感谢你的帮助

    Christophe

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

    你好、Christophe

    您是否可以  确认 VNEG 引脚 按预期工作? 如果 CLKS 有问题、我希望电荷泵也能正常工作。

    您还可以将所有 CLKS 的屏幕捕获和输入在一个屏幕上发送给我、以便我也可以检查这些边沿吗?

    您是否尝试过使用我发送的脚本(带 I2S 输入)并进行修改以使其与 TDM 配合使用、甚至仅使用带有 DAC 的 I2S?  从一个运行良好的脚本开始 、并根据具体情况进行修改、始终会更容易。

    此致、

    Arash

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

    尊敬的 Arash:

    VNEG 和 SCLK 正常。

    下面是信号的屏幕截图。 黄色是 LRCLK、粉色是位时钟、蓝色是数据、绿色是 SCLK。

    此致

    Christophe

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

    尊敬的 Christophe:

    我假设您已经检查了 SCK 和音频数据的时序要求、并且符合要求。 从上面的图我不能可视化边线,你能确认你的边线符合 TDM 格式.  

    我发现下面讨论了 TDM 中的类似问题、供您参考。

    https://e2e.ti.com/support/audio-group/audio/f/audio-forum/450891/tlv320aic3254-dsp-and-tdm-mode

    可能的  问题是 您的音频数据的发送方式(CLKS 和数据输入)  、您的 CLKS 是否全部来自一个源? 我已经看到了当 SCK 来自与 LRCLK 和 BCK 不同的源时出现的问题

    查看图68的流程图。 PCM5242时钟分配树和您确认电荷泵工作正常的事实、让我相信电荷泵路径配置正确、因此 DACCLK 也应该没问题、这只剩下 DSPCLK 路径、我有问题。

    正如我之前所建议的,我将从 我发送给你 的脚本开始,并对你的目标进行增量修改,看看它是否在任何时候中断,这可以锁定问题. 如果运行正常、只需使用此修改后的脚本即可。

    如果你有 AP,我会直接把它连接到 DAC,这样 图片中的任何其他玩家都不会有任何不确定性,通过 AP,你可以看到 LRCK、BCK 和数据是如何对齐的,并且可以轻松地与它们一起玩。

    此致、

    Arash

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

    你(们)好、Arash

    遗憾的是、问题没有解决。 我们始终会收到这种有线失真的模拟输出。

    我认为问题不在 TDM 接口端、因为我们满足了数据表中的时序要求。

    供召回:

    我们使用一个连接到 SCK 的12.288MHZ TCXO、μ I²S 接口由 ADC 作为主器件驱动、BCLK 上有12.288MHZ (与 SCK 输入之一同步)、每帧的第一位上有48KHz FSYNC、数据上有8个32位时隙。 我们想使用数据流中的前2个插槽。

    DACClock 直接来自 SCK。

    我认为该问题与 DSP 设置有关。 我们当时正在尝试初始化 PLL、但即使 R=1 / J.D.=6.0 / P=1、PLL 也不会锁定。 PLLCKIN = SCK。

    目前我们禁用了 PLL、DSP 通过 SCK 以12.288MHZ/2运行、IDAC 为1024、这似乎不正确。

    如果我将 DDSP 修改为1、将 IDAC 修改为512、输出看起来不同的总线仍然失真很大。

    我们的实际设置:

    0x02:0x10;//待机模式
    0x01:0x01;// reset 寄存器
    0x02:0x00;//正常运行
    # 20ms 延迟
    0x04:0x00;//禁用 PLL
    0x09:0x20;//反转 bck 模式
    0x0E:0x30;// DAC 时钟源:SCK clock
    0x25:0x1A;//忽略 SCK 检测、忽略 SCK 停止检测、禁用时钟自动设置
    0x14:0x01;// PLL P=2 -相关文档不清楚
    0x15:0x10;// PLL J=16
    0x16:0x00;// PLL D1=0
    0x17:0x00;// PLL D2=0
    0x18:0x00;// PLL R=1
    0x1b:0x01;// DSP 时钟分频器=2
    0x1C:0x0F;// DAC 时钟分频器=16
    0x1D:0x03;// NCP 时钟分频器=4
    0x1E:0x00;// OSCK 时钟分频器=1
    0x22:0x00;// 8倍插值、单速
    0x23:0x04;// IDAC1
    0x24:0x00;// IDAC2 IDAC=1024
    0x28:0x13;// I2S 数据格式=TDM/DSP、I2S 字长=32位
    0x02:0x10;//待机模式
    0x02:0x00;//正常运行

     

    • 您能否为我们提供适合我们应用的时钟配置设置?
    • DSP 需要高于50MHz 的时钟吗?
    • 我们如何对 DSP 模式进行编程、以便获得正常的模拟输出?

    提前感谢、

    Christophe

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

    尊敬的 Christophe:  

    很遗憾听到您仍然有问题。 我知道 在 找不到根库/解决方案时会有多令人沮丧。  DSP 无需50MHz 以外的 clk。  

    我再看一下上述寄存器、但如果其他地方的设置不正确、则很难远程分辨。 我 将审查该守则,并将根据与 工作文稿的比较,通过 tommorw 下午向你提出我的建议。

    此致、

    Arash

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

    尊敬的 Christophe:

    下面是 针对 所需参数的计算、因此是 针对相应寄存器的建议值。 为此、我在计算中使用了以下表格和图:  表36、表34、表52和 图68。

    根据使用 SCK 作为主时钟和48KHz 采样频率、我使用 表52的以下行作为起点:

    删除了上一行中 FS=48K 和12.288MHz 的振幅、

     产生的   NMAC= 1、NDAC=2、DOSR=8和 NCP=4  

     我还 使用图68中的这些值来计算和直观地查看预期的时钟、并将它们与 上表中给出的值进行比较。

    接下来、我转到表36、并进行了一些完整性检查计算:  

      由于必须选择 DOSR 使 MOD FS/DOSR = 16才能正确运行、因此、DSOR=8和   Mod f S=128 (与上一行中的值匹配)。

     然后、MOD FS=128且 NDAC=2 PLL FS=256  使用该值和 FS 为48K PLLCLK=12.288M。  虽然在你的代码中你已经禁用了 PLL ,但为了正确起见, 对于12.288MHz 输入 PLL (在图36中), 必须调整 R、J 或 P 的值,以便 满足公式3 ,并为此我更改了 J=2,并保持其余不变。 通过这种更改,由寄存器0x04控制的 MUX 将看到12.288MHz 的方式和我可以切换到 PLL ,如果我想,无需再次更改任何其他参数。

    DSP FS=256 (=12.288M/48K)、以便与我所在行的值匹配。

    从上面开始、 您必须相应地调整脚本中的寄存器0x15和1B、1C、1D、1E、但 请验证 选择/计算。  

    此外、验证是否要反转寄存器0x09中的 bck、如脚本所示。

    我希望这可以解决您的问题。  

    此致、

    Arash

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

    您好、Arash、谢谢您的演示。

    您能给我发送寄存器转储信息吗、以便我可以用我的寄存器转储进行验证吗?

    是的、我们需要反转 BCLK、因为我们在同一 TDM 总线上与2个 TLV320ADC6140共享总线、并且 ADC 在上升沿移出数据。

    我们是否需要对任何系数或其他 DSP 寄存器进行编程?

    对于正常的 DAC 输出、我们选择"8x/4x/2x 具有去加重功能的 FIR 内插滤波器"(寄存器43处为01)?

    感谢您的帮助;

    Christophe

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

    欢迎 Christophe、

    感谢确认需要反转 bck 在您的系统,只是想确保简单的反转不会影响操作。   除了设置为默认值之外、我认为您无需在 DSP 中对任何系数进行编程。

    00001对于寄存器0x43应该没有问题

    本周我非常忙碌、因为我的访问和会议很少、所以下周我才能拿到这个 EVM 的手、并获得 th 寄存器转储。 但 我假设您可以使用我之前发送的脚本、只需修改/更正我在上一次回复中提到的寄存器即可。

    此致、

    Arash

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

    尊敬的 Arash:

    我遵循了你的建议。 我设置的寄存器值如下:

    0x02:0x10          //待机模式

    0x01:0x01          //RESET 寄存器

    0x02:0x10          //待机模式

    0x04:0x00          //禁用 PLL

    0x0E:0x30          //DAC 时钟源:SCK 时钟

    0x25:0x7f          //忽略 SCK 检测、忽略 SCK 停止检测、禁用时钟自动设置

    0x14:0x01          //PLL P=2

    0x15:0x02          //PLL J=2

    0x16:0x00          //PLL D1=0

    0x17:0x00          //PLL D2 = 0

    0x18:0x00          //PLL R=1

    0x1b:0x01          //NMAC DSP 时钟分频器/2

    0x1C:0x01          //NDAC 时钟分频器/2

    0x1D:0x03          //NCP 时钟分频器/4

    0x1E:0x07          //DOSR OSCK 时钟分频器/8

    0x22:0x00          //8x 内插、单速

    0x2B:0x01          //DSP 编程8x/4x/2x 具有去加重功能的 FIR 内插滤波器

    0x23:0x01          //IDAC = 256 IDAC1

    0x24:0x00          //IDAC2

    0x09:0x20          //反转 bck 模式

    0x28:0x13          //I2S 数据格式=TDM/DSP、I2S 字长=32位

    0x29:0x00          //0 BCLK 偏移

    0x02:0x00          //正常运行              

    寄存器转储如下:

    我不确定 IDAC 设置。 输出信号看起来更糟:

    这是1kHz 正弦的输出  

    您能检查一下我们忘记了什么吗?

    提前感谢、

    Christophe

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

    尊敬的 Christophe

    这看起来不好!!   此处可能缺少其他所需的寄存器、或者 上述寄存器的设置 和计算出现思路错误。  

    我使用 TDM8对我的 EVM 以及您提到您正在使用的 CLK 进行了设置、它对我来说非常有效(我当然使用了 GUI)。

    我有波形、我在 AP 上设置的 CLK 以及 GUI 的几个屏幕截图、其中包括寄存器捕获 、其中显示了  不同形式默认的寄存器值。 我还有寄存器转储、但您更容易查看带红色 值的寄存器 、因为这些值与我们设置中的默认值不同。 我还 通过 读取 一组寄存器进行了完整性检查、并将它们与这些红色值进行了比较、它们都匹配、我还提供了相应的屏幕截图。   

    此致、

    Arash

    e2e.ti.com/.../E2E_2D00_TDM8_5F00_12p288MHz .zip