新聞中心

        EEPW首頁 > 汽車電子 > 設計應用 > 基于CDMA模塊的車載監控終端的設計方案

        基于CDMA模塊的車載監控終端的設計方案

        作者: 時間:2012-06-18 來源:網絡 收藏

        【摘要】結合現有的的解決方案,確定了基于 的總體設計方案,介紹了系統的組成、功能,給出了系統的硬件設計以及相應功能單元軟件的設計。

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

        隨著無線通信技術的發展, 智能交通系統(Intelligent TransportSystem,即ITS)已得到廣泛應用。ITS 總體來說包括四部分:交通信息采集部分、車輛調度控制部分、電子收費系統與交通信息服務。其中四個部分都需要終端的參與,車載終端是ITS 系統中非常重要的部分。傳統的車載系統通常采用GSM/GPS 方案。這種方案成本較低,在一些領域有了成功應用。車載終端最重要的功能是交通信息采集,提供車輛的準確定位和車輛運行情況(包括速度信息、行進方向等)。而定位信息和速度信息通常都是靠外置的GPS 獲取,但在車輛駛入隧道或者停放在高樓旁,車輛處于GPS 衛星的覆蓋盲區,這段時間內的調度中心無法準確得到車輛的交通信息,影響了監控調度系統的可靠性。本文提出了一種以ATMEL 公司89S51 為控制器, 模塊DTGS800 為通信、定位系統平臺的車載監控終端系統。

        1.DTGS-800 簡介

        DTGS800 是AnyDATA 公司生產的一款 無線通信模塊。

        DTGS800 工作在832MHz 頻段,功耗為0.32W,擁有高達153kbps 的數據傳輸速率,可通過AT 命令進行遠程控制,內置TCP/IP 協議棧,提供短消息服務。模塊內部集成了具有gpsOne 功能的芯片, 能夠采用gpsOne 解決方法實現定位功能。

        DTGS800 的模塊主要接口包括:通用異步串行口UART,通用I/O口GPIO、編解碼器接口CODEC、用戶接口User Interface、PM 接口。

        2.系統硬件設計

        車載監控終端主要用來與監控中心進行實時的信息交互, 包括:

        獲取車輛的位置信息、速度信息;發布調度信息;在車輛出現異常情況下進行遠程控制。另外給車輛司機提供移動通信服務,可利用此模塊撥打和接聽電話,甚至可以進行三方通話。其硬件系統是一個綜合利用電子技術和通信技術的嵌入式單片機系統,主要由控制器和通信模塊兩部分組成。

        控制器是車載監控終端的核心,它對整個系統的安全運行、可靠性有很大影響。本設計中CPU 選用了ATMEL 公司的8 位單片機89C51RD2, 它是CMOS 單片8 位微控制器80C51 的高性能CMOSFLASH 版本。其特性包括:1 個64-Kbyte FLASH 存儲區,用于存儲代碼和數據;256 字節的內部RAM,1 個9 源4 級中斷控制器和3 個定時/計數器;1 個1792 字節的XRAM,1 個硬件看門狗定時器,SPI 接口,鍵盤,1 個更加通用的串行頻道,便于多處理器通信(EUART)和加速機制(X2 Mode)。

        這款CPU 采用全靜態設計,減少了系統功耗,允許時鐘頻率降至任何數值而不導致數據損失。另外有兩種軟件可選的工作模式,降低8 位時鐘分頻器的活動狀態,進一步減少了功耗。空閑模式下,CPU 被凍結,而外設和中斷系統繼續工作。在掉電模式,RAM 內容被保存,而其他所有功能都無效。

        系統的框架圖如下所示:

        11.jpg

        圖1 系統結構框架圖

        3.系統軟件設計

        系統以任務的形式對軟件功能進行模塊劃分,軟件實現的任務包括:任務調度;車輛位置信息、速度信息的獲取;短信息的接受、處理與發送;電話的撥打與接聽;屏幕顯示。

        程序流程為:車輛發動之后,系統上電,首先進行系統初始化,然后開定時中斷與串口中斷,啟動完畢后啟動進入中斷監聽狀態,每隔10ms 掃描一次串口buffer 中的數據,并根據不同的狀態調用不同的接口函數實現各種功能。車輛監控終端最重要的任務就是實時交通信息的獲取和傳輸數據, 下文著重介紹GPS 信息的獲取和短消息的接收與發送。

        3.1 串口中斷函數

        在本系統中,處理器對DTGS800 模塊的控制是通過串口發送AT 指令實現的, 當發送某種AT 命令后,DTGS 模塊會通過串口與處理器進行數據交換。因此,如何進行串口數據管理是系統性能優劣的關鍵。在本文的設計中,采用了基于中斷的管理方式,并設置了一個200Bytes 的串口緩沖區,以循環隊列的形式實時讀取串口的接收數據。實現的步驟如下:

        3.1.1 定義全局變量

        #define REC_BUF_LEN 200

        idata volatile BYTE datain;輸入數據的長度

        idata volatile BYTE dataout;;輸出數據的長度

        BYTE xdata dat[REC_BUF_LEN]; 串口緩沖區

        3.1.2 操作函數的實現

        bit BuffOut(BYTE *dp);從緩沖區讀出數據

        bit BuffIn( BYTE *dp);向緩沖區寫入數據

        3.1.3 中斷函數

        處理器與DTGS800 模塊之間通過串口通信,當接收短信息,有來電提醒時,都會引發串口中斷,因此串口中斷函數的核心就是將接受數據存儲到循環隊列中。其實現的流程圖如下:

        22.jpg

        圖2 中斷函數流程圖

        3.1.4 接口函數

        在實際工作狀態下,通話任務,短信息任務都需要通過串口向DTGS800 模塊發送數據, 這些任務的實質都是向串口發送字節數據。因此接口函數最重要的就是定義發送字節函數,定義如下:

        void WriteToComm(BYTE c)

        {

        SBUF = c;

        while (! TI);

        TI = 0;

        }

        3.2 系統任務設計

        根據不同的任務定義了不同的系統狀態,其中一部分定義如下:

        typedef enum

        {

        SYS_NET_FAIL, 網絡不通

        SYS_MISSED_CALL, 未接來電

        SYS_CALL_SPEAKING, 通話中

        SYS_END_CALL, 掛電話

        SYS_GET_GPS_INFO, 獲得GPS 數據

        SYS_SMS_INFO, 短消息接收

        SYS_SMS_DISPLAY, 短信息顯示

        }sys_app_sta;

        系統啟動完畢以后,進入main 函數中的死循環,對不同狀態響應不同的任務。以未接來電為例,定義如下函數:

        cdma相關文章:cdma原理



        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 宁明县| 长白| 宣化县| 林芝县| 霸州市| 黄石市| 武胜县| 固原市| 肥乡县| 聂荣县| 体育| 巍山| 田东县| 五原县| 吉木乃县| 凤台县| 娱乐| 额敏县| 安溪县| 霍城县| 蓬莱市| 榆中县| 隆回县| 张家川| 溧阳市| 潞城市| 蓬莱市| 安仁县| 温泉县| 河曲县| 信丰县| 徐闻县| 工布江达县| 乐山市| 健康| 玉龙| 渭源县| 长顺县| 吴川市| 泉州市| 灵寿县|