[STM32F4] STM32F4 基于FPU使用FIR滤波

[复制链接]
897|13
 楼主| xiaoqi000 发表于 2023-6-29 01:45 | 显示全部楼层 |阅读模式
Matlab生成参数

通过指令在 matlab 中进入filterDesigner

69745649c7172a9002.png


filterDesigner 界面

93921649c718111ce2.png


然后按照自己的需求配置

在配置完成后,点击窗口下面的“设计滤波器”。
 楼主| xiaoqi000 发表于 2023-6-29 01:45 | 显示全部楼层
在编辑结束后点击生成C头文件

20167649c71b5440f5.png
 楼主| xiaoqi000 发表于 2023-6-29 01:45 | 显示全部楼层
按照需求配置

60847649c71c5c229b.png
 楼主| xiaoqi000 发表于 2023-6-29 01:47 | 显示全部楼层
最终会生成一个装了参数的头文件
42969649c720f3cd8c.png
 楼主| xiaoqi000 发表于 2023-6-29 01:47 | 显示全部楼层
单片机导入DSP
在我之前写的文章中有说明
https://blog.csdn.net/cusichidouren/article/details/126178664
 楼主| xiaoqi000 发表于 2023-6-29 01:47 | 显示全部楼层
单片机上的操作
函数说明
进行FIR滤波我们需要两个函数:初始化函数和计算函数

初始化函数: 9273649c722fb483c.png
 楼主| xiaoqi000 发表于 2023-6-29 01:47 | 显示全部楼层
其中:
初始化结构体需要用户自己定义,初始化函数会往里装初始化参数
参数数组就是前面用matlab生成的数组,
缓存地址需要用户自己定义。
用户定义一个长度为参数长度 + 数据长度 - 1的数组,其首地址就是缓存地址。
计算函数: 24064649c724545138.png
 楼主| xiaoqi000 发表于 2023-6-29 01:47 | 显示全部楼层
其中:
计算函数会按照初始化结构体里的参数进行计算
要保证输入输出数组的长度相同
 楼主| xiaoqi000 发表于 2023-6-29 01:48 | 显示全部楼层
使用实例 15642649c725a5b1c3.png 48914649c725f71c04.png
 楼主| xiaoqi000 发表于 2023-6-29 01:48 | 显示全部楼层
实际使用的注意事项
堆栈空间问题
进行滤波计算时会需要很大的空间,
尽量将上面用到的长数组定义为静态变量,
以节省堆栈空间,防止程序跑飞。
Clyde011 发表于 2024-1-23 15:24 | 显示全部楼层

这样可以获得更光滑的表面。
万图 发表于 2024-1-23 17:20 | 显示全部楼层

是因为它作用是起到抑制,多应用于开关电源电路中
Uriah 发表于 2024-1-23 18:23 | 显示全部楼层

对于标准PCB设计,c形孔的最小直径为0.5mm,
xdvca 发表于 2024-7-31 23:40 | 显示全部楼层
在 filterDesigner 界面的左上角,你会看到一个“Filter Type”或“Design Filter”选项。点击此选项,你可以选择不同类型的滤波器,如低通、高通、带通、带阻等。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

67

主题

821

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部