• 正文
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

STM32單片機(jī)片上數(shù)字濾波器操作文檔

6小時(shí)前
232
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

本文來自看海的四代目徒弟:XJIE

大家好,這個(gè)文檔,是為了幫助大家快速入門數(shù)字濾波器單片機(jī)上的實(shí)現(xiàn)。當(dāng)然,大家在閱讀完之后可能還會(huì)有一些疑問,大家可以自行去查閱資料。

上節(jié)課我們?cè)?a class="article-link" target="_blank" href="/tag/STM32F103C8T6/">STM32F103C8T6上實(shí)現(xiàn)了頻率計(jì)的功能,我們?cè)谏洗蔚幕A(chǔ)上進(jìn)行下一步的操作。

首先,關(guān)于數(shù)字濾波器分為FIR和IIR兩種(如果不明白,需要去查閱資料),在這里我們關(guān)心我們?cè)趺吹玫轿覀兿胍獮V波器的參數(shù)。

我們打開matlab。

在命令行窗口中輸入filterDesigner。

我現(xiàn)在想設(shè)計(jì)一個(gè)IIR的低通濾波器,他的截止頻率是10Hz,巴特沃斯型,這里的采樣頻率需要根據(jù)我們之前上課的時(shí)候設(shè)計(jì)的ADC的采樣頻率一致(250Hz)

這個(gè)濾波器設(shè)計(jì)器有很多的功能,這個(gè)留給大家探索。

依次點(diǎn)擊目標(biāo)->生成c頭文件

直接點(diǎn)擊生成,(記住自己保存在哪里了),然后我們找到我們保存STM32CubeMX生成的.ioc文件,接下來把剛剛生成的文件保存在如圖所示的文件中。

我們用記事本打開fdacoefs.h文件,他會(huì)告訴我們還需要添加一個(gè).h文件

我們找到這個(gè)文件,也復(fù)制到這個(gè)文件夾下。

到這里基本的參數(shù)有關(guān)的生成以及,文件的移動(dòng)已經(jīng)完成了。接下來我們開始代碼的操作。

在main.c中包含剛剛我們添加的這兩個(gè)文件。然后編譯這個(gè)工程。

右鍵這個(gè)fdacoefs.h文件。打開它

我們把里面的4個(gè)數(shù)組都剪切到mian.c中。

我們先定義兩個(gè)結(jié)構(gòu)體,用來記錄我們的濾波器的參數(shù)。

其中,Biquad是各個(gè)節(jié)(這個(gè)數(shù)字濾波器的知識(shí))中的參數(shù),IIRFilter是整個(gè)濾波器的結(jié)構(gòu)體,然后我們?cè)诖a合適的地方寫下這兩個(gè)函數(shù)。

IIRFilter_Init是對(duì)濾波器的初始化,就是把我們剛剛生成的參數(shù)填入我們定義的濾波器,

IIRFilter_Process是有數(shù)據(jù)來的時(shí)候,對(duì)數(shù)據(jù)進(jìn)行濾波。

先定義一個(gè)iir濾波器并對(duì)其進(jìn)行初始化。

我們把ADC采集到的電壓通過濾波器濾波,我們來看看效果吧!

我左邊給的是5Hz的信號(hào),右邊給的是15Hz的信號(hào),都是100mVpp,由于低通濾波的截至頻率是10Hz,因此5Hz的信號(hào)通過了濾波器,而15Hz的信號(hào)被濾波器衰減。

By the way,整個(gè)代碼對(duì)初學(xué)者來說可能不是這么好理解,這是對(duì)你們的一個(gè)挑戰(zhàn)也是機(jī)遇

相關(guān)推薦