国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一種在STM32應(yīng)用FIR濾波器的設(shè)計(jì)與實(shí)現(xiàn)

2015-05-30 17:56:15龍吉
關(guān)鍵詞:設(shè)計(jì)

龍吉

摘 要:STM32微控制器是ST公司面向嵌入式應(yīng)用領(lǐng)域開發(fā)的微控制器,它具有很高的性價(jià)比,由于內(nèi)核不同,它的產(chǎn)品種類也不同,本文主要針對STM32F4x系列,利用ST公司的DSP函數(shù)庫實(shí)現(xiàn)在STM32上運(yùn)行有限單位沖激響應(yīng)濾波器(FIR)的設(shè)計(jì)方法,實(shí)踐表明,STM32F407在開啟浮點(diǎn)運(yùn)算后可以流暢運(yùn)行FIR,滿足微處理器對傳感器信號(hào)進(jìn)行濾波的要求。

關(guān)鍵詞:STM32微控器;FIR濾波器;設(shè)計(jì)

0 引言

在小型的嵌入式應(yīng)用系統(tǒng)當(dāng)中,微控制器的主要作用不僅是協(xié)調(diào)、控制各個(gè)外圍電路工作,有些系統(tǒng)還需要微控制器運(yùn)算一些算法,簡單而有效的算法或者數(shù)字濾波器可以替代純硬件電路,具有硬件電路少、成本低、故障率低的優(yōu)點(diǎn),但是有些算法規(guī)模和復(fù)雜程度較大,一般的微控制器如8位、16位微控制器偏重于實(shí)時(shí)控制、寄存器較多,浮點(diǎn)運(yùn)算能力很弱運(yùn)行起來就顯得特別吃力,而現(xiàn)階段ST公司推出的STM32微控制器性能較為強(qiáng)勁,在保證實(shí)時(shí)性的情況下,也可以運(yùn)行一些大型的數(shù)字濾波器和算法。

1 STM32F407微控制器

STM32F407是一種基于ARM cortex-M4內(nèi)核的高性能微處理器,它是STM32F4系列的中高端產(chǎn)品,具備168MHz主頻下達(dá)到210DMIPS的性能,內(nèi)置1MB閃存和192KB的SRAM。其內(nèi)部資源比較豐富,具有2個(gè)USB2.0的OTG,3個(gè)快速轉(zhuǎn)換的12位ADC,相比上一代ARM cortex-M3內(nèi)核產(chǎn)品,STM32F407微控制器集成了單周期的DSP指令集和浮點(diǎn)運(yùn)算單元FPU,大大提高了微控制器在浮點(diǎn)運(yùn)算的計(jì)算能力,配合ST公司專為STM32微控制器開發(fā)的庫函數(shù),可以運(yùn)行大型數(shù)學(xué)運(yùn)算,提升了微控制器的執(zhí)行效率和運(yùn)行速度,節(jié)約項(xiàng)目開發(fā)成本和開發(fā)時(shí)間。

2 FIR濾波器

在嵌入式應(yīng)用領(lǐng)域中,微控制器不僅僅需要對傳感器信號(hào)進(jìn)行采集然后送入A/D轉(zhuǎn)換器進(jìn)行處理,還要針對處理結(jié)果控制外圍設(shè)備。在這個(gè)過程中,對于傳感器信號(hào)進(jìn)行采集、濾波處理一般由外圍電路組成,如常用的巴特沃斯濾波器、切比雪夫?yàn)V波器等,把經(jīng)過濾波處理過的信號(hào)送入A/D轉(zhuǎn)換器,可以獲得準(zhǔn)確度較高的數(shù)據(jù)。而在實(shí)際應(yīng)用中,某些外界因素對傳感器的影響會(huì)使檢測的模擬信號(hào)受到干擾,而這些干擾信號(hào)是可以利用數(shù)字濾波器濾除的,目前應(yīng)用比較多的數(shù)字濾波器是無限沖激響應(yīng)濾波器(IIR)和有限沖激響應(yīng)濾波器(FIR)兩種,IIR濾波器具有輸入反饋,所以其輸出值不僅要取決于當(dāng)前輸入值,還要取決于過去的輸出值,那么理論上,這種濾波器的沖激響應(yīng)是無限持續(xù)的,有不容易被設(shè)計(jì)的缺點(diǎn)。而FIR濾波器不具有輸入反饋,即輸出值只取決于當(dāng)前和過去的輸入值,容易被設(shè)計(jì),但是同樣功能的FIR濾波器相比IIR濾波器要復(fù)雜很多,系數(shù)更多,給原本就負(fù)擔(dān)較重和實(shí)時(shí)性要求較高的微控制器增加致命的計(jì)算量,使系統(tǒng)的實(shí)時(shí)性降低。所以一些采用數(shù)字濾波器的系統(tǒng),都會(huì)將計(jì)算數(shù)字濾波器的工作量交給其他微處理器運(yùn)行,如DSP或者FPGA,所以,本文主要提出一種采用STM32F407微控制器運(yùn)行FIR濾波器的設(shè)計(jì)方案,在運(yùn)行一定量的采樣率和階數(shù)的FIR下保證系統(tǒng)實(shí)時(shí)性,滿足控制系統(tǒng)的要求。

3 庫函數(shù)中的FIR濾波器設(shè)計(jì)方法

要在STM32F407上利用DSP庫運(yùn)行FIR,首先需要利用Matlab的工具箱FDATOOL設(shè)計(jì)FIR濾波器,然后生成濾波器所需的系數(shù),為了增強(qiáng)其運(yùn)算性能,還需要在程序中添加開啟FPU的命令。

本設(shè)計(jì)利用Matlab設(shè)計(jì)一個(gè)帶阻濾波器,所濾波信號(hào)由10Hz和100Hz信號(hào)組成,截止頻率50Hz,采樣率為1000Hz。為了更好的檢測信號(hào),防止能量泄露,F(xiàn)IR選擇窗函數(shù)、hamming窗減少旁瓣,由于DSP庫中的FIR濾波器系數(shù)必須是4的倍數(shù),所以選擇200階。設(shè)計(jì)好FIR濾波器后生成系數(shù),保存為數(shù)組形式或者頭文件形式等待移植。

DSP庫中的FIR函數(shù)支持Q7、Q15、Q31和浮點(diǎn)四種數(shù)據(jù)類型,需要用到arm_fir_f32()函數(shù),這個(gè)函數(shù)可以在DSP_Lib\Source\FilteringFunctions文件夾中的arm_fir_32.c找到,在使用函數(shù)前需要對該函數(shù)中的參數(shù)定義有所了解。

階數(shù)越高,系數(shù)越復(fù)雜,STM32F407的運(yùn)算時(shí)間越長。一般來講,開啟FPU后的STM32F407運(yùn)行200階左右的FIR濾波器運(yùn)算時(shí)間為毫秒級(jí),是可以保證實(shí)時(shí)性的。

4 ?開啟FPU的方法

早期的STM32F4xx固件庫中的system_stm32f4xx.c文件默認(rèn)禁用FPU的,即在CMSIS中沒有定義FPU,雖然文件中添加了FPU相關(guān)代碼,但是利用MDK編譯器執(zhí)行過程中會(huì)產(chǎn)生錯(cuò)誤,為保證系統(tǒng)準(zhǔn)確運(yùn)行,可以在system_init()函數(shù)中添加條件編譯代碼或者直接使用FPU即可。如:

#if (__FPU_PRESENT == 1) && (__FPU_USED == 1)

SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2));

#endif

或者:

#define __FPU_USED ? ? ? 1

兩種方法不同,但是都需要對各個(gè)相關(guān)文件進(jìn)行設(shè)置,只需根據(jù)相應(yīng)的#define命令查找定義即可設(shè)置,這里不再贅述。

需要注意的是,啟用FPU不代表微控制器處理復(fù)雜運(yùn)算就大大的提升效率了,這里還需要對ARM處理器的math.h頭文件進(jìn)行替換,因?yàn)閙ath.h頭文件中的運(yùn)算函數(shù)都是基于定點(diǎn)處理器和IEEE-754標(biāo)準(zhǔn)來運(yùn)行的,想要提升微控制器的運(yùn)算性能,還需要STM32固件庫中的優(yōu)化函數(shù)來解決,即包含arm_math.h頭文件即可。以上兩個(gè)設(shè)置都需要在工程選項(xiàng)中的C/C++加入define命令:

__FPU_PRESENT=1,__FPU_USED =1

ARM_MATH_CM4

5 結(jié)論

通過Matlab運(yùn)行FDATOOL工具箱來設(shè)計(jì)FIR濾波器,可以

節(jié)省很大一部分時(shí)間,對于STM32F407開啟FPU后運(yùn)行FIR濾

波器能夠在保證精度的情況下具有很好的實(shí)時(shí)性,在工業(yè)控制當(dāng)中很實(shí)用,特別在小型的嵌入式應(yīng)用系統(tǒng)開發(fā)應(yīng)用中更具競爭實(shí)力。

猜你喜歡
設(shè)計(jì)
二十四節(jié)氣在平面廣告設(shè)計(jì)中的應(yīng)用
何為設(shè)計(jì)的守護(hù)之道?
《豐收的喜悅展示設(shè)計(jì)》
流行色(2020年1期)2020-04-28 11:16:38
基于PWM的伺服控制系統(tǒng)設(shè)計(jì)
電子制作(2019年19期)2019-11-23 08:41:36
基于89C52的32只三色LED搖搖棒設(shè)計(jì)
電子制作(2019年15期)2019-08-27 01:11:50
基于ICL8038的波形發(fā)生器仿真設(shè)計(jì)
電子制作(2019年7期)2019-04-25 13:18:16
瞞天過?!律O(shè)計(jì)萌到家
設(shè)計(jì)秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設(shè)計(jì)叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
從平面設(shè)計(jì)到“設(shè)計(jì)健康”
商周刊(2017年26期)2017-04-25 08:13:04
麻栗坡县| 梁河县| 天峨县| 怀宁县| 凌海市| 达拉特旗| 阜平县| 苍溪县| 如皋市| 南郑县| 宝丰县| 伊通| 义乌市| 四川省| 眉山市| 横山县| 普洱| 黄浦区| 洞口县| 恭城| 崇信县| 蓝田县| 八宿县| 拉孜县| 洛南县| 雷山县| 延津县| 淮安市| 洛浦县| 叙永县| 万载县| 双江| 永新县| 隆尧县| 巧家县| 利津县| 兴义市| 疏勒县| 合阳县| 文昌市| 广丰县|