摘 要: 本設(shè)計是基于STM32平臺,,移植μC/OS-Ⅱ嵌入式操作系統(tǒng)和μCGUI嵌入式應用圖形支持系統(tǒng),形成一個完善的有人機接口的實時嵌入式系統(tǒng),,在這個平臺上設(shè)計制作一個便攜式多功能數(shù)字示波器,,采用STM32高性能ARM處理器作為核心控制芯片,顯示器選用TFT真彩液晶,。實時性高,,人機界面友好,具有很好的推廣使用價值,,可廣泛應用于信號采集,、工程實踐等領(lǐng)域。
關(guān)鍵詞: 嵌入式系統(tǒng),;數(shù)字示波器,;μC/OS-Ⅱ;μCGUI,;STM32
0 引言
目前平臺化,、集成化成為示波器發(fā)展的重要趨勢。市場上存在的示波器,,一般把目標定位在產(chǎn)品的高性能和強大功能的競爭上,,造成市場上的模擬及數(shù)字示波器一般價格高昂、體積較大且很多專業(yè)功能并不實用,。更便宜,、更小巧,、更方便使用的示波器成為當今市場的主流需求,使用者們需要借助具有各種功能的,、方便攜帶的,、小巧靈活的測試工具,來驗證和解決越來越多的高復雜性問題,。
1 系統(tǒng)設(shè)計理念
隨著嵌入式處理器的快速發(fā)展,,STM32系列針對高性能、低成本,、低功耗需求的嵌入式應用專門設(shè)計的ARM芯片,,系統(tǒng)時鐘頻率高達72 MHz,內(nèi)部外設(shè)豐富,,STM32功耗36 mA,,是32位市場上功耗最低的產(chǎn)品?;赟TM32嵌入式平臺設(shè)計的便攜式多功能數(shù)字示波器,,移植μC/OS-II實時多任務操作系統(tǒng)[1]和μCGUI圖形支持系統(tǒng),形成一個完善的有人機接口的實時嵌入式精密測量儀器,,通過數(shù)字插值算法和快速傅里葉算法處理[2],,可以進行頻譜分析。通過STM32內(nèi)部自帶高速AD模塊,,實現(xiàn)高速采樣,,采樣速度可以達到3 MHz。具有邊沿觸發(fā)模式選擇,、自動捕捉波形,、復位、暫停,、波形存儲,、頻率和幅值拉伸縮小、波形整體平移,、峰-峰值,、有效值、頻率,、周期,、占空比顯示、頻譜分析等功能,。由于采用高速集成處理器,,外設(shè)資源豐富,簡化了電路板的設(shè)計制作,,更加便攜,,功能多樣,。
2 系統(tǒng)硬件設(shè)計
基于STM32的便攜式多功能數(shù)字示波器的設(shè)計原理如圖1所示。其中,,阻抗匹配電路3采用電壓跟隨器電路,,增大輸入阻抗和減小輸出阻抗,實現(xiàn)對微弱信號的無衰減的傳輸,;程控放大電路5采用高帶寬運放和模擬開關(guān)串聯(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無法對負電壓進行采集,,通過設(shè)計加法器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,,其原本是為視頻電路設(shè)計的,,增益帶寬達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去耦濾波電容,。
模擬開關(guān)采用CD4052,CD4052是一個差分4通道數(shù)字控制模擬開關(guān),,有A,、B兩個二進制控制輸入端和INH輸入,具有低導通阻抗和很低的截止漏電流,。0~5.0 V的數(shù)字信號可控制-13.5~+5.0 V的模擬信號,,幅值為 4.5~20 V的數(shù)字信號可控制峰峰值至20 V的模擬信號。
3 軟件設(shè)計
在整個設(shè)計中,,核心部分是軟件設(shè)計,,包括μ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 圖形界面設(shè)計
人機界面顯示采用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 波形檢測與處理程序設(shè)計
波形檢測和處理部分[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)先級設(shè)置成最高優(yōu)先級,,以保證數(shù)據(jù)讀取準確,,用DMA每次傳輸?shù)膫€數(shù)來控制采樣的深度,例如要采集100個,那么就設(shè)置DMA傳輸100次,,每次從16位A/D轉(zhuǎn)換寄存器傳輸一個16位數(shù)據(jù)到RAM中,,等完成了100次傳輸后,DMA通道自動停止(實際上A/D是一直按照要求的采樣頻率在后臺連續(xù)采樣,,只是未去取數(shù)據(jù)而已),,下次采集時只要再設(shè)置采樣的個數(shù)就行了。
采用外中斷的形式,,外面波形數(shù)據(jù)先不采集,,先讓它通過一個比較器,比如比較器的基準電壓是1.0 V,,也就是每次都與1.0 V比較,。當波形電壓大于1.0 V時,比較器輸出高電平,,高電平接到單片機外中斷口,,外中斷就被觸發(fā)。然后開始采集,,這樣就能保證每幀數(shù)據(jù)的起始點都相同,。定時器的捕捉模式設(shè)置成雙沿捕捉,從而可以捕捉波形的上升沿和下降沿,。
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所示,。
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 結(jié)論
通過對該系統(tǒng)的整體測試可知,,該系統(tǒng)體積小巧,、簡單易用、成本低,,主控芯片STM32F103x內(nèi)部集成了豐富的功能模塊,使系統(tǒng)無需外擴大量芯片便可實現(xiàn)數(shù)據(jù)采集功能,,降低了開發(fā)的復雜度和成本,,達到了提高系統(tǒng)穩(wěn)定性的目的。示波器能夠?qū)崿F(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] 童詩白.模擬電子技術(shù)[M].北京:高等教育出版社,2001.
[4] 黃敏松,,行鴻彥,,劉建成.ECG監(jiān)護儀前置放大電路設(shè)計[J].現(xiàn)代電子技術(shù),2007(16):187-189.
[5] 王昌明,,孔德仁,,何云峰.傳感與測試技術(shù)[M].北京:北京航空航天大學出版社,2005.