基于ARM Cortex-M3的多路數(shù)據(jù)采集系統(tǒng)的設計
摘要:數(shù)據(jù)采集是獲取信號對象信息的過程。本文設計了一個基于ARM Cortex-M3處理器的數(shù)據(jù)采集系統(tǒng),利用內置的豐富的外設資源,實現(xiàn)多路模擬輸入電壓信號的連續(xù)采集和順序轉換,通過RS232串行通信將轉換結果在PC接收端顯示,并產(chǎn)生PWM方波信號,實現(xiàn)對現(xiàn)場電壓信號的實時監(jiān)測。
關鍵詞:數(shù)據(jù)采集系統(tǒng);嵌入式系統(tǒng):Cortex-M3微處理器
0 引言
數(shù)據(jù)采集系統(tǒng)是將采集傳感器輸出的溫度、壓力、流量、位移等模擬信號轉換成計算機能識別的數(shù)字信號,進行相應的計算存儲和處理;同時,可將計算所得的數(shù)據(jù)進行顯示或打印,以便實現(xiàn)對某些物理量的監(jiān)測和控制。
嵌入式系統(tǒng)是以應用為中心,以計算機為基礎,軟硬件可剪裁,適用于對功能、可靠性、成本、體積、功耗有嚴格要求的專用計算機系統(tǒng)。嵌入式系統(tǒng)的核心是各種類型的嵌入式處理器。目前,采用ARM技術的微處理器占據(jù)了主流,其應用遍及工業(yè)控制、消費類電子產(chǎn)品、通信系統(tǒng)、網(wǎng)絡系統(tǒng)、無線系統(tǒng)等各類產(chǎn)品市場。而 ARM微處理器的Cortex系列專為安全要求較高的應用而設計。其中,Cortex-M3適于高性能、低成本需求的嵌入式應用。
1 多路數(shù)據(jù)采集系統(tǒng)總體設計
1.1 系統(tǒng)設計要求
本數(shù)據(jù)采集系統(tǒng)的設計要求實現(xiàn)150路直流電壓的實時采集和順序轉換。經(jīng)過部分采集處理后,由串行數(shù)據(jù)總線將轉換數(shù)據(jù)發(fā)送至上位機界面,經(jīng)過換算,以檢測采集的電源正常與否;同時在輸出端產(chǎn)生5路PWM方波信號,以用作輸出測試與控制。
1.2 系統(tǒng)設計方案
根據(jù)上述設計要求和數(shù)據(jù)采集系統(tǒng)的設計規(guī)范,將系統(tǒng)劃分為兩個部分:最小系統(tǒng)和采集系統(tǒng)。
最小系統(tǒng)采用基于ARM Cortex-M3架構的微控制器STM32F103RBT6為主控CPU,利用其內置16通道ADC對輸入的多路直流電壓信號進行實時采集和轉換,內置外設USART將轉換結果經(jīng)過串口發(fā)送在PC端由串口調試助手顯示。
采集系統(tǒng)采用5塊采集板,每塊板實現(xiàn)30路電壓信號采集。各塊板上,采用比例分壓的方法,利用排阻進行采集電壓的比例轉換,以達到ADC轉換的參考基準電壓要求。電壓信號的輸入采用4.16線模擬開關CD4067,通過CPIJ輸出四位控制信號,依次選擇各路輸入信號,進行采集轉換。
電壓信號經(jīng)過采集板,級聯(lián)輸入到最小系統(tǒng)板中,利用CPU內置ADCl中的10個轉換輸入通道,依次進行轉換。設置CPU_內部DMA模塊實現(xiàn)轉換結果的存儲,利用串口轉發(fā)數(shù)據(jù),在上位機顯示轉換結果。
根據(jù)上述設計方案,本數(shù)據(jù)采集系統(tǒng)的系統(tǒng)組成和工作原理如圖1所示。
2 數(shù)據(jù)采集系統(tǒng)的硬件設計
根據(jù)系統(tǒng)構成原理,硬件設計上,最小系統(tǒng)和采集系統(tǒng)兩部分通過并行接口實現(xiàn)多塊板級聯(lián),通過選擇相應的輸入通道和轉換通道,實現(xiàn)信號采集和轉換結果的顯示。
最小系統(tǒng)中,采用STM32F103RBT6微控制器,工作頻率可達72MHz,內置2個12位ADC,16個外部模擬信號輸入通道,可達1 u s轉換時間,轉換范圍是O~3.6V;支持7個DMA通道,可操作多種通用外設,如定時器、ADC、USART等;內置3個同步16位定時器,每個可有4個通道用于PWM波形輸出。
2.1 最小系統(tǒng)的設計
按照STM32最小系統(tǒng)的設計規(guī)范和本系統(tǒng)的功能要求,最小系統(tǒng)構成如圖2所示:
電源模塊:CPU為3.3V供電,最小系統(tǒng)外部輸入電源為5V,經(jīng)過電壓轉換芯片LM1117-3.3獲得3.3V輸出電壓,以提供系統(tǒng)電源。電源的輸入輸出端并接濾波電容,分別濾除電源的高頻和低頻噪聲。
除此之外還有外部時鐘,復位系統(tǒng),ADC參考電壓,USART串行通信,JTAG調試接口,總線驅動接口的設計。
STM32F103RBT6處理器具有51個多功能雙向5V兼容的I/O口,使用時可以作為通用GPIO口,也可作為復用AFIO口。復用I/O中,本系統(tǒng)外設所使用的有:定時器4通道四TIM4-CH4復用PB9口;USART1引腳USART1-TX、USART1-RX復用PA9、PA10:ADC 轉換通道CH0~CH9分別復用PA0~PA7及PB0、PB1。
對于復用功能的端口可以配置成以下模式:輸入模式(浮空、上拉或下拉)或復用功能輸出模式,此時輸入驅動器被配置成浮空輸入模式。ADC通道端口用作ADC輸入時將對應端口配置為模擬信號輸入模式;USART數(shù)據(jù)傳輸時,TX、RX復用端口分別配置為備用功能推拉模式和
輸入浮動模式。
2.2 電壓采集系統(tǒng)的設計
電壓采集系統(tǒng)作為本系統(tǒng)的第二部分,主要實現(xiàn)多路電壓信號順序選擇輸入,獲得ADC采集端的輸入電壓信號,同時,輸出最小系統(tǒng)中產(chǎn)生的PWM方波信號,并能選擇不同的ADC通道,以實現(xiàn)5塊采集板與最小系統(tǒng)板級聯(lián)。本部分主要包括電壓采集模塊、數(shù)據(jù)選擇模塊、PWM輸出模塊以及輸入輸出接口等。
電壓采集模塊:電路中采用電阻比例分壓的方法,獲取輸入電壓信號,以達到CPU采集轉換的基準電壓的要求。在實際硬件設計中,采用比例阻值的排阻代替分離電阻以便于電路板的繪制和整體布局。
數(shù)據(jù)選擇模塊:采用16選1輸出的模擬開關CD4067作為數(shù)據(jù)選擇器,輸出控制由CPU四個端口輸入高低電平作為二進制組合以確定輸出的數(shù)據(jù)通道。
PWM輸出模塊:最小系統(tǒng)中選擇定時器四,軟件配置為PWM輸出,由三極管放大后獲得PWM方波。
輸入輸出接口:本系統(tǒng)數(shù)據(jù)采集和最小系統(tǒng)兩部分采用40針排線連接,各個采集板上可以同時選擇兩個不同的通道,級聯(lián)后各板將數(shù)據(jù)選擇器的輸出信號送至相應的ADC轉換通道,同時輸出PWM方波信號。
3 系統(tǒng)調試及軟件設計
設計并加工好印刷電路板后,開始硬件和軟件的調試。調試過程中采用逐個功能單元調試,一個功能單元調試正常后再調試下一功能模塊,確保電路板出問題時可以很快發(fā)現(xiàn)問題點,再將各功能單元組合設置,逐步完成軟件設計和系統(tǒng)調試,實現(xiàn)系統(tǒng)設計要求。
系統(tǒng)調試所使用的開發(fā)環(huán)境為IAR EWARM,仿真工具為ST-LINKII,使用USB接口。
3.1 最小系統(tǒng)板調試
將電源模塊、復位、JTAG、外部晶振焊到電路板上,組成最小系統(tǒng),分模塊,分步驟,調試系統(tǒng)各部分。加電調試前檢測是否有電源短路,確保電路安全。
電源模塊:電路外部輸入電壓為5V,經(jīng)電壓轉換后在LMlll7-3.3V輸出端得到3.3V的輸出。加電后,首先通過萬用表測量電壓輸出是否正確,然后通過示波器觀察輸出電平的波形是否滿足系統(tǒng)對電源精度的要求,如不滿足,可以通過加大濾波電容的方法解決。
最小系統(tǒng)供電正常后,連接仿真器,通過軟件平臺可以檢測到最小系統(tǒng)CPU,表明CPU焊接正常。調試過程中會用到外部晶振,需要檢測晶振電路,將系統(tǒng)上電,使用示波器檢測晶振管腳,觀察波形,看晶振是否起振。然后編寫一個簡單的LED測試程序來觀察CPU是否能正常工作,通過軟件設置電路中LED連接的 I/O端口(PB6)輸出模式,觀察是否有閃爍。
DMA調試:DMA用來提供在外設和存儲器之間或者存儲器之間的高速數(shù)據(jù)傳輸。DMA通道配置包括:設置外設寄存器、數(shù)據(jù)存儲器的基地址,確定數(shù)據(jù)量和通道優(yōu)先級,以及數(shù)據(jù)傳輸?shù)姆较颉⒀h(huán)模式、外設和存儲器的增量模式等。ADC1對應DMA通道1請求,ADC通道配置中使能DMA請求。
除此之外還有USART調試、ADC調試、PWM調試等。
3.2 系統(tǒng)整體調試
最小系統(tǒng)板各功能單元調試通過后,將最小系統(tǒng)板與數(shù)據(jù)采集板級聯(lián)進行系統(tǒng)整體調試。
系統(tǒng)調試主要包括:外設和系統(tǒng)時鐘初始化,GPIO初始化,USART初始化和ADC、定時器初始化及ADC通道設置和串口收發(fā)配置等。系統(tǒng)調試流程如圖3所示:
按照上述流程完成程序設計,編譯、鏈接、運行,觀察輸入輸出情況。系統(tǒng)調試效果如圖4所示。
程序運行后,系統(tǒng)板上的LED在閃爍,用示波器測量定時器輸出引腳PB9,顯示頻率為4kHz,幅值為3.3V,占空比50%的PWM的方波,經(jīng)過三極管放大,幅值為4.5V;在采集板輸入端加入直流電壓信號,跳線選擇ADC通道;USART進行數(shù)據(jù)傳輸中,先發(fā)出轉換結果低六位,后發(fā)出高六位。打開串口調試助手,在數(shù)據(jù)接收區(qū)內以十六進制依次顯示經(jīng)過ADC所獲得的輸入信號的轉換結果,圖4中顯示了通道IN105、IN206輸入信號的測試效果,每次預先發(fā)送0x7E,且每15次循環(huán)輸出,表示依次獲取了模擬輸入電壓信號,經(jīng)測算轉換精度在誤差允許范圍內,說明系統(tǒng)運行正常,初步實現(xiàn)設計目的。
4 結論
本數(shù)據(jù)采集系統(tǒng)充分利用微處理器STM32F103RBT6內置的16路ADC通道、DMA控制器、USART通信接口、定時器等豐富的外設資源,在系統(tǒng)實現(xiàn)上簡化了相關模塊的設計,提高了系統(tǒng)運行的可靠性。經(jīng)過系統(tǒng)硬件設計和軟件配置實現(xiàn)順序采集轉換輸入的多路電壓信號,并利用上位機界面顯示采集的信號,實現(xiàn)了輸入信號的實時監(jiān)測和管理,達到了系統(tǒng)設計的基本要求。