劉 帥,張浩然(浙江師范大學(xué) 數(shù)理與信息工程學(xué)院,浙江 金華321004)
基于STM32的便攜式多功能數(shù)字示波器設(shè)計(jì)
劉 帥,張浩然
(浙江師范大學(xué) 數(shù)理與信息工程學(xué)院,浙江 金華321004)
本設(shè)計(jì)是基于STM32平臺(tái),移植μC/OS-Ⅱ嵌入式操作系統(tǒng)和μCGUI嵌入式應(yīng)用圖形支持系統(tǒng),形成一個(gè)完善的有人機(jī)接口的實(shí)時(shí)嵌入式系統(tǒng),在這個(gè)平臺(tái)上設(shè)計(jì)制作一個(gè)便攜式多功能數(shù)字示波器,采用STM32高性能ARM處理器作為核心控制芯片,顯示器選用TFT真彩液晶。實(shí)時(shí)性高,人機(jī)界面友好,具有很好的推廣使用價(jià)值,可廣泛應(yīng)用于信號(hào)采集、工程實(shí)踐等領(lǐng)域。
嵌入式系統(tǒng);數(shù)字示波器;μC/OS-Ⅱ;μCGUI;STM32
目前平臺(tái)化、集成化成為示波器發(fā)展的重要趨勢(shì)。市場(chǎng)上存在的示波器,一般把目標(biāo)定位在產(chǎn)品的高性能和強(qiáng)大功能的競(jìng)爭(zhēng)上,造成市場(chǎng)上的模擬及數(shù)字示波器一般價(jià)格高昂、體積較大且很多專業(yè)功能并不實(shí)用。更便宜、更小巧、更方便使用的示波器成為當(dāng)今市場(chǎng)的主流需求,使用者們需要借助具有各種功能的、方便攜帶的、小巧靈活的測(cè)試工具,來(lái)驗(yàn)證和解決越來(lái)越多的高復(fù)雜性問(wèn)題。
隨著嵌入式處理器的快速發(fā)展,STM32系列針對(duì)高性能、低成本、低功耗需求的嵌入式應(yīng)用專門設(shè)計(jì)的ARM芯片,系統(tǒng)時(shí)鐘頻率高達(dá)72 MHz,內(nèi)部外設(shè)豐富,STM32功耗36 mA,是32位市場(chǎng)上功耗最低的產(chǎn)品?;赟TM32嵌入式平臺(tái)設(shè)計(jì)的便攜式多功能數(shù)字示波器,移植μC/OS-II實(shí)時(shí)多任務(wù)操作系統(tǒng)[1]和μCGUI圖形支持系統(tǒng),形成一個(gè)完善的有人機(jī)接口的實(shí)時(shí)嵌入式精密測(cè)量?jī)x器,通過(guò)數(shù)字插值算法和快速傅里葉算法處理[2],可以進(jìn)行頻譜分析。通過(guò)STM32內(nèi)部自帶高速AD模塊,實(shí)現(xiàn)高速采樣,采樣速度可以達(dá)到3 MHz。具有邊沿觸發(fā)模式選擇、自動(dòng)捕捉波形、復(fù)位、暫停、波形存儲(chǔ)、頻率和幅值拉伸縮小、波形整體平移、峰-峰值、有效值、頻率、周期、占空比顯示、頻譜分析等功能。由于采用高速集成處理器,外設(shè)資源豐富,簡(jiǎn)化了電路板的設(shè)計(jì)制作,更加便攜,功能多樣。
基于STM32的便攜式多功能數(shù)字示波器的設(shè)計(jì)原理如圖1所示。其中,阻抗匹配電路3采用電壓跟隨器電路,增大輸入阻抗和減小輸出阻抗,實(shí)現(xiàn)對(duì)微弱信號(hào)的無(wú)衰減的傳輸;程控放大電路5采用高帶寬運(yùn)放和模擬開(kāi)關(guān)串聯(lián)實(shí)現(xiàn);數(shù)模轉(zhuǎn)換器[3]10采用主控芯片內(nèi)部集成的高速AD模塊,轉(zhuǎn)換速度可達(dá)1 MHz,充分利用STM32內(nèi)部自帶的3個(gè)AD模塊,采用交叉互補(bǔ)采樣模式,可以實(shí)現(xiàn)3 MHz的采樣速率。由于STM32內(nèi)部自帶的AD無(wú)法對(duì)負(fù)電壓進(jìn)行采集,通過(guò)設(shè)計(jì)加法器6將負(fù)壓抬高到零電平以上,過(guò)壓保護(hù)電路7防止高電壓對(duì)處理器造成損害。為了使示波器工作在觸發(fā)模式,系統(tǒng)中需要有個(gè)觸發(fā)電平,這里的觸發(fā)電平由斯密特觸發(fā)器電路8產(chǎn)生,同時(shí)用來(lái)對(duì)頻率進(jìn)行計(jì)數(shù)。波形存儲(chǔ)模塊11采用通用的SD卡,STM32有專屬的SPI和SD接口協(xié)議與其通信,SPI串行通信接口讀寫速度可達(dá)18 MHz。液晶顯示模塊13采用TFT真彩液晶;觸摸屏模塊12采用電阻式觸摸屏,其抗干擾能力強(qiáng)于電容屏,兩個(gè)模塊都集成在一塊屏幕上,采用并行數(shù)據(jù)總線,讀寫方便,速度快。
圖1 基于STM32的便攜式多功能數(shù)字示波器原理框圖
信號(hào)調(diào)理電路[4]如圖 2所示,考慮到對(duì)處理器的保護(hù)作用,特別在信號(hào)的輸入端和輸出端加上過(guò)壓保護(hù)二極管進(jìn)行鉗壓保護(hù),輸入鉗制在-5.0 V~+5.0 V之間,防止信號(hào)調(diào)理電路的燒毀,輸出鉗制在0~3.3 V之間,防止主控芯片因超出額定電源電壓而損壞。
運(yùn)算放大器采用高帶寬、共模抑制比大的單片集成雙運(yùn)放的AD827,其原本是為視頻電路設(shè)計(jì)的,增益帶寬達(dá)50 MHz,SR達(dá)到 300 V/μs,是目前市場(chǎng)上電壓反饋型雙運(yùn)放的頂級(jí)產(chǎn)品,其高頻特性非常優(yōu)越,在±5 V的供電下仍有優(yōu)異的性能,放大3 MHz的高頻信號(hào)沒(méi)有衰減和相位偏移現(xiàn)象出現(xiàn)。所有的集成電路的電源管腳都相應(yīng)地加上10 μF和0.1 μF去耦濾波電容。
模擬開(kāi)關(guān)采用 CD4052,CD4052是一個(gè)差分 4通道數(shù)字控制模擬開(kāi)關(guān),有A、B兩個(gè)二進(jìn)制控制輸入端和INH輸入,具有低導(dǎo)通阻抗和很低的截止漏電流。0~5.0 V的數(shù)字信號(hào)可控制-13.5~+5.0 V的模擬信號(hào),幅值為4.5~20 V的數(shù)字信號(hào)可控制峰峰值至 20 V的模擬信號(hào)。
在整個(gè)設(shè)計(jì)中,核心部分是軟件設(shè)計(jì),包括 μC/OS多任務(wù)操作系統(tǒng)和μCGUI圖形界面系統(tǒng)的移植、波形的檢測(cè)、處理、顯示等。
3.1任務(wù)的建立
操作系統(tǒng)μC/OS-II移植好了之后,需要建立四個(gè)任務(wù),分別為:
任務(wù)一:static void APP_TaskStart(void*pdata),主要作用是建立任務(wù)二、三、四并執(zhí)行它們,運(yùn)行結(jié)束后便將其掛起,掛起函數(shù)用 OSTaskSuspend(OS_PRIO_SELF)來(lái)實(shí)現(xiàn),之后由int main(void)進(jìn)行建立和執(zhí)行。
任務(wù)二:static void Task_TouchScreen(void*pdata),主要作用是連續(xù)地監(jiān)視和刷新觸摸板,該觸摸屏驅(qū)動(dòng)程序通過(guò)調(diào)用函數(shù)GUI_TOUCH_Exec()實(shí)現(xiàn),該函數(shù)在它辨認(rèn)出一個(gè)動(dòng)作已經(jīng)執(zhí)行或者情況有所變化時(shí),調(diào)用μCGUI提供的觸摸屏API函數(shù),大約每秒調(diào)用100次。
任務(wù)三:static void Task_GUIExce(void*pdata),主要作用是執(zhí)行回調(diào)函數(shù)(一般是重繪窗口),通過(guò)調(diào)用函數(shù)GUI_Exec()實(shí)現(xiàn),該函數(shù)會(huì)自動(dòng)重復(fù)調(diào)用 GUI_Exec1()直到它完成全部工作。通常該函數(shù)不需要被用戶應(yīng)用程序調(diào)用,它自動(dòng)地被GUI_Delay()所調(diào)用。
任務(wù)四:static void Task_MainTask(void*pdata),它是整個(gè)應(yīng)用程序的核心,包括液晶界面的顯示、觸摸板信號(hào)的處理、波形信號(hào)的采集、計(jì)算、顯示等操作。
3.2圖形界面設(shè)計(jì)
人機(jī)界面顯示采用 TFT液晶,分辨率為320×240,觸摸板采用電阻式的觸摸屏。驅(qū)動(dòng)庫(kù)采用μCGUI,支持液晶和觸摸板的應(yīng)用,并且功能強(qiáng)大。界面采用的是比較絢麗的坐標(biāo)網(wǎng)格形式,主要調(diào)用下列函數(shù)。
(1)void GuiMainTask(void),該函數(shù)中調(diào)用了三個(gè)函數(shù),GUI_CreateDialogBox()創(chuàng)建對(duì)話框,內(nèi)部包含多個(gè)按鈕控件和滑動(dòng)條控件,用于實(shí)現(xiàn)人機(jī)交換。WM_CreateWindow()創(chuàng)建一個(gè)窗口函數(shù),用來(lái)顯示版本的基本信息,包括產(chǎn)品名稱、編號(hào)。WM_CreateWindow()創(chuàng)建一個(gè)窗口函數(shù),用來(lái)顯示所測(cè)波形的頻率、周期、占空比、幅值等信息。
(2)void WaveTaskCreat(void),該函數(shù)中主要調(diào)用GRAPH的一些控件,用來(lái)創(chuàng)建一個(gè)波形顯示的網(wǎng)格窗口,可以實(shí)現(xiàn)波形的顯示,波形的X、Y軸的拉伸、平移功能。
此外還包括上升沿觸發(fā)、下降沿觸發(fā)、單次觸發(fā)(毛刺觸發(fā))、自動(dòng)、復(fù)位的觸發(fā)響應(yīng)和后臺(tái)處理程序。通過(guò)事件響應(yīng)機(jī)制以及回調(diào)函數(shù) GUI_Exec()進(jìn)行圖像的重畫(huà),運(yùn)行后的顯示界面如圖3所示。
圖3 人機(jī)界面
3.3波形檢測(cè)與處理程序設(shè)計(jì)
波形檢測(cè)和處理部分[5]采用單片機(jī)內(nèi)部自帶的高速A/D和強(qiáng)大的TIM實(shí)現(xiàn)。A/D單元的作用是將連續(xù)的模擬信號(hào)轉(zhuǎn)變?yōu)殡x散的數(shù)字序列,然后按照數(shù)字序列的先后順序重建波形。定時(shí)器TIM既要為A/D提供可變的采樣時(shí)基,也要實(shí)時(shí)捕捉由斯密特觸發(fā)器整形好的脈沖信號(hào)上升沿、下降沿的觸發(fā)時(shí)間,為后期信號(hào)的頻率、周期、占空比、幅值計(jì)算做準(zhǔn)備。
3.3.1波形檢測(cè)程序
A/D轉(zhuǎn)換:STM32增強(qiáng)型芯片內(nèi)置3個(gè)獨(dú)立A/D,可以有21個(gè)通道,并且3個(gè)A/D可以并行地同步采樣,觸發(fā)方式很靈活,可以通過(guò)TIM以及外部電平等方式觸發(fā),并行方式下AD3、AD2自動(dòng)同步于AD1;A/D在最高速采樣時(shí)需要1.5+12.5個(gè)時(shí)鐘周期,在14 MHz的AC時(shí)鐘下達(dá)到1 MS/s的速度。
采樣頻率控制:由于STM32內(nèi)部的4個(gè)TIM非常強(qiáng)大,每個(gè)TIM又有4個(gè)通道,再加上獨(dú)立的預(yù)分配器,實(shí)際上可以實(shí)現(xiàn)任意分頻,因此用TIM2 CC2來(lái)產(chǎn)生指定頻率的時(shí)鐘,用來(lái)觸發(fā)A/D連續(xù)采樣。
采樣數(shù)據(jù)傳輸及每次采樣深度控制:A/D產(chǎn)生的轉(zhuǎn)換數(shù)據(jù)通過(guò)高速DMA通道1、2、3來(lái)傳輸?shù)街付ǖ膬?nèi)部RAM中,并且將DMA中斷優(yōu)先級(jí)設(shè)置成最高優(yōu)先級(jí),以保證數(shù)據(jù)讀取準(zhǔn)確,用DMA每次傳輸?shù)膫€(gè)數(shù)來(lái)控制采樣的深度,例如要采集100個(gè),那么就設(shè)置DMA傳輸100次,每次從 16位A/D轉(zhuǎn)換寄存器傳輸一個(gè)16位數(shù)據(jù)到RAM中,等完成了100次傳輸后,DMA通道自動(dòng)停止 (實(shí)際上A/D是一直按照要求的采樣頻率在后臺(tái)連續(xù)采樣,只是未去取數(shù)據(jù)而已),下次采集時(shí)只要再設(shè)置采樣的個(gè)數(shù)就行了。
采用外中斷的形式,外面波形數(shù)據(jù)先不采集,先讓它通過(guò)一個(gè)比較器,比如比較器的基準(zhǔn)電壓是 1.0 V,也就是每次都與1.0 V比較。當(dāng)波形電壓大于 1.0 V時(shí),比較器輸出高電平,高電平接到單片機(jī)外中斷口,外中斷就被觸發(fā)。然后開(kāi)始采集,這樣就能保證每幀數(shù)據(jù)的起始點(diǎn)都相同。定時(shí)器的捕捉模式設(shè)置成雙沿捕捉,從而可以捕捉波形的上升沿和下降沿。
3.3.2處理程序
對(duì)采集好的數(shù)據(jù),首先要將數(shù)據(jù)中最大的和最小的找出來(lái),并根據(jù)放大倍數(shù)計(jì)算出波形的峰峰值,通過(guò)讀取緩存中的數(shù)據(jù)計(jì)算,轉(zhuǎn)換成真實(shí)電壓值。通過(guò)定時(shí)器捕捉到的波形連續(xù)的上升沿、下降沿和上升沿三次時(shí)間T1、T2、T3,從而計(jì)算出待測(cè)波形的周期=T3-T1和占空比=(T2-T1)/(T3-T1)。將數(shù)據(jù)一次性放到液晶上進(jìn)行顯示,通過(guò)調(diào)用 μCGUI內(nèi)部自帶的 GRAPH_DATA_ YT_AddValue()函數(shù),可以實(shí)現(xiàn)多浮點(diǎn)處理數(shù)據(jù)并顯示,其功能非常強(qiáng)大,程序流程如圖4所示。
不同頻率下測(cè)量占空比為50%、峰峰值為 1.25 V的方波的檢測(cè)波形圖如5所示,方波測(cè)試數(shù)據(jù)如表1。
圖5 方波測(cè)試圖
表1 方波測(cè)試數(shù)據(jù)
不同頻率下測(cè)量占空比為 50%、峰峰值為 1.25 V的正弦波的檢測(cè)波形圖如6所示,正弦波數(shù)據(jù)如表2。
圖6 正弦波測(cè)試圖
表2 正弦波數(shù)據(jù)
不同頻率下測(cè)量占空比為 50%、峰峰值為 1.25 V的三角波的檢測(cè)波形圖如7所示,三角波數(shù)據(jù)如表3。
Design of portable multi-function digital oscilloscope based on STM32
Liu Shuai,Zhang Haoran
(School of Mathematics,Physics and Information Engineering,Zhejiang Normal University,Jinhua 321004,China)
The design is based on the STM32 platform,transplanting μC/OS-Ⅱembedded operating system and μCGUI graphics support system for embedded applications,forming a perfect real-time embedded system with man-machine interface.A portable multifunction digital oscilloscope is designed on this platform.The high-performance STM32 ARM processor is used as the core control chip,and TFT color LCD monitor is used as displayer.It is with high real-time,friendly interface.It can be widely used to promote the use of signal acquisition,engineering and other areas of practice.It has a good value.
embedded systems;digital oscilloscope;μC/OS-II;μCGUI;STM32
TH89
A
1674-7720(2015)15-0037-03
劉帥,張浩然.基于STM32的便攜式多功能數(shù)字示波器設(shè)計(jì)[J].微型機(jī)與應(yīng)用,2015,34(15):37-39,43.