网站首页 > 技术文章 正文
之前获得过adc的采样结果了,但是直接获得的信号往往都伴随有噪声,因此一般需要加一个滤波过程。
本次就尝试添加一个简单的数字滤波器。
获得fir滤波器
首先是get到我们的滤波器。滤波器设计是一个复杂的问题,本次就先利用matlab的滤波器设计工具箱fdatool来获得一个fir滤波器。
在matlab的shell里键入fdatool,打开图形窗口
设置好想要的滤波器类型,截止频率以及你的采样频率
我们获得了这个低通滤波器的FIR系数,
对FIR滤波器来讲,系数就是单位脉冲响应。
若想对信号进行滤波,我们需要将这个信号与被处理的信号进行卷积。
不过我们不必自己写卷积或者fft,stm32f10x系列的库中已经帮我们实现了相应的过程。
将滤波器导入keil
Keil里面已经包含了DSP(数字信号处理)的库,其路径如下
我们在keil中打开run-time environment
勾选上DSP
Keil中也有fir的例程,我们可以参考例程来实现自己的fir滤波
程序编写
例程的开头引用了
#include "arm_math.h"
不过我们在引用时需要添加对应内核的宏定义,不然会报错
主函数中包含了初始化和每次的调用
其中S是fir的实例,我们也在前面定义一个即可
arm_fir_instance_f32 S;
在初始化函数中Num_Taps 是滤波器点数,firCoeffs32是滤波器系数数组的指针,firStateF32则是状态缓冲数组的指针。照猫画虎给他弄一个类似的初始化函数,只是参数改成我们需要的。
再来看下对数据的处理
例子中是用了两个指针,每次循环都让指针偏移blockSize
对于我们来讲是在实时处理ADC的数据,所以可以让ADC写满一个数组,滤波一次,重新写满,滤波,如此操作
我的思路是用一个输入缓冲区保存每次读出的电压值,同时发送一个输出缓冲区的数
每次循环时,firInput写入一个数,同时firOut的一个数被发出,当完成一个BLOCK_SIZE后归零,firOut被写入新的fir滤波结果,就是上一个周期获得的firInput的输入的滤波结果。
可以看出串口每次发送的输出数据是滞后firInput一个完整的BLOCK_SIZE周期。
下载程序可以看的滤波后的效果
- 上一篇: 深入剖析C++音频信号处理:ASL库的高级应用与实践
- 下一篇: 关于分频音箱问题的非专业理想解决方案
猜你喜欢
- 2024-11-03 正点原子开拓者FPGA开发板资料连载第五十二章 低通滤波器实验
- 2024-11-03 图像频域及滤波处理 图像频域滤波变换的实验报告
- 2024-11-03 低通滤波和高通滤波的截止频率设定思路
- 2024-11-03 「科唛小课堂」如何解决录制的爆音、喷麦声?
- 2024-11-03 「正点原子NANO STM32开发板资料连载」第三十二章 DSP 测试实验
- 2024-11-03 最好的频谱分析仪基础知识 频谱分析仪的作用与性能
- 2024-11-03 OER的几何重构 几何分解重构图
- 2024-11-03 关于分频音箱问题的非专业理想解决方案
- 2024-11-03 深入剖析C++音频信号处理:ASL库的高级应用与实践
- 2024-11-03 耳朵为啥老是嗡嗡响:看看你中了几条
你 发表评论:
欢迎- 02-20利用神经网络模型检测摄像头上的可疑行为
- 02-20直击心灵:高频核心听力你了解吗?_高频听力的正常范围值是多少
- 02-20YOLOv8 POSE+XGBoost进行人体姿态检测
- 02-20100个篮球英文术语详细解释,从此听懂NBA解说
- 02-20最全紧固件中英文对照,外贸必备词典一
- 02-20带你开发一个视频动态手势识别模型
- 02-20详细介绍一下Java基础中HashMap如何进行扩容操作?
- 02-20GTX 1070 Ti显卡评测:你会购买哪一款?
- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)