摘 要: 本設計是基于STM32平臺,移植μC/OS-Ⅱ嵌入式操作系統(tǒng)和μCGUI嵌入式應用圖形支持系統(tǒng),形成一個完善的有人機接口的實時嵌入式系統(tǒng),在這個平臺上設計制作一個便攜式多功能數(shù)字示波器,采用STM32高性能ARM處理器作為核心控制芯片,顯示器選用TFT真彩液晶。實時性高,人機界面友好,具有很好的推廣使用價值,可廣泛應用于信號采集、工程實踐等領域。
關鍵詞: 嵌入式系統(tǒng);數(shù)字示波器;μC/OS-Ⅱ;μCGUI;STM32
0 引言
目前平臺化、集成化成為示波器發(fā)展的重要趨勢。市場上存在的示波器,一般把目標定位在產(chǎn)品的高性能和強大功能的競爭上,造成市場上的模擬及數(shù)字示波器一般價格高昂、體積較大且很多專業(yè)功能并不實用。更便宜、更小巧、更方便使用的示波器成為當今市場的主流需求,使用者們需要借助具有各種功能的、方便攜帶的、小巧靈活的測試工具,來驗證和解決越來越多的高復雜性問題。
1 系統(tǒng)設計理念
隨著嵌入式處理器的快速發(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ā)模式選擇、自動捕捉波形、復位、暫停、波形存儲、頻率和幅值拉伸縮小、波形整體平移、峰-峰值、有效值、頻率、周期、占空比顯示、頻譜分析等功能。由于采用高速集成處理器,外設資源豐富,簡化了電路板的設計制作,更加便攜,功能多樣。
2 系統(tǒng)硬件設計
基于STM32的便攜式多功能數(shù)字示波器的設計原理如圖1所示。其中,阻抗匹配電路3采用電壓跟隨器電路,增大輸入阻抗和減小輸出阻抗,實現(xiàn)對微弱信號的無衰減的傳輸;程控放大電路5采用高帶寬運放和模擬開關串聯(lián)實現(xiàn);數(shù)模轉換器[3]10采用主控芯片內(nèi)部集成的高速AD模塊,轉換速度可達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ù)總線,讀寫方便,速度快。
信號調(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的模擬信號。
3 軟件設計
在整個設計中,核心部分是軟件設計,包括μC/OS多任務操作系統(tǒng)和μCGUI圖形界面系統(tǒng)的移植、波形的檢測、處理、顯示等。
3.1 任務的建立
操作系統(tǒng)μC/OS-II移植好了之后,需要建立四個任務,分別為:
任務一:static void APP_TaskStart(void*pdata),主要作用是建立任務二、三、四并執(zhí)行它們,運行結束后便將其掛起,掛起函數(shù)用OSTaskSuspend(OS_PRIO_SELF)來實現(xiàn),之后由int main(void)進行建立和執(zhí)行。
任務二:static void Task_TouchScreen(void*pdata),主要作用是連續(xù)地監(jiān)視和刷新觸摸板,該觸摸屏驅動程序通過調(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,觸摸板采用電阻式的觸摸屏。驅動庫采用μCGUI,支持液晶和觸摸板的應用,并且功能強大。界面采用的是比較絢麗的坐標網(wǎng)格形式,主要調(diào)用下列函數(shù)。
?。?)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ù),用來顯示所測波形的頻率、周期、占空比、幅值等信息。
?。?)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 波形檢測與處理程序設計
波形檢測和處理部分[5]采用單片機內(nèi)部自帶的高速A/D和強大的TIM實現(xiàn)。A/D單元的作用是將連續(xù)的模擬信號轉變?yōu)殡x散的數(shù)字序列,然后按照數(shù)字序列的先后順序重建波形。定時器TIM既要為A/D提供可變的采樣時基,也要實時捕捉由斯密特觸發(fā)器整形好的脈沖信號上升沿、下降沿的觸發(fā)時間,為后期信號的頻率、周期、占空比、幅值計算做準備。
3.3.1 波形檢測程序
A/D轉換: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)生的轉換數(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轉換寄存器傳輸一個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ù)計算,轉換成真實電壓值。通過定時器捕捉到的波形連續(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所示。
4 系統(tǒng)測試
不同頻率下測量占空比為50%、峰峰值為1.25 V的方波的檢測波形圖如5所示,方波測試數(shù)據(jù)如表1。
不同頻率下測量占空比為50%、峰峰值為1.25 V的正弦波的檢測波形圖如6所示,正弦波數(shù)據(jù)如表2。
不同頻率下測量占空比為50%、峰峰值為1.25 V的三角波的檢測波形圖如7所示,三角波數(shù)據(jù)如表3。
5 結論
通過對該系統(tǒng)的整體測試可知,該系統(tǒng)體積小巧、簡單易用、成本低,主控芯片STM32F103x內(nèi)部集成了豐富的功能模塊,使系統(tǒng)無需外擴大量芯片便可實現(xiàn)數(shù)據(jù)采集功能,降低了開發(fā)的復雜度和成本,達到了提高系統(tǒng)穩(wěn)定性的目的。示波器能夠實現(xiàn)3 MHz的采樣速度,帶寬500 kHz,可以測出從1 Hz到500 kHz的頻率。輸入信號幅度可以是50 mV~25 V(通過示波器探頭衰減10倍之后),通過電路上電阻的選擇控制它的放大和衰減,該示波器還可以選擇觸發(fā)方式:上升沿觸發(fā)、下降沿觸發(fā)、單次觸發(fā),可以捕獲瞬時出現(xiàn)的波形,如遙控器波形等。
參考文獻
[1] LABROSSE J J.嵌入式實時操作系統(tǒng)μCOS-II[M].邵貝貝,譯.北京:北京航空航天大學出版社,2003.
[2] CRISTI R.現(xiàn)代數(shù)字信號處理[M].徐盛,譯.北京:機械工業(yè)出版社,2005:129-1481.
[3] 童詩白.模擬電子技術[M].北京:高等教育出版社,2001.
[4] 黃敏松,行鴻彥,劉建成.ECG監(jiān)護儀前置放大電路設計[J].現(xiàn)代電子技術,2007(16):187-189.
[5] 王昌明,孔德仁,何云峰.傳感與測試技術[M].北京:北京航空航天大學出版社,2005.