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.

[参考译文] TM4C1294NCPDT:数字数字滤波器-在 TM4C 中实现 FIR 和 IIR

Guru**** 2442090 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/628750/tm4c1294ncpdt-digital-numeric-filters---implementing-fir-and-iir-in-tm4c

器件型号:TM4C1294NCPDT

先生们:

我们的应用程序读取速率约为2000Hz 的加速计。 涉及到很多机械噪声、我们需要应用数字滤波器。 滤波后的值是必需的"实时"值、如从连续采样值流中获得的值所示。

首先、我想了解有关在 TM4C 器件中实现滤波器的建议、并更好地了解性能限制、方便的滤波器类型、可用库等。

此致

布鲁诺

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    可能需要注意的是、"将您的搜索局限于"仅限供应商器件"可提供(少量)优势(您是一名熟练的编码器)、同时显著限制您的"调查范围和覆盖范围!"

    主题被广泛涵盖、但(很少)正如您的"第一思想"所暗示的那样"缩小"。

    也许这种方法"什么 MCU 特性最适合"支持/速度/易用性"数字滤波器的设计和开发"具有高价值?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    正如承诺的那样、我用于单极低通 IIR 的方法

    给定新值 val、中间存储的滤波器值 valf 和移位值 t、然后我使用以下伪代码

    模拟滤波器(模拟 val、filter_inter valf、filter_TM t)
    {
    valf -= valf >> t;
    valf += val <<(过量位- t);
    
    返回 valf >> eUS_bits;
    }
    

    定义过量位是为了使大小为模拟值的整数在由过量位向左移位时适合大小为 filter_inter 的整数范围内

    即、如果 ANALOG 为12位且 FILTER_INTERMED 为31位、则多余位为多余位为19。

    必须将 T 限制为<=过量位

    这实现了单极 IIR 滤波器

    filtered_val = previous_filtered_val * a + new_val * b;

    其中 a+b =1.0;a =1/(2^t)

    它确实起作用、它只是进行一些思考以了解它是如何工作的。 在电子表格中轻松进行仿真。 乘法器对2次幂的限制比首次出现的限制要小。 我发现2次幂之间的阶跃并不重要。 更重要的是、t 被限制为最多为过量位、 在 ARM 这样的32位架构上、问题要小得多、其中标准 int 大小为32、即使将16位用于模拟值、滤波器仍然有15位、这是相当重要的。

    单极 IIR 滤波器的行为与简单的 RC 滤波器类似(请 参阅#Bookshelf 参考指南至 DSP... 如何计算时间常量*),使其行为直观明显。 这种实现只需要移位、加法和减法、因此非常高效。

    整数滤波器(也在基准中表示)的常见抱怨是、在无噪声环境中、它们可以在不达到实际稳定状态的情况下进行自降。 通过将最佳除法放置在截止频率以下(始终向右移)、此实现避免了这种情况。 与噪声之间的关系、我没有看到这方面的实际问题。

    当然、这缺少您在实际实施中可能提供的保护和/或抽象。

    Robert

    一个侧注通过。 如果您的输入小于模拟大小、则在移位后、标准化为模拟并通过 IIR 滤波器、实际上可以获得分辨率。 通常情况下、噪声太高、无法实现这一点、但这是可能的。

    *作为一个指示、我有一个采样频率为10kHz、t 为12的实现、我得到一个~400ms 的时间常数

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

    当然也可以考虑这种方法。 作为考虑因素的初始设置、我要说的是、满足该目的的"最佳 MCU":

    -需要一个足够快的时钟来执行所需的计算、而不会影响应用的其余部分、同时仍提供一些安全系数。
    -必须具有适合任何数据采集方法的外设、如果可能、在串行通信的情况下、使此类外设在传输期间不会保持 CPU 处理。
    -有足够的端口与所需的传感器通信。
    -以与开发客户掌握的技术兼容的包装格式提供。
    -如果可能,请成为开发人员熟悉的系列的一部分,以便于编程/开发。
    -易于购买。

    我们的同事还能添加什么内容?

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

    @Bruno

    我的帖子中的任何内容都不是以任何方式/方式"贬低"朋友 Robert 提供的宝贵贡献(经常)。

    相反,它的目的是"更广泛地确定关键/关键问题","严格限制(任何)特定装置"不可能完全涵盖这些问题。 (特别是一个"向下油门"至120MHz -和(位)"齿长"。)

    Robert 的"单极、低通、IIR 滤波器"可能会(很好)"填满您的账单"-但可能会延迟和/或延迟您的调查-这可能会识别(其他)滤波方面-而不是"发挥作用"-就在这里-现在!   (这可能证明是很有用的-尤其是当您的使用/应用"偏离"罗伯特的用途时...)