基于STM32f3的FIR应用测试分析

工具和简介
目的:利用仿真软件系统结合窗函数法设计一个数字带通FIR滤波器 。通过的DSP模块实现移植应用,测试分析其运行效率等,并将其运行结果同运行结果比较,分析其可靠性 。
测试数据:声波笔捕捉帧数据(f:80KHz;fs:2.5MHz)并混合入高频和低频噪声 。
测试版本:;
测试单片机:
Keil版本:KeilV5.10.0.2
版本: V4.16.0
STM32库版本:.6.0
MCU工作频率:72MHz
内核设计
如下图,运行,在命令窗口输入,并回车启动 。
界面
界面如下图所示,FDA Tool界面总共分两大部分,一部分是 ,在界面的下半部,用来设置滤波器的设计参数,另一部分则是特性区,在界面的上半部分,用来显示滤波器的各种特性 。部分主要分为:
type(滤波器类型)选项,包括(低通)、(高通)、(带通)、(带阻)和特殊的fir滤波器 。
(设计方法)选项,包括iir滤波器的(巴特沃思)法、 type i(切比雪夫i型)法、type ii(切比雪夫ii型) 法、(椭圆滤波器)法和fir滤波器的法、least-(最小乘方)法、(窗函数)法 。
order(滤波器阶数)选项 , 定义滤波器的阶数,包括 order(指定阶数)和 order(最小阶数) 。在 order中填入所要设计的滤波器的阶数(n阶滤波器 ,  order=n-1),如果选择 order则根据所选择的滤波器类型自动使用最小阶数 。
选项,可以详细定义频带的各参数,包括采样频率fs和频带的截止频率 。它的具体选项由 type选项和 选项决定 , 例如(带通)滤波器需要定义(下阻带截止频率)、(通带下限截止频率)、 (通带上限截止频率)、(上阻带截止频率),而(低通)滤波器只需要定义、 。采用窗函数设计滤波器 时,由于过渡带是由窗函数的类型和阶数所决定的 , 所以只需要定义通带截止频率 , 而不必定义阻带参数 。
选项,可以定义幅值衰减的情况 。例如设计带通滤波器时,可以定义(频率处的幅值衰减)、wpass (通带范围内的幅值衰减)、(频率处的幅值衰减) 。当采用窗函数设计时,通带截止频率处的幅值衰减固定为6db,所以不必定义 。

基于STM32f3的FIR应用测试分析

文章插图
界面
本设计中 , 首先在 type中选择(带通滤波器);
(1)在 选项中选择fir (fir滤波器窗函数法),接着在 选项中选?。?
(2)指定 order项中的 order=100;
(3)由于采用窗函数法设计,只要给出通带下限截止频率fc1和通带上限截止频率fc2,选取fc1=79.,fc2=80.001 KHz 。
(4)设置完以后点击 即可得到所设计的fir滤波器 。
(5)通过菜单选项可以在特性区看到所设计滤波器的幅频响应、相频响应、零极点配置和滤波器系数等各种特性 。设计完成后保存为“nh.fda”文件,并通过依次点击“File—— M-File”生成为M文件保存为“nh.m”,以便调用 。
在设计过程中 , 可以对比滤波器幅频相频特性和设计要求,随时调整参数和滤波器类型,以便得到最佳效果,并通过第5部保存和生成M文件 。其它类型的fir滤波器和iir滤波器也都可以使用来设计 。
【基于STM32f3的FIR应用测试分析】通过设计内核
其幅频曲线如下 。
幅频曲线
其相频特性如下
相频特性内核调用和测试
内核调用:在中,按“Ctrl+N”新建M文件 , 编辑代码,本测试代码如下 , 具体见附件” fir3.m “ 。
测试代码
第一行中,”clc“清空命令窗口 , ”close all“ 清空多余窗口,clear清空工作空间 , 
基于STM32f3的FIR应用测试分析

文章插图
在导入输入信号中所导入的信号为声波笔捕捉帧数据(f:80KHz;fs:25MHz) , 从中选取一个通道数据 。
所加高频噪声信号为,低频5Khz 。
测试结果如下图所示
测试结果STM32移植内核
运用生成Keil工程 , 具体配置见“附件\.4\demo.ioc”,并用Keil打开所生成的工程“附件\.4\MDK-ARM\demo.” , 
Keil工程
如上图所示,在“附件\.4\App\app.c”中,常量为FIR滤波器内核 , 其来自设计,运行测试文件” fir3.m “后 , 在工作空间中双击变量可在变量编辑器查看,在“附件\.4\App\.c”中,a1常量为测试数据,其来自设计中添加噪声后信号,运行测试文件” fir3.m “后,在工作空间中双击put变量可在变量编辑器查看 。如下图所示 。
内核和测试数据
整个程序运行流程如下图所示
STM32程序运行流程
运行结果通过串口输出,如下图所示,运行结果 。
串口输出结果
可通过发送“@IN#”、 “@OUT#”、 “@HE#”,分别获取输入测试波形、输出滤波结果、内核数据 , 再将其导入生成波形同结果比较 。其结果如下图所示
Stm32执行结果分析下载