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