1.綜述
STM32搭配的CMSIS的DSP庫(kù)已經(jīng)寫(xiě)好了FIR,我們做的就是用好用穩(wěn)定!
2.使用流程
2.1使用MATLAB的Filter Designer生成濾波器的參數(shù)(直接在MATLAB命令中輸入filterDesigner即可調(diào)出此工具,配置好參數(shù)后,選擇Targets->Generate C header)
2.2調(diào)用arm_fir_init_f32或arm_fir_init_q31或arm_fir_init_q15等等視實(shí)際使用情況而定數(shù)據(jù)類(lèi)型
2.3調(diào)用對(duì)應(yīng)的arm_fir_f32或arm_fir_q31或arm_fir_q15等等與上一步對(duì)應(yīng)的函數(shù)開(kāi)始計(jì)算
2.4就這兩步算就對(duì)了
3.需要注意的細(xì)節(jié)問(wèn)題
3.1濾波器階數(shù)選擇
濾波器階數(shù)應(yīng)當(dāng)選擇能整除4或8或16的,具體要求如下圖
例如,f32要求4的倍數(shù),與該數(shù)值直接相關(guān)的是numTaps,即MATLAB生成的參數(shù)的個(gè)數(shù)。numTaps比FIR濾波器的階數(shù)大1,所以如果numTaps-1不能整除4,那就有問(wèn)題了。
3.2狀態(tài)緩沖大小
該參數(shù)在arm_fir_init函數(shù)中會(huì)用到,具體要求如下圖
?該緩沖狀態(tài)區(qū)域大小為numTaps + 2*blockSize -1
其中,numTaps為FIR濾波器的配置參數(shù)個(gè)數(shù),該數(shù)值比FIR濾波器的階數(shù)大1。blockSize是每次調(diào)用arm_fir_f32計(jì)算的數(shù)值的個(gè)數(shù),如果想一口氣計(jì)算完,就讓blockSize等于緩沖區(qū)中的元素個(gè)數(shù)。
3.3有多個(gè)FIR濾波器時(shí),哪些能公用,哪些不行
例如筆者使用該FIR濾波器實(shí)現(xiàn)數(shù)字分頻器,需要分別為左右聲道配置兩個(gè)FIR濾波器,顯而易見(jiàn),這兩個(gè)濾波器的工作模式(低通、高通、帶通等)相同;截止頻率相同;窗函數(shù)相同。孿生兄弟一般,然而還是互相嫌棄,在實(shí)際使用時(shí)發(fā)現(xiàn)有些東西是不能公用的。
兩個(gè)濾波器的基本屬性與MATLAB生成的配置參數(shù)相關(guān),所以MATLAB生成的配置參數(shù)可以公用。但是FIR濾波器句柄,即arm_fir_instance_f32(arm_fir_init_f32和arm_fir_f32的第一個(gè)參數(shù))和狀態(tài)緩存(arm_fir_init_f32的第四個(gè)參數(shù))不能公用!
例如:
先舉個(gè)反面例子
這是公用的例子,實(shí)際結(jié)果是,會(huì)聽(tīng)到明顯的雜音
改正后是
?
?結(jié)果就是聲音很圓潤(rùn),(筆者首先做的是低通濾波器)和低音炮上用運(yùn)放實(shí)現(xiàn)的有源濾波器聽(tīng)起來(lái)無(wú)區(qū)別。
3.4在循環(huán)執(zhí)行時(shí),哪些可以省掉
例如筆者的分頻器,只要音樂(lè)在播放,他就要一刻不停得工作(畢竟替代的是更不怕累的模擬電路),在一遍遍的濾波過(guò)程中,實(shí)測(cè)arm_fir_init開(kāi)頭這個(gè)函數(shù)可以省去的,即在循環(huán)前調(diào)用一次就行。
4.簡(jiǎn)單聊下我們手里的FIR
我們手頭的這個(gè)FIR是直接型結(jié)構(gòu)的,系統(tǒng)函數(shù)和拓?fù)鋱D如上。上面的圖里面,箭頭代表乘法,圓圈代表加法。該濾波器的拓?fù)浣Y(jié)構(gòu)在有些資料上是下圖這樣,其本質(zhì)上相同。
?文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-629163.html
?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-629163.html
到了這里,關(guān)于STM32 FIR濾波器使用要點(diǎn),STM32 DSP篇的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!