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