新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于ARM的智能車載終端設備系統的設計

        基于ARM的智能車載終端設備系統的設計

        作者: 時間:2013-07-22 來源:網絡 收藏

        2.4 無線數據傳輸模塊
        無線數據傳輸模塊采用Simcom公司的GSM/雙頻模塊SIM300C,該模塊主要為語音傳輸、短消息和數據業務提供無線接口。SIM3 00C具有獨立的語音接口,配合車載終端上的LCD顯示屏和操作鍵盤,可以方便地撥打電話。SIM300C模塊與主控制器通過UART1接口進行通信,傳輸速率設置為115200 bps。模塊與控制器間的通信協議是AT命令集,除了串口發送(TXD)、串口接收(RXD)之外還需要一些硬件握手信號,其中DCD信號用來檢測GPRS無線數據傳輸模塊是處于數據傳送狀態還是處于AT命令傳送狀態,DTR信號用來通知GPRS無線數據傳輸模塊傳送丁作是否已經結束。GPRS無線數據傳輸模塊硬件設計原理圖如圖4所示。

        本文引用地址:http://www.104case.com/article/147996.htm

        d.JPG



        3 車載終端的軟件設計
        本系統選用源代碼開放的實時操作系統;,下面從;操作系統的移植和用戶應用程序的編寫兩方面介紹系統軟件的設計。
        3.1 ;操作系統的移植
        μC/OS-II的移植實際上就是對與MCU相關的代碼進行重寫或修改,移植的主要工作是對與處理器有關的3個文件OS CPU.H、OS-CPU.C和OS CPU A.S的編寫。
        OS_CPU.H:主要包括了數據類型、堆棧入口寬度、堆棧增長方向、開關中斷的宏和進行任務切換的宏定義,宏可由typedef或#define來定義。
        OS_CPU.C:該文件中用C語言編寫了6個與操作系統相關的函數:OSTaskStkInit()、OSTaskCreateHook()、OSTaskDelHook()、OSTaskSw Hook()、OSTaskStatHook()、OSTimeTickHook()。其中,OSTaskStkInit()為堆棧初始化函數,必須根據具體的堆棧結構進行編寫;OSTaskC reare()和OSTaskCreateExt()通過調用該函數,初始化任務的堆棧結構;后5個函數為鉤子函數,必須聲明,在移植初期可以為空函數。
        OS_CPU_A.S:該文件中需要對處理器的寄存器進行操作,需要修改3個與處理器相關的函數:最高優先級任務調用函數OSgtartHighRdy()、任務切換函數OSCtxSw()、中斷任務切換函數OSIntCtxSw()。
        3.2 用戶應用程序的設計
        本系統采用多任務、多進程模式,將各功能應用程序設計為不同的功能模塊,加載為多個不同優先級的并發進程。各功能模塊優先次序如下:IC刷卡應用程序設為第1優先級,定位信息采集和處理程序設為第2優先級,GPRS無線數據傳輸設為第3優先級,LCD顯示程序設置為第4優先級。
        3.2.1 刷卡模塊程序設計
        ZLG500A讀寫卡模塊與IC卡之間的通信流程如圖5所示。

        e.JPG


        首先,模塊上電復位后,請求標準/所有的卡。如果在天線有效范圍內有一張以上的卡存在,調用反沖突函數uchar miffsanticoll(uchar Bcnt,uchar idata*_SNR),并取得所選擇的卡的唯一序列號。選中卡之后,根據所要訪問的卡內存儲器位置,使用相應的密鑰進行3輪確認。在成功確認后,可以對卡內存儲器進行讀、寫、增值、減值等一系列操作。以上這些步驟可以直接調用周立功公司提供的讀寫卡模塊C51函數庫實現。
        在主程序中,設置定時器0作為SPI串行接口的看門狗定時器,該定時器被設置成50 ms溢出。數據發送時開定時器中斷,若中斷之前通信未能完成(ZLG500A在SDATA線上未返回響應信號),而造成該定時器產生中斷,則取消本次傳輸,發送子程序返回SPI_ERR;數據接收時關中斷,用軟件判斷溢出次數,若在500 ms內未收到ZLG500A返回的數據,則退出本次命令的執行,命令返回SPI_ERR。
        3.2.2 數據解析及處理
        車載終端工作時,模塊會源源不斷地把接收到的GPS導航定位信息通過串行口輸出給微處理器,這些數據信息主要由幀頭、幀尾和幀內數據組成。系統所需的GPS數據,如經緯度、時間日期、速度等信息,均包含在“$GPRMC”幀內。“$GPRMC”的幀格式如下:
        $GPRMC,024813.640,A,31 58.4608,N,11848.3737,E,10.05,324.27,150706,,,A*50
        數據接收時,首先通過依次檢測“$GPRMC”的ASCII碼是否正確。若檢測無誤,則確認該幀為有效幀,再接收幀內數據并進行解析。然后按照表1的協議封裝成UDP數據包,通過GPRS傳輸到主控中心,主控中心通過軟件將車輛的位置實時顯示在電子地圖上。GPS數據傳輸協議如表1所列。

        f.JPG


        3.2.3 GPRS數據傳輸
        由于本系統所用的GPRS模塊SIM300C內部嵌入了TCP/IP協議棧,因此只要發送相關AT指令,嵌入式TCP/IP協議就可完成SIM300C接入Internet的工作,實現無線數據傳輸的功能。
        利用AT指令控制SIM300C模塊建立無線信道,并進行數據傳輸的步驟如下:
        ①AT+CIPCSGP=1,“CMNET” 設置GPRS連接方式。
        ②AT+CLPORT=“TCP”,“3030” 設置TCP端口號。
        ③AT+CIPSTART=“TCP”,“主站IP地址”,“端口號” 建立TCP連接,主站的IP地址必須為公網的IP地址,連接成功后返回“CONNECT OK”。
        ④AT+CIPSEND等待模塊返回“>”后,將要發送的數據送入GPRS模塊中,然后再發送回車,數據即可發送出去。
        若建立連接后長時間沒有數據傳輸,移動網關將會自動關閉連接,重新分配IP地址。所以,為了保證網絡的正常連接,采用每2 min發送一個心跳包的方式。

        結語
        本文提出了一種基于微處理器和μC/OS-II操作系統的智能車載終端設計方案,利用GPS、GPRS和IC卡讀寫等技術,實現公交刷卡消費和實時定位監控等功能的一體化,將城市中所有的公交車連成一個網絡系統,形成一個城市交通物聯網的雛形。實驗證明,該智能車載終
        端具有模塊化、功耗低、性能穩定、可擴展等特點。

        蜂鳴器相關文章:蜂鳴器原理

        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 木里| 理塘县| 浪卡子县| 阳东县| 白银市| 南京市| 招远市| 云南省| 达州市| 萝北县| 惠安县| 深泽县| 汽车| 电白县| 昌江| 梁河县| 太仆寺旗| 仁寿县| 台前县| 石泉县| 宜兴市| 九龙县| 紫阳县| 靖江市| 资源县| 阿克苏市| 上饶市| 盐亭县| 长顺县| 马公市| 基隆市| 临猗县| 清水河县| 镇江市| 克东县| 综艺| 怀来县| 左贡县| 蓝山县| 东港市| 庄浪县|