嵌入式多路信號數(shù)據(jù)采集系統(tǒng)實現(xiàn)方案
UART0初始化函數(shù)片斷如下:
在本系統(tǒng)中,串口通信采用8位數(shù)據(jù)位,1位停止位,奇校驗,無流控制。在實際使用中為接收數(shù)據(jù)穩(wěn)定波特率設置為9600bps效果較好。在測試系統(tǒng)中,測量到的數(shù)據(jù)范圍為10-6~101,有效數(shù)字為4位,所以在發(fā)送數(shù)據(jù)時采用每幀數(shù)據(jù)由3個字節(jié)組成,第1個字節(jié)為數(shù)據(jù)指數(shù)部分,高四位為0,低四位中的第四位表示指數(shù)符號,0表示正數(shù),1表示負數(shù);其余三位表示指數(shù)的數(shù)值部分。
后續(xù)兩個字節(jié)為數(shù)據(jù)底數(shù)部分,采用壓縮的BCD碼編碼方式,高位在前,低位在后,即一個字節(jié)表示兩位十進制數(shù),則兩個字節(jié)表示四位十進制數(shù)。
LPC2134的UART0使用中斷方式進行通信,這樣不會占用CPU很多時間,效率比較高。當中斷服務處理子程序接收到一次中斷,它僅能知道UART0產生了中斷,還需要查詢中斷標志寄存器U0IIR,依據(jù)不同中斷源類型進行不同處理。在處理完當前的中斷源類型之后,不能立即退出服務,而應當繼續(xù)判斷U0IIR寄存器最低位是否為0。
如果為0,則表示還有尚未處理的中斷,應該繼續(xù)根據(jù)U0IIR[3∶0]判斷中斷源類型,進行處理,直到U0IIR的最低位為1,最后發(fā)送中斷結束命令結束中斷服務處理程序。
SD卡讀寫軟件移植到ARM7微處理器LPC2134上的結構圖如圖3所示。其中硬件抽象層是讀寫SD卡的硬件條件配置,是與硬件相關的函數(shù);命令層包含SD卡的相關命令以及卡與主機之間數(shù)據(jù)流的控制,這一層與實時操作系統(tǒng)μC/OSⅡ相關,與硬件無關;應用層是向應用程序提供卡的API函數(shù),這一層由實時操作系統(tǒng)μC/OSⅡ控制。
圖3 SD卡讀寫軟件移植結構圖
3.3 應用程序實現(xiàn)
系統(tǒng)初始化完成后,創(chuàng)建各個任務,進入多任務調度處理。應用程序框架流程如圖4所示。
圖4 應用程序框架流程
本系統(tǒng)的主要任務是完成數(shù)據(jù)采集。系統(tǒng)在得到遠程數(shù)據(jù)中心的采集命令后,選擇適當?shù)牟杉ǖ?,并設置A/D模塊參數(shù)。在采集過程中判斷是否要停止,如果停止,任務處于等待掛起狀態(tài)。
4 結語
考慮到現(xiàn)場采集到的多是小信號,為了有較好的準確度和精確度,對A/D后的采集數(shù)據(jù)還要進行分析和調整,然后再發(fā)送到數(shù)據(jù)處理中心。另外,隨外界環(huán)境的變化,也可以修改擬合曲線以適應具體的應用。隨著3G時代的來臨,可以考慮采集現(xiàn)場的相關視頻信號。在短消息功能,數(shù)據(jù)加密技術以及軟件操作和文件管理上還有待進一步開發(fā)和優(yōu)化。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論