最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

基于STM32F103單片機(jī)的示波器設(shè)計(jì),采用ADC 、定時(shí)器、DMA、FFT等可現(xiàn)實(shí)波形計(jì)算頻率

2023-04-15 17:19 作者:chuanyi_wang  | 我要投稿

摘 ?要

????本設(shè)計(jì)采用STM32F103微控制器,硬件為正點(diǎn)原子的MiniSTM32開發(fā)板,設(shè)計(jì)一個(gè)示波器,能夠測(cè)量輸入信號(hào)的頻率、最大值、最小值和幅值,并顯示所輸入的波形。并且采樣頻率可以設(shè)置,并能通過(guò)串口輸出所測(cè)量的內(nèi)容。采用FFT算法計(jì)算頻率,精度較高。所用到的硬件模塊有ADC、定時(shí)器、UART、外部中斷、DMA、GPIO、EXTI。

需要源程序工程以及設(shè)計(jì)文檔 聯(lián)系企鵝號(hào)?3270516346


目錄

摘 ?要

一、設(shè)計(jì)內(nèi)容與設(shè)計(jì)方法

1.1、設(shè)計(jì)內(nèi)容與要求

2.2、設(shè)計(jì)思路

二、硬件設(shè)計(jì)

2.1、STM32最小系統(tǒng)設(shè)計(jì)

2.2、LED顯示與外部中斷按鍵電路

2.3、LCD顯示屏接口電路

三、軟件設(shè)計(jì)

3.1、軟件設(shè)計(jì)總體流程

3.2、按鍵中斷設(shè)計(jì)

3.3、TIMER+DMA+ADC1組成的數(shù)據(jù)采集模塊

3.4、UART設(shè)置

3.5、FFT計(jì)算頻率

3.6 TFTLCD顯示界面設(shè)計(jì)

四、設(shè)計(jì)結(jié)果

五、參考文獻(xiàn)

附錄

1、STM32F103RC開發(fā)板原理圖

2、TFTLCD顯示屏原理圖

3、作品實(shí)物


一、設(shè)計(jì)內(nèi)容與設(shè)計(jì)方法

1.1、設(shè)計(jì)內(nèi)容與要求

1、由于STM32采用3.3V的電平標(biāo)準(zhǔn),所以輸入的信號(hào)電壓范圍為0V到3.3V。

2、采集輸入的信號(hào),計(jì)算輸入信號(hào)的頻率、最大值、最小值和幅值。

3、由于所測(cè)量的頻率的范圍與采樣的頻率有關(guān),所以采樣頻率可以設(shè)置,以達(dá)到不同的要求。

4、計(jì)算的信號(hào)的內(nèi)容可以通過(guò)串口打印出來(lái)。

2.2、設(shè)計(jì)思路

1、通過(guò)ADC1模數(shù)轉(zhuǎn)換模塊,采集輸入的模擬信號(hào),通過(guò)定時(shí)器的PWM輸出觸發(fā)一次采樣,所以采樣頻率可以通過(guò)定時(shí)器設(shè)置。將ADC采樣的數(shù)據(jù)通過(guò)DMA的方式送到指定的內(nèi)存中去。

2、將采樣得到的數(shù)據(jù)通過(guò)循環(huán)比較得到最大值和最小是,兩者相減得到信號(hào)幅值。將得到的采樣數(shù)據(jù)進(jìn)行FFT變換,然后在進(jìn)行一系列的計(jì)算得到信號(hào)的頻率。

3、通過(guò)UART1將得到的信號(hào)計(jì)算內(nèi)容發(fā)送的PC,波特率可以設(shè)置。采樣率的設(shè)置以及串口輸出的設(shè)計(jì)通過(guò)外部中斷(外部按鍵)設(shè)置。

4、設(shè)置開發(fā)板自帶的LED燈,通過(guò)LED燈來(lái)指示系統(tǒng)是否工作。

5、將輸入信號(hào)的波形以及計(jì)算結(jié)果在LCD屏幕上顯示出來(lái),LCD顯示采用正點(diǎn)原子提供的LCD驅(qū)動(dòng)函數(shù)。

?

二、硬件設(shè)計(jì)

  2.1、STM32最小系統(tǒng)設(shè)計(jì)

  ??1、采用的微控制器為STM32F103RCT6,該微控制器采用Cortex-M3體系結(jié)構(gòu),它擁有的資源包括: 48KB SRAM、 256KB FLASH、 2 個(gè)基本定時(shí)器、 4 個(gè)通用定時(shí)器、 2 個(gè)高級(jí)定時(shí)器、 2個(gè) DMA 控制器(共 12 個(gè)通道)、 3 個(gè) SPI2 個(gè) IIC、 5 個(gè)串口、 1 個(gè) USB、 1 個(gè) CAN3 個(gè) 12ADC、 1 個(gè) 12 DAC、 1 個(gè) SDIO 接口及 51 個(gè)通用 IO 口分三組,該芯片性價(jià)比較高。

?????2、該系統(tǒng)采用外部晶振作為時(shí)鐘源,外部晶振頻率為8MHz,通過(guò)內(nèi)部PLL等電路設(shè)置系統(tǒng)頻率為72MHz。,系統(tǒng)電源采用3.3V供電,DAC的參考電壓設(shè)置為5V。

3、復(fù)位端外界一個(gè)按鍵,即RESET按鍵接到單片機(jī)的NRST端,當(dāng)按下該按鍵時(shí),系統(tǒng)復(fù)位。下載電路采用JTAG下載。

4、本次設(shè)計(jì)用到的內(nèi)部資源有:SRAM、FLASH、通用定時(shí)器2,DMA1,UART1,DAC1,GPIOA、EXTI。

5、最小系統(tǒng)電路圖為:

硬件系統(tǒng)原理圖

2.2、LED顯示與外部中斷按鍵電路

1、LED顯示控制端為GPIOA_Pin_8,LED的陽(yáng)極通過(guò)保護(hù)電阻接電源,陰極連接到GPIOA_Pin_8,該端口采用推挽輸出,輸出高電平時(shí)LED滅,輸出低電平,LED亮。

2、按鍵連接電路如圖所示,WK_UP按鍵連接到PA0,KEY0連接到PC5,KEY1連接到PA15,他們分別對(duì)應(yīng)外部中斷通道0、通道5、通道15。通道0的中斷為上升沿觸發(fā),通道5和15為下降沿觸發(fā)。

LED與按鍵電路

2.3、LCD顯示屏接口電路

1、LCD顯示屏我們采用的為2.8寸屏,分辨率為320*240,支持65K色顯示,接口為16位的80并口,自帶觸摸屏,TFTLCD 模塊采用 2*17 的 2.54 公排針與外部連接。

2、LCD控制芯片采用ILI9341,ILI9341液晶控制器自帶顯存,可以通過(guò)不同的命令在LCD的不同位置顯示不同的顏色,從而顯示圖像。

3、開發(fā)板上自帶LCD顯示屏接口,直接將開發(fā)板與LCD相連即可,其接口電路如下圖:

TFT_LCD接口電路

三、軟件設(shè)計(jì)

3.1、軟件設(shè)計(jì)總體流程

?????1、主函數(shù)執(zhí)行過(guò)程

2、當(dāng)按鍵KU_UP按下時(shí),定時(shí)器分頻系數(shù)增加,采樣率減??;當(dāng)按鍵KEY1按下時(shí)定時(shí)器分頻系數(shù)減小,采樣率增加;當(dāng)KEY0按下時(shí),通過(guò)串口發(fā)送數(shù)據(jù)到PC機(jī)。

3、信號(hào)采集采用ADC+DMA+TIMER的方式,采集完成,觸發(fā)DMA中斷,采集完成標(biāo)記位置位。

??1、KW_UP、KEY1、KEY2對(duì)應(yīng)的引腳PA0、PC5、PA15,對(duì)應(yīng)的中斷觸發(fā)條件為信號(hào)上升沿、下降沿、下降沿。PA0設(shè)置為輸入下拉,PC5和PA15設(shè)置為輸入上拉,設(shè)置前首先開啟時(shí)鐘,對(duì)應(yīng)程序?yàn)椋?/span>

?2、PA0、PC5、PA15對(duì)應(yīng)的中斷通道為通道0、5、15,外部中斷配置響應(yīng)的模式并使能,然后配置響應(yīng)的NVIC并使能NVIC,他們對(duì)應(yīng)的搶占優(yōu)先級(jí)都為2,副優(yōu)先級(jí)為0、1、2,相應(yīng)代碼為(以通道1為例):

3、在他們的中斷服務(wù)函數(shù)中,先判斷相應(yīng)的按鍵是否按下,按下則執(zhí)行相應(yīng)的功能,然后清楚相應(yīng)的外部中斷,程序如下(以K0為例):

3.3、TIMER+DMA+ADC1組成的數(shù)據(jù)采集模塊

1、本實(shí)驗(yàn)用PA1口做為數(shù)據(jù)采集端口,定時(shí)器2配置為PWM模式,通過(guò)PWM,觸發(fā)一次采樣,改變PWM的頻率,就可以改變采樣率。通過(guò)DMA1,將采集的數(shù)據(jù)傳送給內(nèi)存,然后在處理數(shù)據(jù)。

2、首先使能GPIOA與ADC1的時(shí)鐘,然后將PA1配置為模擬輸入。ADC1選擇通道1使用規(guī)則轉(zhuǎn)換,配置為連續(xù)轉(zhuǎn)換模式,觸發(fā)方式選擇T2_CC2,即定時(shí)器2,數(shù)據(jù)選擇右對(duì)齊,規(guī)則順序轉(zhuǎn)換的通道數(shù)目為1,采樣時(shí)間設(shè)置為cycles。

?。粒模茫痹O(shè)置完成之后,使能DAC1,并且重置指定ADC的校準(zhǔn)寄存器進(jìn)行校準(zhǔn)。設(shè)計(jì)程序?yàn)椋?/span>

3、首先使能定時(shí)器的時(shí)鐘,計(jì)數(shù)器2的預(yù)分頻值與計(jì)數(shù)值通過(guò)外部參數(shù)傳入,可以設(shè)置,從而設(shè)置頻率,計(jì)數(shù)器設(shè)置為向上計(jì)數(shù)方式。

輸出設(shè)置為PWM1,輸出極性為低,并且設(shè)置TIM_Pulse,來(lái)設(shè)置占空比。最后使能TIM2.程序如下:

4、使用DMA1的通道1,首先開啟DMA1的時(shí)鐘,將ADC1的數(shù)據(jù)傳入內(nèi)存,設(shè)置一次傳輸數(shù)據(jù)量為1024個(gè)字,內(nèi)存和外設(shè)的數(shù)據(jù)位數(shù)都為16位,循環(huán)傳輸,優(yōu)先級(jí)設(shè)置位最高。

開啟DMA1的中斷,當(dāng)一次DMA傳輸完成時(shí),響應(yīng)中斷,在中斷服務(wù)函數(shù)中通知一次數(shù)據(jù)采樣完成,搶占優(yōu)先級(jí)與副優(yōu)先級(jí)都設(shè)置為0。

相關(guān)程序如下:

3.4、UART設(shè)置

1、通過(guò)UART1將相應(yīng)的數(shù)據(jù)打印出來(lái),UART1對(duì)應(yīng)的端口為PA9、PA10。根據(jù)參考手冊(cè),PA9應(yīng)該設(shè)置為復(fù)用推挽輸出,PA10設(shè)置為浮空輸入。

初始化UART1,首先開啟GPIOA和UART1的時(shí)鐘,然后設(shè)置字長(zhǎng)為8位,一個(gè)停止位,無(wú)奇偶效驗(yàn)位,無(wú)硬件數(shù)據(jù)流,波特率可設(shè)置。相關(guān)程序如下:

2、重定向函數(shù)printf(),在工程中加入fputc(int?。悖?,FILE?。妫┖瘮?shù)代碼,并包含“stdio.h”,即可通過(guò)printf()進(jìn)行串口發(fā)送數(shù)據(jù)。

3.5、FFT計(jì)算頻率

?????1、我們一次連續(xù)采樣1024個(gè)點(diǎn),對(duì)這些點(diǎn)利用提供的FFT庫(kù)函數(shù)進(jìn)行離散傅里葉變換,變換后從頻譜中找出最大的頻率,該頻率即為采樣信號(hào)的頻率。由采樣定理可知,采樣信號(hào)的頻率要大于所采集信號(hào)頻率的兩倍才能恢復(fù)出信號(hào)的頻譜,求得最大頻率。

????2、采樣信號(hào)的頻率為fus=72000000/(T*psc),其中T為STM32定時(shí)器的計(jì)數(shù)值,psc為分頻值。由Xak*F=T*X(k)=T*DFT[x(n)]N, F===

?(其中Xa為模擬信號(hào)的頻譜函數(shù),X(k)為采樣信號(hào)的離散傅里葉變換,F(xiàn)表示對(duì)模擬信號(hào)頻譜的采樣間隔,稱之為頻率分辨率)。所以如果當(dāng)k=temp時(shí),頻率取最大值,則最大頻率為f=temp*F=temp*fus/n,(n為一次采樣的點(diǎn)數(shù))。

?????3、cr4_fft_1024_stm32(fftout ,fftin ,n)為使用的進(jìn)行FFT變換的庫(kù)函數(shù),fftin為采集的輸入信號(hào)的數(shù)組,fftout為輸出的數(shù)組,n為點(diǎn)的個(gè)數(shù)。fftout中每個(gè)點(diǎn)有32位,高16位為FFT變換后的實(shí)部,低16位為虛部。對(duì)fftout進(jìn)行變換,然后在求出頻率的幅度最大時(shí)的k,即求出最大的頻率。

???相應(yīng)的程序?yàn)椋?/span>

?3.6 TFTLCD顯示界面設(shè)計(jì)

1、顯示屏采用正點(diǎn)原子的3.2寸TFTLCD顯示屏,利用正點(diǎn)原子提供的庫(kù)函數(shù)進(jìn)行開發(fā)。首先調(diào)用函數(shù)”LCD_Init()”進(jìn)行初始化。

2、然后調(diào)用函數(shù)windows()函數(shù)進(jìn)行繪制基本的顯示窗口,當(dāng)采樣完1024個(gè)點(diǎn)后,將相應(yīng)的點(diǎn)在LCD屏上顯示出來(lái),即形成波形。

四、設(shè)計(jì)結(jié)果

?????1、當(dāng)輸入1kHz方波時(shí),采樣頻率為12000Hz:

測(cè)量得到頻率為996Hz,最大值571mV,最小值0V。

2、當(dāng)輸入的信號(hào)頻率為5kHz時(shí),采樣率為12000Hz時(shí),得到:

測(cè)量得到信號(hào)的頻率為5003Hz,最大值為577mV,最小值為0V。

附錄

1、STM32F103RC開發(fā)板原理圖

2、TFTLCD顯示屏原理圖

3、作品實(shí)物


基于STM32F103單片機(jī)的示波器設(shè)計(jì),采用ADC 、定時(shí)器、DMA、FFT等可現(xiàn)實(shí)波形計(jì)算頻率的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
陕西省| 宝应县| 通渭县| 陵川县| 保山市| 莲花县| 永州市| 从江县| 宜兰市| 伊宁县| 象山县| 揭东县| 泸水县| 梁平县| 长宁县| 正蓝旗| 县级市| 苏尼特左旗| 江达县| 黎城县| 增城市| 乐东| 贵南县| 阜康市| 西宁市| 许昌市| 嘉定区| 衡山县| 沾益县| 宜州市| 沙雅县| 宁远县| 治县。| 武城县| 左云县| 吉木萨尔县| 昌黎县| 建阳市| 平遥县| 迁西县| 海原县|