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.

[参考译文] TAA5212:设置双二阶滤波器

Guru**** 2668435 points

Other Parts Discussed in Thread: TAA5212

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1572693/taa5212-setting-up-bi-quad-filter

器件型号:TAA5212


工具/软件:

大家好、我正在尝试使用 TAA5212 设置双二阶滤波器、以便在 20~100kHz 区域进行一些滤波。

我使用 STM32L4 微控制器的 Sai 接口驱动 TAA5212。
使用 187.5kHz 作为采样频率和 12MHz BCLK。

我可以读取原始信号只是很好、但我从来没有注意到滤波器的影响、是否有人可以查看我的寄存器设置并告诉我的做法有误。

寄存器设置代码:

writeByte(0x00, 0x00); // set page 0
writeByte(0x01, 0x01); // software reset
ThisThread::sleep_for(3); // device settle time after power on / reset


writeByte(0x02, 0x09); // Wake up with AVDD > 2v and all VDDIO level
ThisThread::sleep_for(3); // device settle time after wake


writeByte(0x10, 0x50); // Configure DOUT as Primary ASI (PASI) DOUT
writeByte(0x19, 0x00); // 1 data input and 1 data output for PASI
writeByte(0x1A, 0x70); // PASI I2S, 32 bit format

writeByte(0x50, 0x50); // ADC Ch1 single ended, mux inp1, 10KOhm, ac-coupled, 1Vrms

writeByte(0x76, 0x80); // Enable Input Ch1, disable output channels

// Set up filters before powering up any adc channel 30kHz low pass
writeByte(0x00, 0x08); // set page 8

writeByte(0x08, 0x2e); // N0 = 0x2e8f9340
writeByte(0x09, 0x8f);
writeByte(0x0A, 0x93);
writeByte(0x0B, 0x40);

writeByte(0x0C, 0xd1); // N1 = 0xd1706cc0
writeByte(0x0D, 0x70);
writeByte(0x0E, 0x6c);
writeByte(0x0F, 0xc0);

writeByte(0x10, 0x2e); // N2 = 0x2e8f9340
writeByte(0x11, 0x8f);
writeByte(0x12, 0x93);
writeByte(0x13, 0x40);

writeByte(0x14, 0x11); // D0 = 0x114fb4c0
writeByte(0x15, 0x4f);
writeByte(0x16, 0xb4);
writeByte(0x17, 0xc0);

writeByte(0x14, 0xE8); // D0 = 0xe8611cc0
writeByte(0x15, 0x61);
writeByte(0x16, 0x1c);
writeByte(0x17, 0xc0);

writeByte(0x00, 0x00); // set page 0 again
writeByte(0x72, 0x08); // No HPF enable 1 biquad

writeByte(0x78, 0xa0); // Power up ADC and MICBIAS

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

    您好 Rob、

    我们的一位专家正在 研究这一主题、并将很快做出回应。

    此致、

    Garret

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

    您好 Rob、

    对滤波器的系数进行解构有点困难、因此我将解释我获取系数的步骤。 首先、您可以使用 TIBQ 工具(可从此处下载): https://www.ti.com/tool/COEFFICIENT-CALC 

    该 GUI 允许您选择所需的任何类型的滤波器、选择双二阶系数中使用的位数以及采样率、然后它会生成所需的系数。 对于二阶、所有 N0、N1、N2、D1 生成 D2 系数、对于一阶、将 0 替换为 N2 和 D2。 确保系数为 32 位且采样率设置为您的值! 以下是使用 GUI 生成 30k LPF 得到的一些示例值:

    如果用这些替换当前系数、会有帮助吗? 否则、我可以更深入地查看您的代码并在下周进行测试。

    此致、
    Mir

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

    尊敬的 Mir:

    感谢您对此进行研究、并向我们介绍 TIBQ 工具。
    我们用您的系数替换了当前系数、遗憾的是我们没有看到任何效果。

    如果我可以提供或尝试任何其他测试或设置、请告诉我。

    此致、

    Rob

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

    您好 Rob、

    在设置双二阶滤波器之前、您是否可以尝试移动线路设置寄存器 0x72? 此外、您使用什么信号进行测试、通过查看/侦听哪些信号来确定滤波器的效果? 我知道通常 AP GUI 会在 20k 左右停止、需要手动扩展 FFT 示波器的范围以查看上述频率。 您是用噪声还是频率扫描进行测试? 由于 30k 高于人类听力、因此您将无法听到这种变化、这将是一种 FFT 或色谱图效应。  

    此致、
    Mir

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

    尊敬的 Mir:

    在设置双二阶滤波器之前、我们移动了线路设置寄存器 0x72、但仍然没有结果。 我们还将 ADC 通道 1 带宽选择更改为 96kHz 模式(寄存器 0x50)。

     

    我们通过测量 16384 值并使用 Matlab 计算 FFT 来检查结果。 当我们使用截止频率为 25kHz(第一个图)的可编程 HPF(因此无双二阶滤波器)时、我们可以看到预期的响应。 但是、当我们将可编程 HPF 设置为默认值并尝试使用代码片段中所示的双二阶滤波器时、根据数据表、我们无法获得预期的响应。 除 HPF 外、没有滤波。 结果如图所示(第二个图)。 结果显示了我们输入您给出的系数时的响应。 开启或关闭双二阶滤波器完全没有影响。 它们似乎被完全绕过。

     

    请注意、我们测量的是可用空间、因此没有任何输入音调。 这就是信号如此弱的原因。 不过、这一点无关紧要、如第一个图所示。 我们肯定应该看到滤波器响应。  



    具有自定义系数的内置 HPF(非双二阶滤波器)


    使用给定系数启用 1 个双二阶滤波器的默认 HPF

    此致、

    Rob

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

    您好、

    我注意到您设置 D0 两次、而不是设置 D1 和 D0、因此这可能是其他需要更改的地方。 「我知道,我知道你想要我。 我能够让所有这些滤波器以 96kHz 采样率及以下工作、但在 176.5 或 192kHz 下、滤波器没有什么区别。  

    ^在 187.5k 下运行脚本后、我们看到没有变化

    我在 48K 或 96k 时看到了滤波器的效果。 我针对多个不同的采样率执行了 10kHz LPF。 我将在这里包含我的脚本、唯一更改的是寄存器 0x50、将其置于宽带模式、并更改滤波器系数。 我获得了 TIBQ 工具的所有系数。

    w a0 00 00 # // set page 0
    w a0 01 01 # // software reset
    d 03
    
    w a0 02 09 # // Wake up with AVDD > 2v and all VDDIO level
    d 03
    
    w a0 10 50 # // Configure DOUT as Primary ASI (PASI) DOUT
    w a0 19 00 # // 1 data input and 1 data output for PASI
    w a0 1A 70 # // PASI I2S, 32 bit format
    
    w a0 50 50 # // ADC Ch1 single ended, mux inp1, 10KOhm, ac-coupled, 1Vrms
    w a0 50 61 #wide band, 40k input impedance
    
    
    w a0 76 80 # // Enable Input Ch1, disable output channels
    
    # // Set up filters before powering up any adc channel 30kHz low pass
    w a0 00 08 # // set page 8
    
    # MULTIPLE FILTER TRIES:
    # w a0 08 12 99 b4 44 12 99 b4 44 12 99 b4 44 2a f1 85 18 df b6 24 be
    # w a0 08 00 00 10 fe 00 00 10 fe 00 00 10 fe 7f bd f7 29 80 83 cd b3
    # w a0 08 09 3e c0 f5 09 3e c0 f5 09 3e c0 f5 46 fc c7 51 cd 0b 6d 86
    # w a0 08 02 e3 5f e4 02 e3 5f e4 02 e3 5f e4 62 12 29 08 b0 4e 2e 5d
    # w a0 08 02 c4 72 a8 02 c4 72 a8 02 c4 72 a8 62 c1 ca 18 af 6a a1 2c
    w a0 08 00 08 92 e7 00 08 92 e7 00 08 92 e7 7d 09 e0 f3 85 c9 f2 7e 
    
    
    w a0 00 00 # // set page 0 again
    w a0 72 08 # // No HPF enable 1 biquad
    w a0 78 a0 # // Power up ADC and MICBIAS
    
    
    
    

    我已经询问了我们团队中的双二阶专家有关高采样率问题的信息。 我会让你知道我的发现。

    此致、
    Mir

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

    尊敬的 Mir:

    我想知道您是否有机会向 双二阶专家咨询该问题?

    此致、

    Rob

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

    您好 Rob、

    我问了,但没有听到回来,现在你再次问他是不在办公室。 我会向其他人提出要求、并将此作为一个更高的优先事项、以便为您提供答案。 这似乎是一个宽带特定的问题。

    -米尔