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.

[参考译文] TLV320AIC3254:如何动态更改滤波器系数

Guru**** 2482105 points


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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/857649/tlv320aic3254-how-to-change-filter-coefficients-on-the-fly

器件型号:TLV320AIC3254

你(们)好

我们对如何动态更改滤波器系数有疑问?

如果我们有两个滤波器系数、让我们调用 COEFF_1和 COEFF_2。

您能否检查以下顺序是否正确?

1. 启用自适应滤波。

2. 将 COEFF_1写入缓冲器 A 和缓冲器 B

3. 为 ADC 加电

如果我们要更改为 COEFF_2:

 切换缓冲器命令

5. 将 COEFF_2写入缓冲器 A

 6.切换缓冲器命令

7. 将 COEFF_2写入缓冲器 B

如果我们要更改为 COEFF_1:

 8.切换缓冲器命令

9. 将 COEFF_1写入缓冲器 A

 10.开关缓冲器命令

11。 将 COEFF_1写入缓冲器 B

谢谢。

BR

Trevor

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

    尊敬的 Trevor:

    系数缓冲区处理在 DSP 加电和断电模式之间是不同的。 在加电模式下、Banka 和 Bankb 都指向同一个缓冲器。  

    原因在系数 RAM 访问机制应用手册中进行了解释。

    您提到的前三个步骤是正确的。 但是、要更改为 coeff、需要执行以下步骤

    4.     将 COEFF_2写入缓冲器 A

         5.切换缓冲器命令

    6.     检查缓冲器开关是否完成

    7.     将 COEFF_2重新写入缓冲器 A

    流程图如下所示。 这来自文档的图5。

    要改回 COEFF_1、需要遵循与上述相同的步骤。 写入系数、开关缓冲器、检查缓冲器开关是否完成并重新写入系数。

    此致。

     

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

    尊敬的 Diljith:

    我们不使用 mini-DSP 函数、只需使用 ADC 自适应滤波。

    A。 请帮助您仔细检查前四个步骤是否正确?

       1. 启用自适应滤波。

       ADC 信号处理块 PRB_P2

       3. 将 COEFF_1写入缓冲区 A 和缓冲区 B

       4. 为 ADC 加电

    b.更新滤波器系数时、我们会感到困惑:

       请参考以下寄存器、默认 D1位为0、似乎只能访问缓冲区 B、为什么可以在步骤4中访问缓冲区 A???

       

    谢谢。

    BR

    Trevor

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

    尊敬的 Trevor:

    感谢您说明您使用的是 PRB 模式。 之前的帖子中解释的行为也适用于 PRB 模式。

    前四个步骤是正确的。 有关第二个问题的详细信息、请参阅 第2.2.3节 ADC 通道自适应系数 RAM 访问机制应用手册。 基本上、在加电模式下、如果 P8_R1_B1 = 0、I2C 写入缓冲器 A、缓冲器 B 进入缓冲器 B。 相反、如果 P8_R1_B1 = 1、则 I2C 写入缓冲器 A、缓冲器 B 进入缓冲器 A。

    因此、在上电模式下 、写入始终会进入 PRB 或 DSP 未使用的缓冲区。 使用缓冲区 A 地址或缓冲区 B 地址会产生相同的结果、如图所示。

    下一步是切换缓冲区、执行此步骤会导致缓冲区切换、并且 PRB/DSP 开始使用新写入的系数值。

    最后一步(将新的系数值重新写入其他缓冲区)可确保缓冲区 A 和缓冲区 B 都具有匹配的值。

    如果值不匹配、则会导致 ADC 关闭后再打开时行为不正确。

    此致。

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

    尊敬的 Diljith:

    因此、我只需要在第3步将系数写入缓冲器 B (第26 ~34页)。 对吗???

       1. 启用自适应滤波。

       ADC 信号处理块 PRB_P2

       3. 将 COEFF_1写入缓冲区 A 和缓冲区 B

       4. 为 ADC 加电

       5. 将 COEFF_2写入缓冲器 A

        6.切换缓冲器命令

       7. 检查缓冲器开关是否完成

       8. 将 COEFF_2重新写入缓冲器 A

    谢谢。

     

    BR

    Trevor

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

    尊敬的 Trevor:

    这是不正确的。 由于 ADC/DSP 断电、缓冲器 A 和缓冲器 B 都必须写入。

    当 ADC 断电时、它不使用任何缓冲器。 这两个缓冲器都可以从主机写入。 这就是您应该同时写入缓冲器 A 和缓冲器 B 的原因  

    该规则的简化表述如下:

    (1)如果 ADC/DSP 断电、则同时更新缓冲器 A 和缓冲器 B

    (2)如果 ADC/DSP 上电、则更新缓冲器 A、开关缓冲器、重写缓冲器 A

    此致。

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

    尊敬的 Diljith:

    感谢您的帮助、

    能否帮助我检查以下顺序是否正确???

       1. 为 ADC 断电

       2. 启用自适应过滤。

       3、ADC 信号处理块 PRB_P2

       //更新 COEFF_1

       4. 将 COEFF_1写入缓冲器 A缓冲器 B

       5. 为 ADC 加电

     //更新 COEFF_2

       6. 将 COEFF_2写入缓冲器 A

        切换缓冲器命令

       8. 检查缓冲器开关是否已完成

       9. 将 COEFF_2重新写入缓冲器 A

     

    谢谢。

    BR

    Trevor

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

    尊敬的 Trevor:

    是的。 这看起来是正确的。

    此致。

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

    尊敬的 Diljith:

    感谢你的帮助。

    BR

    Trevor