新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于ARM的嵌入式多路信號數據采集系統

        基于ARM的嵌入式多路信號數據采集系統

        作者: 時間:2012-09-10 來源:網絡 收藏

        GPRS無線終端嵌入了TCP/IP協議和UDP協議(用戶可選),本采用TCP/IP協議,實際上GPRSDTU上實現的協議棧是TCP/IPOverPPP。

        GRPS無線數據采集終端

        圖1 GRPS無線終端

        2 硬件組成

        2.1 傳感器及放大器

        理論上,該可以同時進行16路數據的采集,但在實際的調試中,只選用了2路來做模擬。

        一路選用溫度傳感器,表面/液體熱電偶NR281530,獲取實時現場的溫度,另一路采用壓力傳感器,PPM241BY油井專用型壓力傳感器,此在油田油井中具有較好應用。

        在前端處理單元,由于各種傳感器的輸出參數不同,輸出不僅電平低、內阻高,而且有共模電壓以及現場惡劣環境的影響,因此,在選用放大芯片時要綜合考慮以上因素。選取常用的MCP6S2X可編程增益放大器對原始進行放大,OP07CP做后續濾波芯片。

        2.2 微處理器

        微處理器是系統工作的核心,其性能的好壞直接決定了系統性能的優劣。本采集系統對數據實時性和精度的要求,以及易操作性方面的考慮,選擇32位的7系列處理器,它具有以下特點:

        ·體積小、低功耗、低成本、高性能;

        ·支持Thumb(16位)/(32位)雙指令,能很好兼容8位/16位器件;

        ·大量使用寄存器,指令執行速度快;

        ·指令長度固定;

        ·尋址方式靈活簡單,執行效率高

        本系統采用PHILIPS公司的單片32位微控制器LPC2134,它是一個支持實時仿真和跟蹤的16/32位7TDMI2STMCPU,含有128KB的FLASH,該存儲器用作代碼和數據的存儲。

        LPC2134擁有兩個異步串行口UART0和UART1,本系統中將UART0與GPRS終端相連,實現數據傳輸。它采用16字節收發FIFO,內置波特率發生器,包含使能實現軟件控制的機制。

        硬件SPI接口是一個同步、全雙工串行接口,最大數據位速率為時鐘速率的1/8,可配置為主機或從機。本系統中SPI接口作為主機,根據不同的中斷,控制多個從機,包括可編程增益放大器MCP6S2X,使用SPI總線訪問SD卡,以及控制開發板上的數碼管顯示。

        A/D轉換器是2個8路10位逼近式模/數轉換器,測量范圍是0~313V,10位轉換時間大于或等于2144μS,一個或多個Burst轉換模式。

        2.3 GPRS終端

        GPRS終端選用的是南京傲屹電子有限公司的AYG285C,它是采用GPRS模塊專為工業集成設計的,在溫度范圍、震動、電磁兼容性和接口多樣性等方面均采用特殊設計,保證了惡劣環境下的工作穩定性,GPRS公網的數據傳輸具有通信范圍廣,傳輸穩定可靠等特點。通過按鍵可以進行模塊參數設置或者進行網絡數據通信,串口波特率在300~115200bps可調,校驗位可選:無校驗,奇校驗,偶校驗。支持協議PPP、IP、TCP、UDP、DNS、PING的客戶端功能。另外,電源、工作狀態有LED指示,方便現場查看MODEM運行情況。

        3 系統軟件實現

        3.1 μC/OS2Ⅱ操作系統

        當需要進行多任務處理和調度時,一個實時操作系統就必不可少。為此系統中采用源碼公開的μC/OS2Ⅱ操作系統,它具有執行效率高、占用空間小、實時性能優良以及可擴展性強等特點,最小內核可編譯至2K字節。

        μC/OS2Ⅱ的移植需要滿足以下要求:

        ·處理器的C編譯器可以產生可重入代碼;

        ·可以使用C調用進入和退出臨界區代碼;

        ·處理器必須支持硬件中斷,并且需要一個定時中斷源;

        ·處理器需要能夠容納一定數據的硬件堆棧;

        ·處理器需要有能夠在CPU寄存器與內核和堆棧交換數據的指令。

        本系統使用的LPC2134ARM7處理器滿足以上所有條件,因此可以對其進行移植。根據μC/OS2Ⅱ的要求,移植μC/OS2Ⅱ到一個LPC2134ARM7體系結構上需要提供2個或3個文件:OSCPU.

        H(C語言頭文件)、OS-CPU-C.C(C程序源文件)及OS-CPU-A.ASM(匯編程序源文件)。

        任務中,采用C語言進行編程,但對于系統的初始化,仍然采用匯編來制作啟動代碼,它可以實現向量表定義、堆棧初始化、系統變量的初始化、中斷系統初始化、I/O初始化、外圍初始化、地址映射等操作。

        芯片復位后,系統初始化流程如圖2所示。

        系統初始化流程圖

        圖2 系統初始化流程圖

        3.2 接口程序及SD卡驅動的實現

        在實時內核下,接口程序讀取A/D采樣數據的方法通常有三種:程序延時法、ADC轉換完畢時產生中斷法和程序循環等待的方法。其中循環等待的方法CPU開銷小,不需要中斷服務,比較適合系統中采用。

        循環等待A/D讀取數據的偽代碼如下:

        之間通過串口相連,采集數據先通過開發板串口UART0發送到無線數據終端AYG285C的緩沖區,然后緩沖區將數據打成一個個數據包,通過GPRS網絡發送到遠程數據處理中心。因此,在μC/OS2Ⅱ下LPC2134的UART底層接口驅動顯得尤為重要。

        UART0初始化函數片斷如下:

        在本系統中,串口通信采用8位數據位,1位停止位,奇校驗,無流控制。在實際使用中為接收數據穩定波特率設置為9600bps效果較好。在測試系統中,測量到的數據范圍為10-6~101,有效數字為4位,所以在發送數據時采用每幀數據由3個字節組成,第1個字節為數據指數部分,高四位為0,低四位中的第四位表示指數符號,0表示正數,1表示負數;其余三位表示指數的數值部分。

        后續兩個字節為數據底數部分,采用壓縮的BCD碼編碼方式,高位在前,低位在后,即一個字節表示兩位十進制數,則兩個字節表示四位十進制數。

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 延川县| 疏附县| 通道| 房产| 岳阳市| 银川市| 明星| 垦利县| 璧山县| 永寿县| 竹北市| 西昌市| 浦县| 长岛县| 永清县| 冕宁县| 巩义市| 通榆县| 勐海县| 霍山县| 手游| 松溪县| 花莲县| 通许县| 赤水市| 万全县| 高邮市| 内乡县| 册亨县| 库尔勒市| 司法| 本溪市| 洪泽县| 札达县| 嘉义县| 若尔盖县| 全州县| 湖州市| 靖安县| 翁牛特旗| 阳信县|