• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

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

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

      龍吉

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

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

      0 引言

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

      1 STM32F407微控制器

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

      2 FIR濾波器

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

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

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

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

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

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

      4 ?開啟FPU的方法

      早期的STM32F4xx固件庫中的system_stm32f4xx.c文件默認禁用FPU的,即在CMSIS中沒有定義FPU,雖然文件中添加了FPU相關(guān)代碼,但是利用MDK編譯器執(zhí)行過程中會產(chǎn)生錯誤,為保證系統(tǒng)準(zhǔ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

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

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

      __FPU_PRESENT=1,__FPU_USED =1

      ARM_MATH_CM4

      5 結(jié)論

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

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

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

      猜你喜歡
      設(shè)計
      二十四節(jié)氣在平面廣告設(shè)計中的應(yīng)用
      河北畫報(2020年8期)2020-10-27 02:54:06
      何為設(shè)計的守護之道?
      《豐收的喜悅展示設(shè)計》
      流行色(2020年1期)2020-04-28 11:16:38
      基于PWM的伺服控制系統(tǒng)設(shè)計
      電子制作(2019年19期)2019-11-23 08:41:36
      基于89C52的32只三色LED搖搖棒設(shè)計
      電子制作(2019年15期)2019-08-27 01:11:50
      基于ICL8038的波形發(fā)生器仿真設(shè)計
      電子制作(2019年7期)2019-04-25 13:18:16
      瞞天過?!律O(shè)計萌到家
      設(shè)計秀
      海峽姐妹(2017年7期)2017-07-31 19:08:17
      有種設(shè)計叫而專
      Coco薇(2017年5期)2017-06-05 08:53:16
      從平面設(shè)計到“設(shè)計健康”
      商周刊(2017年26期)2017-04-25 08:13:04
      襄樊市| 济阳县| 黔江区| 陈巴尔虎旗| 安西县| 丹凤县| 峨眉山市| 界首市| 崇明县| 北宁市| 中牟县| 台中市| 石楼县| 汤阴县| 浦县| 阿拉尔市| 木里| 余庆县| 东阳市| 枣庄市| 阳曲县| 辽中县| 鸡东县| 富顺县| 蕉岭县| 鹿泉市| 余庆县| 松原市| 平江县| 济阳县| 遂昌县| 射阳县| 开远市| 秦安县| 炎陵县| 泰安市| 梧州市| 溧阳市| 溧水县| 柞水县| 新化县|