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.

[参考译文] PCMD3180:PDM 输入7和8出现意外延迟

Guru**** 2487425 points


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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1077372/pcmd3180-unexpected-latency-on-pdm-inputs-7-and-8

部件号:PCMD3180
“线程:测试”中讨论的其它部件

使用的是8 PDM 麦克风参考设计,与数据表8.2.1中的建议完全相同。 采样频率为16kHz。

我们从一个扬声器播放一个500Hz 的窦性,这样,与麦克风的距离大致相同。  在 I2S 流中,我们预计会读取正在进行中的正弦类。

我们观察到 PDM 输入7和8与所有其他样本相比,有大约6个样本延迟。 请参见下面的图解。

我们尝试了不同的设置(例如,不同的 I2S 插槽分配):延迟始终属于 PDM 输入7和8,而不是特定的 I2S 插槽或 MCU 中的处理。

我们已经尝试了768kHz 和3MHz PDM 时钟预校准器设置:延迟相同。

我们尝试了多个主板:问题并非特定于一个特定硬件。

我们不对 PDM 输入7和8进行特定配置。 请在下面找到我们所有的注册信息。

您的身边是否也有同样的经历? 我们可以采取哪些措施来应对这种情况?

您可以在 I2C 命令日志中找到详细设置:
[D] I2C 写入地址=0x02数据=0x81
[i]设置 I2S 输出模式
[D] I2C 写入地址=0x07 data=0x40
[i]将输入源 CH1..CH8配置为 PDM 输入
[D] I2C 写入地址=0x3c data=0x40
[D] I2C 写入地址=0x41 data=0x40
[D] I2C 写入地址=0x46 data=0x40
[D] I2C 写入地址=0x4b data=0x40
[D] I2C 写入地址=0x50 data=0x40
[D] I2C 写入地址=0x55 data=0x40
[D] I2C 写入地址=0x5a 数据=0x40
[D] I2C 写入地址=0x5f data=0x40
[i]将 GPO1..4配置为 PDMCLK
[D] I2C 写入地址=0x22 data=0x41
[D] I2C 写入地址=0x23 data=0x41
[D] I2C 写入地址=0x24 data=0x41
[D] I2C 写入地址=0x25 data=0x41
[i]将 GPI1..4配置为 PDMIN
[D] I2C 写入地址=0x2b data=0x45
[D] I2C 写入地址=0x2C 数据=0x67
[i]启用 PDM 输入通道
[D] I2C 写入地址=0x73 data=0xff
[i]将 CH5,6,7,8配置为向右1-2-3-4
[D] I2C 写入地址=0x0F data=0x20
[D] I2C 写入地址=0x10 data=0x21
[D] I2C 写入地址=0x11 data=0x22
[D] I2C 写入地址=0x12 data=0x23
[i]启用 I2S 通道插槽
[D] I2C 写入地址=0x74 data=0xff
[i]设置 PDMCLK 分隔器
[D] I2C 写入地址=0x1f data=0x42
[i]设置 HPF 文件管理器
[D] I2C 写入地址=0x6b data=0x03
[i]启动 PDM 频道
[D] I2C 写入地址=0x75 data=0x60

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

    明天就要看这个

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

    我认为,MIC7和 MIC 8 输出的相移距离其余输出为90度:

    这种相移是否会随着音调频率的降低而降低? 例如,如果您设置为100 Hz,班次会发生变化吗?

    此外,是否已尝试将 MIC7和 MIC 8连接至 MIC1和 MIC2。 完成此操作后,班次是否会消失?

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

    我用不同的频率测量。  与 PDM 麦克风1相比,100Hz 时 PDM 麦克风8的延迟稍高,但相位延迟不超过90度。 此外,在较高的音调下,班次不会跟随频率。 在不同音调下观察到的相位延迟[样例,f_s=16kHz]:
    100Hz:10
    200Hz:8
    300Hz:7
    400赫兹:7
    500Hz:6
    600Hz:7
    700Hz:6
    800赫兹:6
    900赫兹:7
    1000Hz:6
    1500Hz:6
    2000赫兹:7


    实际上,我们不能交换麦克风,但我们在多个主板上尝试了它,而且情况也是一样的。
    我尝试交换 PDM mic -> I2S 插槽分配:
    最初是 PDM1->I2S_LEFT 和 PDM8->I2S_RIGHT。 在 I2S_Right_4中接收到的信号很晚。
    当我将配置交换到:PDM1->I2S_Right_4和 PDM8->I2S_Left_0时,I2S_Left_0中的信号将延迟。

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

    关注问题。 明天将作出答复

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

    您给芯片提供了什么时钟时间?

    此外,还可以将 MIC7的数据连接到 MIC1,以保持 MIC1输出断开连接?

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

    我们在 左右两侧使用16kHz FCLK 和4个16位插槽。 因此,BCLK =16e3*8*16 =2.048 MHz。 PDMCLK_DIV 设置为 PDM 时钟为768_kHz。

    我们还尝试断开 MIC1和 MIC7麦克风输出,并将 MIC7输出路由到以前连接了 MIC1的 PCM3180输入(PDMDIN1_GPI1)。 重复500Hz 测量,无任何软件修改。 开关中的 MIC1麦克风读数(因此 MIC7的实际信号)不会相移。

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

    我们在 左右两侧使用16kHz FCLK 和4个16位插槽。  因此,BCLK =16e3*8*16 =2.048 MHz。  PDMCLK_DIV 设置为 PDM 时钟为768_kHz。

    我们还尝试断开 MIC1和 MIC7麦克风输出,并将 MIC7输出路由到以前连接了 MIC1的 PCM3180输入(PDMDIN1_GPI1)。 重复500Hz 测量,无任何软件修改。 开关中的 MIC1麦克风读数(因此 MIC7的实际信号) 不会相移。

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

    我们在 左右两侧使用16kHz FCLK 和4个16位插槽。  因此,BCLK =16e3*8*16 =2.048 MHz。  PDMCLK_DIV 设置为 PDM 时钟为768_kHz。

    我们还尝试断开 MIC1和 MIC7麦克风输出,并将 MIC7输出路由到以前连接了 MIC1的 PCM3180输入(PDMDIN1_GPI1)。 重复500Hz 测量,无任何软件修改。 开关中的 MIC1麦克风读数(因此 MIC7的实际信号) 不会相移。

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

    这似乎证实了麦克风本身没有提供相移输出。  您是否使用了麦克风1的时钟?

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

    是的,我们 使用了 MIC1的时钟,因为我们没有更改时钟的路由。

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

    你好,还有什么想法可以尝试吗? 您的身边是否也有同样的经历?

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

    我会在几个小时内向您发送一些设置以供尝试

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

    您是否尝试过相位校准? 例如,对于通道8,您可以修改第0页上的寄存器0x63

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

    我已尝试设置100和255个值以注册0x63。 延迟按预期增加:通过这种方式,信道延迟调整为[0..255]/6.144MHz,因此可调最大延迟为41.5 usec,可按162 ns 的步长配置。 当 f_s=16kHz 时,我们有采样时间 T=62 usec。 因此,相位校准增加的延迟低于单个采样时间。 但我可以清楚地看到,如果我将值100和255设置为寄存器0x63,通道8将按预期延迟。

    6个样本意外延迟的原因还有哪些?

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

    您好,Roland,

    桑贾将在办公室外工作几天,我将作出答复。 您是否使用 PPC3配置寄存器设置? 这是目前为止为设备配置良好的最简单方法。 如果您没有访问权限,我可以授予您访问权限。  

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

    布莱恩

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

    选择第0页
    { 0x00,0x00 },
    //唤醒并启用 Areg
    { 0x02,0x81 },--
    // ASI 配置
    { 0x07,0x40 },--
    //ASI 主模式配置
    { 0x13,0x42},
    //PDM_CLK_DIV
    { 0x1f,0xb2 },
    //GPO1配置
    { 0x22,0x41 },
    //GPO2配置--
    { 0x23,0x41 },
    //GPO3配置
    { 0x24,0x41 },--
    //GPO4配置
    { 0x25,0x41 },--
    //PDMDIN1_GPI1/PDMDIN2_GPI2
    { 0x2b,0x45 },--
    //PDMDIN3_GPI3/PDMDIN4_GPI4.
    { 0x2C,0x67 },--
    //PDM 输入通道启用
    { 0x73,0xff },--
    //ASI 输出通道启用
    { 0x74, 0xff },

    这假设从模式的 BCLK 为2.046 MHz,I2S 为16位,16khx

    你能看到这一个是否有帮助。

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


    您好,


    根据你的提议,我作了以下修改:

     *添加了写入以寄存器0x00值0x00 (以前默认值为0x00)
     *为寄存器0x13值0x42添加了写入(以前默认为0x02,因此我们禁用了自动时钟配置)
     *修改后的写入寄存器0x1f 值0x2 (以前为0x42,更改保留位)
     *已删除设置 HPF 设置寄存器0x6b 值0x03
     *已删除相位校准寄存器0x63值0xff。
     *保留 PDM 输入校准寄存器0x3c,0x41,0x46,0x4b,0x50, 0x55,0x5a,0x5f,因为它们需要在 PDM 输入上运行。
     *保留至 I2S 插槽分配寄存器0x0F,0x10,0x11,0x12的通道,因为它们需要在 I2S 流中具有所需的通道。

    配置日志最终如下所示:
    [i]退出硬件休眠模式
    [i]选择第0页
    [D] I2C 写入地址=0x00数据=0x00
    [i]退出软件休眠模式
    [D] I2C 写入地址=0x02数据=0x81
    [i]设置 I2S 输出模式
    [D] I2C 写入地址=0x07 data=0x40
    [i] ASI 主模式配置
    [D] I2C 写入地址=0x13数据=0x42
    [i]将输入源 CH1..CH8配置为 PDM 输入
    [D] I2C 写入地址=0x3c data=0x40
    [D] I2C 写入地址=0x41 data=0x40
    [D] I2C 写入地址=0x46 data=0x40
    [D] I2C 写入地址=0x4b data=0x40
    [D] I2C 写入地址=0x50 data=0x40
    [D] I2C 写入地址=0x55 data=0x40
    [D] I2C 写入地址=0x5a 数据=0x40
    [D] I2C 写入地址=0x5f data=0x40
    [i]将 GPO1..4配置为 PDMCLK
    [D] I2C 写入地址=0x22 data=0x41
    [D] I2C 写入地址=0x23 data=0x41
    [D] I2C 写入地址=0x24 data=0x41
    [D] I2C 写入地址=0x25 data=0x41
    [i]将 GPI1..4配置为 PDMIN
    [D] I2C 写入地址=0x2b data=0x45
    [D] I2C 写入地址=0x2C 数据=0x67
    [i]启用 PDM 输入通道
    [D] I2C 写入地址=0x73 data=0xff
    [i]将 CH5,6,7,8配置为向右1-2-3-4
    [D] I2C 写入地址=0x0F data=0x20
    [D] I2C 写入地址=0x10 data=0x21
    [D] I2C 写入地址=0x11 data=0x22
    [D] I2C 写入地址=0x12 data=0x23
    [i]启用 I2S 通道插槽
    [D] I2C 写入地址=0x74 data=0xff
    [i]设置 PDMCLK 分隔器
    [D] I2C 写入地址=0x1f data 0xb=2
    [i]启动 PDM 频道
    [D] I2C 写入地址=0x75 data=0x60
    [i]自动检测 FSYNC
    [D] I2C 读取地址=0x15 data=0x16


    现在我收到 I2S 流中的所有零。
    如果我重新启用寄存器0x13默认值0x02的自动时钟配置,我将像以前一样接收音频数据。
    我认为这个问题不是由全局时钟配置引起的,因为它只影响 PDM 麦克风输入7和8。

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

    明天将作出答复

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

    猜测,小数筛选器可能导致6个样本延迟。 让我们尝试一下下面的内容,看看它是否起作用。

    1.0x6c   0x00     双四路开关

      0x6B   0x21     超低延迟滤波器

      

    2.我看到以下用于8麦克风输入的计时。 让我们尝试接近这一点的时机。 PDM CLK=64*FS,用于 FS=16k PDMCLK=1.024 MHz。 让我们尝试一下1.5Mhz

    0x1f  0x41

    我们还可以测试下表中的时间安排。 您可以在全新的 EVM 中尝试这些更改。

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

    你好,谢谢。 关闭注册为0x6c = 0x00的双四屏显示 ,延迟消失。

    令人感兴趣的是,只有7-8个频道受到影响。 解释见手册表15。 这说明了默认的四通道配置2 (每个通道2个四通道),筛选器分配给通道1-6,而此设置不为通道7-8分配四通道。

    因此,我们要么禁用生物群,要么使用设置1 (每个通道1个生物群),因为它支持所有8个通道。 然后没有相位问题。

    问题由此得到解决。 感谢您的支持。