FIR滤波器实践-基于ARM CMSIS-DSP库

FIR滤波器实践-基于ARM CMSIS-DSP库

一、CMSIS-DSP库介绍

    CMSIS-DSP库是ARM官方提供的数字信号处理库,包含了大量常用的数字信号处理算法,如快速傅里叶变换(FFT)、FIR滤波、自适应滤波器等等。由于是ARM官方提供,因此可以适配Cortex-A、Cortex-R、Cortex-M三种内核的单片机,典型的如Cortex-M内核的STM32单片机。CMSIS-DSP通常在安装Keil的时候会自动安装在keil根目录下的ARM文件夹下,采用不同的软件有不同的库包含方法,可以去百度看看。库的包含非常简单,这里也不做介绍。

二、Q15格式介绍

    Q15是最常见的浮点转定点的数据格式,Q15数据格式根据定义是长度为16位的数据,其中最高位为符号位,后面15位为小数位。Q15格式下的0x1111(十进制为4369),二级制数据为0001 0001 0001 0001,根据Q15的定义,最高位为符号位,0代表正数,后续位为小数位,计算过程如下
1 ∗ 2 − 3 + 1 ∗ 2 − 7 + 2 − 11 + 2 − 15 = 0.1333312988 1*2^{-3}+1*2^{-7}+2^{-11}+2^{-15}=0.1333312988 123+127+211+215=0.1333312988
    Q15数据格式本质是将小数左移15位,即扩大 2 15 2^{15} 215变成一个整数进行运算,0x1111为十进制数4369,Q15对应下的小数为 4369 / 2 15 = 0.1333312988 4369/2^{15}=0.1333312988 4369/215=0.1333312988 。对于没有浮点运算单元(FPU)的单片机来说,将小数转换成浮点数可以显著提高计算效率。Q15格式下所能表示的整数数据范围为-32768 ~ 32767 ,对应的小数范围为-1 ~ 0.9999694824 。下面再举一个实际的例子,例如一个12bit的ADC采集到的电压数据为2369,其中参考电压为3.3V,则实际的电压为 2369 / 4096 × 3.3 = 1.908618164 2369/4096\times3.3=1.908618164 2369/4096×3.3=1.908618164V,现在需要对该电压缩小0.4倍,为了避免浮点运算,可以采用如下的计算方式
i n t ( ( 2369 ∗ Q 15 ( 0.4 ) ) > > 15 ) \rm int((2369*\rm Q15(0.4))>>15) int((2369Q15(0.4))>>15)

    其中, Q 15 ( 0.4 ) = 0.4 ∗ 2 15 = 13107.2 \rm Q15(0.4)=0.4*2^{15}=13107.2 Q15(0.4)=0.4215=13107.2,为了避免浮点运算,取整后为13107。由此,上式可以转换为

i n t ( ( 2369 ∗ 13107 ) > > 15 ) = 948 \rm int((2369*13107)>>15)=948 int((236913107)>>15)=948

    其中,int取整操作为单片机运算定点数时自动完成,现在可以计算一下948对应的真实电压值, 948 / 4096 × 3.3 = 0.7637695313 948/4096\times3.3=0.7637695313 948/4096×3.3=0.7637695313V,真实电压的0.4倍为0.7634472656V 。可以看到,

### CMSIS-DSP的功能 CMSIS-DSP是一个专为Cortex-M和Cortex-A处理器设计的嵌入式计算[^1]。该提供了广泛的信号处理函数,包括但不限于: - 数学运算:如平方根、快速傅里叶变换(FFT)等。 - 过滤器支持:实现FIR、IIR等多种类型的过滤算法。 - 统计分析工具:提供均值、方差等功能来帮助开发者进行数据分析。 这些特性使得CMSIS-DSP非常适合应用于音频处理、语音识别以及其他需要实时数据处理的应用场景中。 ### 如何使用CMSIS-DSP 对于想要利用此开展工作的工程师而言,可以从研究官方提供的文档入手,在`CMSIS/Documentation/DSP`路径下可以找到详细的说明资料[^2];而具体的编程实例则位于`CMSIS/DSP/Examples`文件夹内,这里包含了多个示范程序,有助于理解各个API的实际应用方式。此外,所有必要的头文件都存放在`CMSIS/DSP/Include`目录之中,方便使用者集成到自己的项目当中去。 要开始使用这个强大的DSP,建议按照以下方法获取并编译源码: 通过Git命令行工具从指定仓拉取最新版本的数据集,并进入相应的工作空间完成后续操作: ```bash git clone https://github.com/ARM-software/CMSIS-DSP.git cd CMSIS-DSP ``` 之后可以根据个人需求选择合适的构建脚本来生成目标平台所需的二进制文件[^3]。 ### 下载CMSIS-DSP的方法 除了上述提到的方式外,还可以直接访问托管于第三方代码共享服务平台上的压缩包链接来进行下载,例如可以在[此处](https://gitcode.com/open-source-toolkit/ae688)找到名为`CMSIS-DSP-main.zip`的资源包供离线安装之用[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值