


摘 要: 針對嵌入式系統在數據采集與處理中的應用,研究了一種新的方案進行系統的軟硬件設計、調試和實現,完成了一個集多路數據采集與處理、實時顯示和USB通信于一體的便攜式數據采集系統。在硬件方面,利用微處理器的外圍設備,結合Atmel公司提供的微控制器開發板原理圖和客戶實際需求,設計了5路模擬量輸入通道,鋰離子電池充電電路,SDRAM,NAND FLASH存儲器電路,SPI通信方式的LCD接口電路,USB設備接口和DBGU接口電路。在軟件方面,利用IAR集成開發環境設計了多路模擬量輸入定時采集,LCD顯示,按鍵設置,NAND Flash讀寫和USB大容量存儲設備驅動等程序模塊,并實現了一些簡單的數據采集處理和FFT頻譜分析功能。最后,為分析、處理NAND FLASH中模/數轉換的數據,分別進行了基于Matlab的數據處理編程和Matlab與VC++的混合編程。
關鍵詞: 嵌入式系統; 數據采集; USB大容量存儲設備; ARM
中圖分類號: TN431.2?34; TP274.2 文獻標識碼: A 文章編號: 1004?373X(2016)13?0167?04
Abstract: For the application of embedded system in data acquisition and processing, a new scheme is studied to perform the software and hardware design, debugging and implementation. A portable data acquisition and processing system integrating multichannel data acquisition and processing, real?time display and USB communication was implemented. For the hardware, 5 analog input channels, lithium?ion battery charging circuit, SDRAM, NAND Flash storage circuit, LCD interface circuit with SPI communication, USB device interface and DBGU interface circuit were designed based on the peripheral unit of microprocessor, microcontroller development board schematic diagram made by Atmel Company and actual customer demand. For the software, the program modules of multichannel analog input timing acquisition, LCD display, key configuration, and driver of NAND FLASH read?write and USB mass storage device were designed by means of IAR integrated development environment, and then some simple data acquisition and processing, and FFT spectral analysis function were realized. In order to analyze and process the analog?to?digital conversion data in NAND FLASH, the data processing programming based on Matlab and mixed programming based Matlab and VC++ were performed respectively.
Keywords: embedded system; data acquisition; USB mass storage device; ARM
當今,嵌入式系統的發展方興未艾,軟硬件技術日趨成熟,應用也越來越普遍。ARM是業界領先的32位嵌入式微處理器,成本低、低功耗、可擴展性強、支持實時多任務處理。在這一背景下,本文結合便攜式數據采集與處理這一具體應用進行嵌入式系統的開發,按照結構化、模塊化的方式進行系統軟硬件的設計、調試和最終實現[1]。
1 系統的硬件電路設計
本設計系統的核心是Atmel公司的ARM7微控制器AT91SAM7SE256,這是一款基于ARM7TDMI內核的16/32位嵌入式RISC微控制器,在極限條件下(1.65 V,85 ℃)主頻能到達55 MHz。ARM7TDMI內核使用了取指、譯碼、執行3級流水線來增加處理器指令流的速度,這樣可使幾個操作同時進行,并使處理和存儲系統連續操作。
1.1 硬件電路設計
為了實現采用極化阻抗法進行石油管道的腐蝕分析過程中的數據采集與處理,硬件電路上需要有5路采集頻率為1 kHz的模擬量輸入通道,能夠實現大容量數據存儲功能,具有實時顯示和USB通信功能[2]。
硬件電路功能框圖如圖1所示。
1.1.1 電源與復位電路
(1) 數字電源設計。可充電鋰離子電池輸出4.2 V電壓,經過多功能電池充電器芯片LTC4080輸出3.3 V供CPU、時鐘芯片、NAND FLASH、SDRAM和DBGU接口芯片等使用。LT4080是凌特公司推出的具有獨立線性電池充電器和高效率同步降壓型轉換器的多功能集成電路,該USB兼容的電池充電器能以高達500 mA的電流為單節鋰離子電池充電,而且沒有使器件或周圍組件過熱的風險,而高達300 mA的降壓型穩壓器具有可選工作模式和同步整流功能,以實現高達96%的效率,該器件用來與高達5.5 V的電源一起工作,包括那些符合USB規格的電源,特別適合應用于便攜式設備中[3]。
(2) 模擬電源設計。A/D電路的供電需要模擬電源,數字電源3.3 V通過100 μH電感作為電荷泵電壓反相器芯片XC6351A120的輸入,XC6351A是一系列電荷泵電壓反轉器,內置4個開關MOSFET,外圍只需要3個陶瓷電容就可組成一個正電壓輸入,負電壓輸出的高效率、低功耗電壓反轉器電路,模擬電路電源與數字電源需要電感隔開。
(3) 復位電路設計。復位電路使用了AT91SAM7SE256的復位控制器,復位控制器是基于上電復位單元的,能處理系統的所有復位而不需要任何外圍器件并給出最近發生的一次復位情況,復位控制器可以獨立的或同時驅動外部復位和外設及處理器復位,而掉電檢測能阻止處理器進入不可預知的狀態[4]。
1.1.2 時鐘電路
時鐘電路由兩路時鐘輸入組成,分別為處理器工作時鐘和芯片FM3116時鐘。處理器工作時鐘為18.432 MHz的無源晶體,需要外部電容。AT91SAM7SE256的兩線接口(TWI)由一根時鐘線及一根傳輸速度達到400 Kb/s的數據線組成,以字節為單位進行傳輸。它適用于任何的Atmel兩線總線串行E2PROM中,與FM3116的二線制串行接口兼容,TWI可編程作為主機進行連續或單字節訪問,電源管理控制器向TWI接口提供主時鐘(MCK),因此必須先配置電源管理控制器使能TWI時鐘,TWI接口有一條與高級中斷控制器(AIC)連接的中斷線,如果TWI接口通信采用中斷的方式,必須對高級中斷控制器配置使能TWI接口的中斷。
1.1.3 LCD接口
這里采用的LCD型號是HGO12864A,這是一款由清達光電技術有限公司生產的FSTN型串行外設(SPI)串口液晶,集成了背光電路和NT7532液晶控制器,從而簡化了外部電路設計和編程設計。
1.1.4 按鍵處理電路
利用并行輸入/輸出控制器(PIO),將I/O口配置為通用功能I/O線實現按鍵處理電路。
1.1.5 A/D電路
(1) 輸入信號調理電路。由于各通道或各參數送入測量放大器的信號大小并不相同,但都要放大至ADC輸入要求的標準電壓,因此各個通道要求測量放大器的增益就每個通道的數據采集而言,可實現自動控制增益或量程自動切換,因此這里采用了程控增益放大器LTC6915。
(2) 模/數轉換器(ADC)。這里用的是AT91SAM7SE256內置的ADC,是逐次逼近型的10位模/數轉換器,它還集成了一個8選1模擬多路復用器,可實現8路模/數轉換,轉換電壓范圍為0 V~A/D基準電壓,ADC支持8位或10位分辨率模式,并且轉換結果都送入一個所有通道可用的通用寄存器中,即通道專用寄存器,可配置為軟件觸發、外部觸發A/DTRG引腳上升沿或內部觸發定時計數器輸出。
1.1.6 NAND FLASH接口
AT91SAM7SE256的外部總線接口(EBI)集成了NAND FLASH器件接口電路,微控制器留給NAND FLASH的地址空間為:0x40000000~0x4FFFFFFF。這里采用的是SAMSUNG公司的K9F1G08U0M,NAND FLASH用于大容量存儲設備保存采集的數據[5]。
1.1.7 SDRAM接口
這里使用SDRAMC芯片HY57V561620與微控制器的SDRAM控制相連[5],數據寬度為16 b,容量為32 MB。
1.1.8 USB設備接口
PC機是通過USB接口與本采集系統進行通信的,此時,本采集系統是作為基于USB接口的大容量存儲設備出現在通信過程中;PC機在給鋰離子電池充電時,也是通過USB接口來實現的。
1.1.9 DBGU接口
AT91SAM7SE256內置的調試單元(Debug Unit)為處理器訪問基于Atmel的ARM內核系統的所有調試功能提供了一個單入口點,調試單元集成的2引腳通用異步收發器(UART)可用于多種調試與追蹤目的,它為調試監控通信提供了理想媒介。調試單元通過MAX3232實現RS 232通信,收發器MAX3232配備專有的低漏失電壓發射器輸出狀態,通過雙電荷泵,在3.0~5.5 V供電下,表現出真正的RS 232協議器性能,這些器件只需4個0.1 μF的外部電容,用于電荷泵。在保持RS 232協議輸出電平的前提下,可確保120 KBPS的數據傳輸速率。
2 基于IAR的軟件設計與實現
軟件設計主要包括:LCD顯示程序、按鍵設置程序、A/D數據采集程序、數據處理及FFT程序和基于NAND FLASH的USB大容量存儲設備驅動程序。軟件的編程均是基于Windows下的集成開發環境IAR,同時借助于J?Link仿真器實現程序燒寫和在線仿真,借助于DBGU調試接口與PC機實現RS 232調試通信,PC機通過終端仿真程序SecureCRT實時顯示調試信息。
2.1 程序模塊設計與調試
2.1.1 LCD顯示程序
LCD驅動芯片NT7532驅動128×64點陣的液晶,將64行從上至下分為0~7共8頁,每頁由0~127共128個縱列構成,每列是8個點,與顯存中的一個字節對應,用戶只需要向NT7532的顯示RAM中傳送數據,NT7532就會自動掃描將顯示RAM的數據自動在LCD液晶上顯示出來,顯示數據的內容和大小由字庫決定,微處理器AT91SAM7SE256是通過串行外設接口(SPI)與NT7532實現通信、控制LCD顯示的,圖2為LCD顯示程序層次框圖。
2.1.2 按鍵設置程序
A/D轉換數據文件存儲時間及文件名的修改和NAND FLASH的格式化都是通過按鍵設計程序處理的,按鍵電平的定時掃描是通過AT91SAM7SE256的周期間隔定時器(PIT)中斷方式ISR_Pit()實現的,在PIT中斷處理程序中對與按鍵相關的I/O端口電平進行掃描,獲得電平狀態的變化,根據電平變換實現相應功能,圖3為按鍵掃描流程圖,按鍵處理程序如下:
2.1.3 A/D數據采集程序
ADC對連續的模擬信號進行采樣,得到離散化的數字信號,由微處理器讀取該數字信號并進行相應的處理。采樣頻率過高,采樣點數過多,會占用大量的計算機內存,降低數據處理速度;采樣頻率過低,又會使采樣數據失真而無法恢復原始連續信號。因此,必須根據信號的頻率范圍設置采樣頻率,同時又要滿足采樣定理的要求。當采樣頻率一定時,增加采樣點數可以提高頻率分辨率,但數據存儲空間和計算量也相應增大。一般可根據實際需要進行采樣點數的選取,通常設置為2的整數次冪,以便于進行后續的FFT頻譜分析。
首先,初始化微控制器的ADC,配置為軟件觸發,工作模式為正常模式的10 b模/數轉換器,然后使能本課題需要的5路模/數轉換通道,設定程控增益預算放大器LTC6915的放大倍數,設置微控制器的TC2定時時間(采樣頻率),啟動TC2使其工作在中斷方式下,在TC2的中斷處理程序中,啟動A/D轉換,讀取A/D轉換結果,判斷A/D轉換數據Buffer是否已滿,如果已滿停止A/D轉換并將Buffer中的數據以FAT16文件系統管理的方式寫入NAND FLASH中,繼續A/D轉換,否則繼續向Buffer寫入A/D轉換結果[6]。
2.1.4 數據處理及FFT程序
(1) 時域參數檢測
為了消除干擾,對轉換數據進行滑動平均濾波;再求最值和平均值,結合模擬輸入范圍進行電壓的標度變換,可以計算出輸入信號的峰峰值和平均值。
對于周期性信號,通過計算相鄰前向過零點之間的數據點數,根據采樣頻率得到模擬輸入的周期(頻率)。此外,還可以通過相關函數計算信號周期的估算值。
(2) FFT程序及其優化
(3) 基于NAND FLASH的USB存儲設備驅動程序
在編寫USB大容量存儲設備的固件程序時,是借鑒Atmel公司提供的AT91 USB 大容量存儲設備軟件開發包,參照技術手冊AT91 USB Framework和AT91 USB Mass Storage Device Driver Implementation完成的。
3 數據編程處理結果顯示
在研究的采集系統中,以文件的形式存儲、管理模/數轉換結果,NAND FLASH中存儲的數據文件通過文件名確定文件屬于哪路模擬量輸入通道和處于該通道的第幾個采集文件。為了得到用來分析石油管道腐蝕情況的參數,需要對這些模/數轉換結果進行FFT處理獲得想要的兩大參數:直流分量和50 Hz分量的大小。
在數據編程處理過程中,分別實現了基于Matlab的數據處理編程及VC++與Matlab的混合編程。由于Matlab集成的FFT算法和強大、易用的繪圖處理功能使得在Matlab環境下實現數據處理很方便快捷,但是Matlab是一種腳本語言,需要依賴Matlab開發環境,這就大大制約了程序的可移植性和通用性;由于通過VC++實現Matlab的強大繪圖功能很復雜,因此通過VC++與Matlab混合編程可以充分發揮出二者各自的優點,大大提高了開發效率。
為了測試采集系統ADC功能,基于Matlab的數據處理編程,基于VC++與Matlab的混合數據處理編程的處理效果,現用信號發生器提供特定頻率和特定幅值的電壓信號,每隔一段時間修改直流分量和交流分量的幅值,并對修改結果進行記錄,待采集系統進行一段時間的模/數轉換后,通過USB接口將采集系統的NAND FLASH中的數據讀取到PC機上進行分析處理。圖4為基于Matlab的編程處理效果,圖5為Matlab與VC++混合編程的處理效果。
從圖4和圖5可以看出,Matlab與VC++混合編程處理與基于Matlab的數據處理編程達到了基本相同的效果,同調試信號發生器的記錄結果進行對比,可以看出采集系統與數據處理編程的整體效果是不錯的,但兩幅圖中都有毛刺出現,這是因為在出現毛刺的時刻沒有改變信號發生器的輸出信號,經過仔細分析初步將問題定位于NAND FLASH的布線問題上,嚴格根據NAND FLASH的布線規范說明重新做了塊板子,毛刺出現的概率降低了,基本上滿足了客戶需求。
4 結 論
本文把嵌入式系統應用于便攜式數據采集與處理中,按照新的方案進行了系統軟硬件的設計、調試并最終實現。在硬件方面,根據Atmel公司提供的微控制器開發板和客戶實際需求參與了硬件電路的設計,實現了5路模擬量輸入通道,鋰離子電池充電電路,SDRAM,NAND FLASH存儲器電路,USB設備接口和DBGU接口電路。系統軟件方面,在IAR集成開發環境下,借鑒Atmel公司提供的微控制器軟件開發包,參與設計了LCD顯示程序,按鍵設置程序,A/D數據采集程序,數據處理及FFT程序,NAND FLASH的FAT16管理程序和基于NAND FLASH的USB大容量存儲設備驅動程序。在對NAND FLASH中存儲的數/模轉換的數據進行分析、處理的過程中,分別進行了基于Matlab的數據處理編程和Matlab與VC++的混合編程。
參考文獻
[1] 朱應飛,羅家融,李實,等.EAST嵌入式數據采集系統設計[J].原子能科學技術,2012,46(7):893?896.
[2] 陳曦,蔡姍姍,王清,等.基于ARM9的模塊化數據采集系統的研究[J].儀表技術與傳感器,2013(12):24?26.
[3] 付麗輝,尹文慶.基于嵌入式系統的洪澤湖水產養殖污染環境的遠程數據采集與監測[J].安徽農業科學,2012(13):7884?7886.
[4] 李濤,陳征,吳立恒,等.一種新型分量式鉆孔應變儀數據采集單元的設計及應用[J].震災防御技術,2014,9(1):142?148.
[5] 高飛,葉文華.基于嵌入式系統的OPC數據采集技術的研究與實現[J].中國制造業信息化,2012,41(5):34?39.
[6] 張俊濤,劉紅科.基于ARM的高速公路動態計重系統的設計[J].計算機測量與控制,2012,20(1):219?221.
[7] 劉會令.基于.NET的嵌入式系統OPC客戶端開發[D].北京:北京化工大學,2013.