STM32的瞬態(tài)運動參數(shù)存儲測試系統(tǒng)設計
摘要:在瞬態(tài)運動參數(shù)測試中,對存儲測試系統(tǒng)的實時性和功耗提出了更高的要求。提出了一種基于STM32的嵌入式存儲測試系統(tǒng)的設計方案,介紹了該系統(tǒng)關鍵部分的軟硬件設計,主要包括模擬信號調(diào)理、數(shù)據(jù)采集存儲和USB數(shù)據(jù)回讀。該系統(tǒng)具有實時性好、體積小、功耗低的特點,適合于惡劣環(huán)境下加速度信號的采集存儲。試驗結果表明,該系統(tǒng)工作穩(wěn)定,實現(xiàn)了設計目標。
關鍵詞:存儲測試技術;信號調(diào)理;STM32;USB;LabView
引言
存儲測試技術是在特殊環(huán)境下記錄運動物體參數(shù)行之有效的方法,先將測試數(shù)據(jù)存入存儲器,待裝置回收后通過特定接口與上位機進行通信,還原數(shù)據(jù)信息。在諸多領域的測試中,對數(shù)據(jù)采集存儲系統(tǒng)的實時性和功耗提出了更高的要求,隨著半導體技術的發(fā)展,各種技術的進步使得高速度、低功耗的存儲測試系統(tǒng)能夠?qū)崿F(xiàn)。
本系統(tǒng)選擇ST公司超低功耗的基于ARM Cortex—M3四核的處理器STM32F103C8T6作為核心控制元件,采取內(nèi)部A/D轉(zhuǎn)換器與鐵電存儲器結合的方法,實現(xiàn)壓阻式加速度傳感器測試數(shù)據(jù)的采集、存儲,并利用LabView開發(fā)平臺設計上位機應用軟件實現(xiàn)測試數(shù)據(jù)的USB回讀及處理。
1 系統(tǒng)原理
存儲測試系統(tǒng)由電源管理模塊、調(diào)理模塊、外部晶振、微控制器、存儲模塊、上位機模塊以及接口電路組成,如圖1所示。
系統(tǒng)采用單電池電源供電,電路內(nèi)部經(jīng)過多路電源管理單元的穩(wěn)壓處理后為系統(tǒng)各個模塊供電,實現(xiàn)多分支電源網(wǎng)絡管理,以保證系統(tǒng)良好的抗干擾性能。系統(tǒng)的控制核心為STM32F103C8T6,傳感器信號經(jīng)調(diào)理模塊進入微控制器的12位μs級的A/D轉(zhuǎn)換器后,經(jīng)過處理和格式轉(zhuǎn)換后循環(huán)記錄在鐵電存儲器 FM25V10內(nèi),一旦傳感器感受的加速度值達到設定閾值,則系統(tǒng)將被觸發(fā),并會自動持續(xù)記錄一段時間,裝置回收后則利用LabVieW上位機應用軟件實現(xiàn)測試數(shù)據(jù)的USB回讀及處理。
2 系統(tǒng)主要部分的硬件設計
2.1 信號調(diào)理
由于傳感器測量的信號十分微弱,需要經(jīng)過適當?shù)姆糯?、濾波等修正后才能夠進行一系列處理。信號調(diào)理電路是存儲測試系統(tǒng)中非常關鍵的一個部分,它在數(shù)據(jù)采集存儲之前對傳感器輸出信號進行調(diào)理,其性能的優(yōu)劣直接決定了系統(tǒng)的性能與可靠性。信號調(diào)理電路主要由4部分串聯(lián)組成:隔離放大、交流耦合、電壓跟隨、低通濾波。
2.1.1 隔離放大
在存儲測試系統(tǒng)中,不合適的接地是造成測量問題的普遍原因,必須對信號進行電氣隔離以防止這些問題的發(fā)生。隔離電路能夠打破接地環(huán)路,避免產(chǎn)生高幅值共模電壓。
本設計選用通用的、雙端口的變壓器耦合隔離放大器AD202作為主放大器件。作為一種符合工業(yè)標準的隔離放大器,AD202能夠提供一整套隔離功能,包括信號隔離和電源隔離,且封裝緊湊,有利于實現(xiàn)產(chǎn)品的小型化。
圖2為隔離放大電路原理圖,R1和R2的配比可實現(xiàn)衰減功能,R6可實現(xiàn)比例的精確調(diào)節(jié),R3、R4和R5實現(xiàn)了調(diào)零功能。
2.1.2 交流耦合
為了消除加速度信號中直流分量的影響,實現(xiàn)交流耦合,利用電容的“隔直通交”的特性去除信號里的直流分量,而對純交流信號沒有影響。因此,本設計在隔離放大電路之后,加入了一級交流耦合。
2.1.3 電壓跟隨
傳感器信號在交流耦合之后,串聯(lián)一級電壓跟隨,可以起到緩沖、隔離的作用。電壓跟隨電路具有高輸入阻抗、低輸出阻抗的特點,可以使后級放大電路工作更穩(wěn)定,如圖3所示。
2.1.4 低通濾波
由于測試環(huán)境中不可避免地存在著各種干擾和噪聲,如果傳感器信號線引入外界干擾,將造成進入測試系統(tǒng)的信號摻雜有一定的噪聲,嚴重的甚至會影響測試的真實性。因此,需要使用濾波器對信號進行抗混疊濾波,以保證信號的正確性、提高系統(tǒng)信噪比。
系統(tǒng)使用的二階壓控電壓源低通濾波電路因性能穩(wěn)定、增益易調(diào)節(jié),已廣泛應用于測試系統(tǒng)中,此系統(tǒng)也采用此型濾波電路。電路設計如圖4所示。
2.2 微控制器接口
STM32F103處理器采用ST公司獨有的兩大節(jié)能技術(130 nm專用低泄漏電流制造工藝和優(yōu)化的節(jié)能架構),使其成為要求高性能、低成本、低功耗的嵌入式系統(tǒng)的良好選擇。該設計利用其自帶的12位μs級的A/D轉(zhuǎn)換器、SPI通信接口和USB2.0全速接口,實現(xiàn)傳感器信號的采集、存儲和回讀分析。
3 系統(tǒng)關鍵部分的軟件設計
3.1 負延時數(shù)據(jù)存儲
本系統(tǒng)選用1 Mb鐵電存儲器FM25V10(128K×8位),每個加速度數(shù)據(jù)占用2個字節(jié),可供存儲65536個數(shù)據(jù)。系統(tǒng)觸發(fā)前,存儲器保持循環(huán)記錄,存儲的內(nèi)容不斷被擦除改寫。當記錄數(shù)據(jù)達到觸發(fā)閾值時,測試系統(tǒng)觸發(fā),延時計數(shù)器開始計數(shù),數(shù)據(jù)繼續(xù)記錄至延時計數(shù)器到時。觸發(fā)點前后的數(shù)據(jù)長度可根據(jù)設計要求確定,計數(shù)結束后地址發(fā)生器停止工作,加速度信號得以存儲。記錄完畢后進入休眠狀態(tài),等待讀數(shù)和擦除。負延時功能可以將觸發(fā)前的一段信息有效保存,從而得到完整的加速度曲線,以保證數(shù)據(jù)的完整性。
3.2 與上位機LabVieW的USB通信
系統(tǒng)利用STM32F103自帶的USB2.0全速接口及其固件驅(qū)動程序,實現(xiàn)從存儲器向PC傳送數(shù)據(jù)和設置存儲參數(shù)的功能。STM32F10xxxUSB固件驅(qū)動程序庫是ST公司專為STM32F 10xxx系列ARM微控制器提供的固件驅(qū)動程序庫,其主要用途是利用STM32F10xxx系列微控制器中的USB宏單元來簡化應用開發(fā)。
該部分軟件設計包括3個部分:固件驅(qū)動程序、USB設備驅(qū)動程序和主機應用程序。
3.2.1 固件驅(qū)動程序設計
固件驅(qū)動程序(又稱單片機程序)是指固化到MCU模塊內(nèi)的軟件。固件程序采用模塊化設計,主要模塊包括:數(shù)據(jù)采集存儲模塊和數(shù)據(jù)通信模塊兩大部分。模塊化設計的優(yōu)點是可靠性高、可讀性好、軟件改動簡單。
USB設備在上電之后需要首先完成系統(tǒng)時鐘配置及片內(nèi)外設的初始化操作。設備初始化完畢后,數(shù)據(jù)回讀命令的接收、解析及數(shù)據(jù)傳輸?shù)乃胁僮骶谥袛喾粘绦蛑型瓿?。定時器3為節(jié)拍發(fā)生器,其中斷用于定時觸發(fā)A/D轉(zhuǎn)換器采樣與轉(zhuǎn)換。DMA通道1產(chǎn)生中斷表明,可以將存儲器中的數(shù)據(jù)打包并通過USB發(fā)送。
USB中斷較為復雜,是固件驅(qū)動程序設計的核心部分,包括枚舉的整個過程,以及除枚舉以外所有與主機的命令、數(shù)據(jù)交互過程??刂泼钪饕ú蓸宇l率的設定、負延時時間的設定、啟動數(shù)據(jù)回讀等。USB設備總計使用了3個端點,分別為端點0、端點1和端點3。端點0為USB默認的控制傳輸端點,供設備枚舉初始化時使用;端點1和端點3均為批量傳輸端點,端點1方向為輸入,用來接收PC的控制指令;端點3的方向為輸出,用來向PC機發(fā)送數(shù)據(jù)包。
系統(tǒng)固件程序流程如圖5所示。
3.2.2 USB設備驅(qū)動程序設計
USB設備驅(qū)動程序介于USB硬件與數(shù)據(jù)采集系統(tǒng)應用程序之間,為它們之間的通信提供橋梁。USB驅(qū)動程序使用DriverStudio 中的Driver-works2.7編寫。Drivei—Works提供了3個函數(shù)類即KUs-bLowerDevice、KUs—bInterface 和KUsbPipe類,用于實現(xiàn)USB設備操作。KUsbLowerDevice類用于邏輯設備的編程,KUsbInterface類用于接口的編程,KUsbP ipe類用于管道的編程。
本設計使用Driverworks自帶的DriverWizard生成驅(qū)動程序框架和Read、write函數(shù),在DeviceControl函數(shù)中添加用戶定義的設備控制程序,完成用戶自定義的功能。驅(qū)動程序編寫完畢后,會編譯生成后綴為“.inf”和“.sys'’兩個文件。.inf文件是系統(tǒng)用來查找適合硬件的驅(qū)動程序的向?qū)募?,當Windows發(fā)現(xiàn)新的設備時(比如系統(tǒng)啟動時、在安裝熱插拔設備時或者從控制面板安裝新設備時),就調(diào)用 Windows的“添加新設備向?qū)?rdquo;執(zhí)行。這個向?qū)呙杷锌捎玫?inf文件,找到合適的驅(qū)動程序。
3.2.3 主機應用程序設計
應用服務程序直接面向用戶,是控制數(shù)據(jù)存儲軟件的最上層,不僅提供與用戶交互的界面,而且能通過發(fā)送各種控制命令來控制存儲模塊的工作。在Windows 中,LabView實現(xiàn)與WDM的通信過程是:先用CreateFile函數(shù)打開設備,然后用Devi—ceIOControl與WDM進行通信,包括從 WDM中讀數(shù)據(jù)和寫數(shù)據(jù)給WDM,也可以用ReadFile從WDM中讀數(shù)據(jù)或用WriteFile寫數(shù)據(jù)給WDM。當應用程序退出時,用 CloseHartdle關閉設備。其軟件設計流程如圖6所示。
4 試驗數(shù)據(jù)與驗證
圖7是本測試系統(tǒng)所測得的試驗數(shù)據(jù)波形圖,該曲線所測的是某彈丸在火炮膛內(nèi)的加速度曲線。經(jīng)過數(shù)據(jù)分析,膛內(nèi)運行時間、膛內(nèi)運行距離、膛內(nèi)以及炮口擾動過載均與實際相符。
經(jīng)過試驗論證,本測試系統(tǒng)在誤差允許的范圍內(nèi)可以達到測量精度要求,從而驗證了本測試系統(tǒng)具有較強的應用性。
結語
存儲測試系統(tǒng)是軟硬件緊密結合的設備,為了提高實時性并降低功耗,需要設計者盡量精簡系統(tǒng)內(nèi)核,只保留和系統(tǒng)功能緊密相關的軟硬件,利用最低的資源實現(xiàn)最適當?shù)墓δ堋1疚脑O計的存儲測試系統(tǒng),使STM32處理器的優(yōu)點得到了有效的發(fā)揮。對于本測試系統(tǒng),可用環(huán)氧樹脂灌封材料將電路灌封在侵徹類引信內(nèi),從而獲取引信的侵徹全程加速度數(shù)據(jù),對侵徹類引信的研制具有重要意義。