网站首页 > 技术教程 正文
之前获得过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周期。
下载程序可以看的滤波后的效果
猜你喜欢
- 2024-11-06 基于MATLAB的刀具角度测量 matlab测工件尺寸
- 2024-11-06 「三十一」MATLAB图像变换之傅里叶变换
- 2024-11-06 「三十三」MATLAB图像变换之Radon变换(R变换)——投影重建图像
- 2024-11-06 「MATLAB数据导入与分析」MATLAB: 使用内存映射加快文件读写
- 2024-11-06 利用边缘检测计算物体面积(内含源码)
- 2024-11-06 自动驾驶毫米波雷达物体检测技术-算法
- 2024-11-06 基于粒子滤波器的电池剩余使用寿命计算matlab仿真
- 2024-11-06 「二十」MATLAB图像处理之六 matlab怎么做图像处理
- 2024-11-06 matlab程序, 脉冲波合成与提取,滑冲效应、方向性效应
- 2024-11-06 《基于PLE结合卡尔曼滤波的RSSI定位算法matlab仿真》基于PLE
你 发表评论:
欢迎- 最近发表
-
- PPT中动作连贯的卡通人物,我集齐了100套
- 成都13岁女孩手绘逐帧动画走红 网友:这是天赋型选手
- Android主流UI开源库整理(android完整开源项目)
- 达芬奇更新啦!DaVinci Resolve Studio 20.0.1
- LM Studio-本地安装大模型 | OpenAI API 文字转语音本地运行程序分享
- lululemon律动快闪 多色系呈现夏季活力
- [AOA][分享]160503 智珉和偶吧玩起电影游戏 用一件衣服找回悸动
- Visual Studio 2022:一个功能全面且强大的IDE
- 纽约布什维克区艺术家工作室开放即将举行
- 从 CANopen到 PROFINET:网关助力物流中心实现复杂的自动化升级
- 标签列表
-
- sd分区 (65)
- raid5数据恢复 (81)
- 地址转换 (73)
- 手机存储卡根目录 (55)
- tcp端口 (74)
- project server (59)
- 双击ctrl (55)
- 鼠标 单击变双击 (67)
- debugview (59)
- 字符动画 (65)
- flushdns (57)
- ps复制快捷键 (57)
- 清除系统垃圾代码 (58)
- web服务器的架设 (67)
- 16进制转换 (69)
- xclient (55)
- ps源文件 (67)
- filezilla server (59)
- 句柄无效 (56)
- word页眉页脚设置 (59)
- ansys实例 (56)
- 6 1 3固件 (59)
- sqlserver2000挂起 (59)
- vm虚拟主机 (55)
- config (61)
本文暂时没有评论,来添加一个吧(●'◡'●)