ImageVerifierCode 换一换
格式:DOCX , 页数:2 ,大小:17.69KB ,
资源ID:1353840      下载积分:5 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-1353840.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(一种在STM32应用FIR滤波器的设计与实现.docx)为本站会员(h****)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

一种在STM32应用FIR滤波器的设计与实现.docx

1、一种在 STM32应用 FIR 滤波器的设计与实现 摘 要: STM32 微控制器是 ST 公司面向嵌入式应用领域开发的微控制器,它具有很高的性价比,由于内核不同,它的产品种类也不同,本文主要针对 STM32F4x 系列,利用 ST 公司的 DSP 函数库实现在 STM32 上运行有限单位冲激响应滤波器( FIR)的设计方法,实践表明, STM32F407 在开启浮点运算后可以流畅运行 FIR,满足微处理器对传感器信号进行滤波的要求。 下载 关键词: STM32 微控器 ;FIR 滤波器 ;设计 0 引言 在小型的嵌入式应用系统当中,微控制器的主要作用不仅是协调、 控制各个外围电路工作,有些系

2、统还需要微控制器运算一些算法,简单而有效的算法或者数字滤波器可以替代纯硬件电路,具有硬件电路少、成本低、故障率低的优点,但是有些算法规模和复杂程度较大,一般的微控制器如 8位、 16 位微控制器偏重于实时控制、寄存器较多,浮点运算能力很弱运行起来就显得特别吃力,而现阶段 ST 公司推出的 STM32 微控制器性能较为强劲,在保证实时性的情况下,也可以运行一些大型的数字滤波器和算法。 1 STM32F407 微控制器 STM32F407 是一种基于 ARM cortex-M4内核的 高性能微处理器,它是STM32F4 系列的中高端产品,具备 168MHz 主频下达到 210DMIPS 的性能,内

3、置 1MB闪存和 192KB的 SRAM。其内部资源比较丰富,具有 2个 USB2.0的 OTG,3个快速转换的 12位 ADC,相比上一代 ARM cortex-M3内核产品, STM32F407微控制器集成了单周期的 DSP 指令集和浮点运算单元 FPU,大大提高了微控制器在浮点运算的计算能力,配合 ST公司专为 STM32 微控制器开发的库函数,可以运行大型数学运算,提升了微控制器的执行效率和运行速度,节约项目开发成本和开发时间。 2 FIR 滤波器 在嵌入式应用领域中,微控制器不仅仅需要对传感器信号进行采集然后送入 A/D转换器进行处理,还要针对处理结果控制外围设备。在这个过程中,对于

4、传感器信号进行采集、滤波处理一般由外围电路组成,如常用的巴特沃斯滤波器、切比雪夫滤波器等,把经过滤波处理过的信号送入 A/D转换器,可以获得准确度较高的数据。而在实际应用中,某些外界因素对传感器的影响会使检测的模拟信号受到干扰,而这些干扰信号是可以利用数字滤波器滤除的,目前应用比较多的数字滤波器是无限冲激响应滤波器( IIR)和有限冲激响 应滤波器( FIR)两种, IIR 滤波器具有输入反馈,所以其输出值不仅要取决于当前输入值,还要取决于过去的输出值,那么理论上,这种滤波器的冲激响应是无限持续的,有不容易被设计的缺点。而 FIR滤波器不具有输入反馈,即输出值只取决于当前和过去的输入值,容易被

5、设计,但是同样功能的 FIR滤波器相比 IIR滤波器要复杂很多,系数更多,给原本就负担较重和实时性要求较高的微控制器增加致命的计算量,使系统的实时性降低。所以一些采用数字滤波器的系统,都会将计算数字滤波器的工作量交给其他微处理器运行,如 DSP 或者 FPGA,所以,本文 主要提出一种采用 STM32F407微控制器运行 FIR滤波器的设计方案,在运行一定量的采样率和阶数的 FIR 下保证系统实时性,满足控制系统的要求。 3 库函数中的 FIR 滤波器设计方法 要在 STM32F407 上利用 DSP 库运行 FIR,首先需要利用 Matlab 的工具箱FDATOOL 设计 FIR 滤波器,然

6、后生成滤波器所需的系数,为了增强其运算性能,还需要在程序中添加开启 FPU 的命令。 本设计利用 Matlab 设计一个带阻滤波器,所滤波信号由 10Hz 和 100Hz信号组成,截止频率 50Hz,采样 率为 1000Hz。为了更好的检测信号,防止能量泄露, FIR 选择窗函数、 hamming 窗减少旁瓣,由于 DSP 库中的 FIR 滤波器系数必须是 4的倍数,所以选择 200阶。设计好 FIR滤波器后生成系数,保存为数组形式或者头文件形式等待移植。 DSP 库中的 FIR 函数支持 Q7、 Q15、 Q31 和浮点四种数据类型,需要用到arm_fir_f32()函数,这个函数可以在 D

7、SP_Lib SourceFilteringFunctions 文件夹中的 arm_fir_32.c 找到,在使用函数前需要对该函数中的参数定义有所了解 。 阶数越高,系数越复杂, STM32F407 的运算时间越长。一般来讲,开启FPU 后的 STM32F407 运行 200 阶左右的 FIR 滤波器运算时间为毫秒级,是可以保证实时性的。 4 开启 FPU 的方法 早期的 STM32F4xx固件库中的 system_stm32f4xx.c文件默认禁用 FPU的,即在 CMSIS中没有定义 FPU,虽然文件中添加了 FPU相关代码,但是利用 MDK编译器执行过程中会产生错误,为保证系统准确运行

8、,可以在 system_init()函数中添加条件编译代码或者直接使用 FPU即可。如: #if ( _FPU_PRESENT = 1) ( _FPU_USED = 1) SCB-CPACR |= ( 3UL 10*2) |( 3UL 11*2) ; #endif 或者: #define _FPU_USED 1 两种方法不同,但是都需要对各个相关文件进行设置,只需根据相应的#define 命令查找定义即可设置,这里不再赘述。 需要注意的是,启用 FPU 不代表微控制器处理复杂运算就大大的提升效率了,这里还需 要对 ARM处理器的 math.h头文件进行替换,因为 math.h头文件中的运算函数

9、都是基于定点处理器和 IEEE-754 标准来运行的,想要提升微控制器的运算性能,还需要 STM32固件库中的优化函数来解决,即包含arm_math.h 头文件即可。以上两个设置都需要在工程选项中的 C/C+加入define 命令: _FPU_PRESENT=1, _FPU_USED =1 ARM_MATH_CM4 5 结论 通过 Matlab 运行 FDATOOL 工具箱来设计 FIR 滤波器,可以 节省很大一部分时间,对于 STM32F407 开启 FPU 后运行 FIR 滤 波器能够在保证精度的情况下具有很好的实时性,在工业控制当中很实用,特别在小型的嵌入式应用系统开发应用中更具竞争实力。

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。