在當前的汽車產業中,出于對安全性、舒適性、方便性、低公害、低成本的要求,開發了各種各樣的電子控制系統。本文設計一種基于ARM9 S3C2410A的智能車載系統,它能夠通過GPS全球定位系統和GPRS無線通信技術,實現車輛定位以及車輛與控制中心之間的數據通信,構建CAN總線控制模塊用于采集車輛主要部分的工作狀態,實時監控汽車的主要技術參數,并通過LCD模塊顯示車載信息的綜合信息。
1 智能車載系統的功能
??? 車載智能導航終端應具有如下功能:
??? 車輛定位 它指通過GPS全球定位系統獲取車輛的當前所處位置,包括經度、緯度、運動速度、標準時間以及海拔高度等信息;
??? 網絡通信 它采用GPRS無線通信技術,與監控中心保持聯系,實時獲取道路交通狀況,為交通道路的智能管理提供基礎;
??? 故障檢測 它通過CAN總線實時檢測汽車的主要技術參數;
??? 信息顯示 它通過LCD液晶屏顯示車輛位置、調度信息以及檢測到的汽車技術參數。
??? 智能車載系統可根據用戶需要實現其他功能,例如通過GPRS自動報警增加自動報警功能,擴展音頻設備和IDE接口設備以增加娛樂功能,通過USB接口連接圖像采集設備,對車內外進行視頻監控等功能。
2 智能車載硬件系統設計
??? 本系統以S3C2410A為主控模塊,擴展了64 MBNand Flash,用于存放啟動代碼和嵌入式Linux操作系統等;64 MB SDRAM用作系統運行時的內存;LCD提供了更好的人機交互界面,并通過串口與GPS模塊相連,通過UART異步串口與GPRS模塊相連,通過SPI接口與CAN總線相連,利用CAN總線掛接傳感器,檢測汽車主要技術參數,系統框圖如圖1所示。
2.1 主控模塊
??? S3C2410A是韓國三星公司面向手持設備以及高信價比、低功耗和低價格而設計的一款基于ARM920T內核的16/32位RISC嵌入式微處理器。它采用5級流水線,資源豐富;帶有獨立的16 KB的指令Cache和16 KB的數據Cache,64 MB SDRAM,64 MB NandFLAsH,LCD控制器,RAM控制器,NAND內存控制器,3路UART,4路DMA,4路帶PWM的定時器,并行I/O口,8路10位ADC,Touch Screen接口,I2C接口,I2S接口,2個USB接口控制器,2路SPI,其工作頻率最高達到203 MHz。
2.2 GPS模塊
??? GPS模塊主要完成GPS定位信息的接收和處理。根據設計性能的要求和節約系統成本的考慮,選用的就是GARMIN公司的GPS25-LVC接收機,其內置了GPS25OEM板。該接收機與主控模塊的接口方式采用RS 232兼容TTL的串行口方式,因此設計中將其與S3C2410A的串口1相連。GPS-25LVC與S3C2410A之間信號線僅需要連接GPS25-LVC的TXD1與S3C2410A的TXD1。另外,還要將GPS25-LVC的地線和電源線連接到主控板的地線和5 V電源上。
2.3 GPRS模塊
??? GPRS模塊主要完成車輛與車輛、車輛與控制中心的通信。在本系統中,GPRS模塊選用MC35。MC35的數據輸入/輸出接口實際上是一個UART,它可以與S3C2410中的UART接口直接相連。
2.4 CAN總線模塊
??? CAN總線模塊可以使本系統與其他車載模塊的連接,完成收集車輛的狀態信息以及進一步控制。CAN總線模塊主要包括CAN總線的控制器和收發器,在這里分別選用的是Microchip公司的MCP2510和飛利浦公司的PCA82C250。其中,CAN總線控制器MCP2510實現了CAN總線的協議,CAN總線收發器PCA82C250提供協議控制器和物理傳輸線路之間的接口。由于CAN總線控制器MCP2510具有SPI接口,因此,系統中將其與S3C2410A的SPI0相連。
2.5 故障檢測模塊
??? 故障檢測模塊主要是對汽車的主要技術參數進行檢測,并顯示到LCD顯示器上,如果檢測到故障,會發出報警信號。本文主要檢測的技術參數包括燃油消耗量、制動力、轉向力、發動機溫度、冷卻液溫度、前照燈,以及車內噪聲和尾氣等方面。該模塊主要是通過各種傳感器把各種信號轉換為電信號,再利用信號處理電路把電信號進行相應的處理,使其能與CAN總線模塊進行數據傳輸。
2.6 LCD模塊
??? LCD模塊用以實現信息的顯示,提供一個良好的人機交互界面。本系統主控模塊的處理器S3C2410內置了LCD控制器,支持STN-LCD和TFT-LCD。本文選用夏普公司的TFT-LCD模塊LQ080V3DG01,該模塊具有640×480的分辨率,18位的顏色深度,可與S3C2410A的LCD接口直接相連。
3 智能車載系統軟件設計
??? 由于Linux具有源代碼公開、剪裁方便、移植方便等諸多優點,所以本系統選擇嵌入式Linux作為軟件運行平臺。嵌入式Linux是將Linux內核移植到S3C2410A平臺上。嵌入式Linux操作系統不僅可使軟件的開發更加靈活,也能使整個系統的可靠性得到提高。該軟件設計的具體流程如圖2所示。?
?
??? 交叉編譯環境是一個由編譯器、連接器和解釋器組成的綜合開發環境。BootLoader是系統加電啟動運行的第一段軟件代碼,類似于PC機的BIOS加上硬盤MBR中的引導程序。它可以初始化硬件設備,建立內存空間的映射圖,從而將系統的軟硬件環境帶到一個合適的狀態,為最終調用操作系統內核或用戶應用程序準備好合適的環境。Linux操作系統的移植是將Linux內核經過重新的剪裁、編譯后移入到S3C2410A上。下面主要闡述各模塊驅動和應用程序的編寫。
3.1 GPS定位功能實現
??? GPS模塊軟件設計的基本思想如下:首先接收完整的NMEA0183語句,然后提取相關的數據(時間、經緯度、速度),再將這些數據送去顯示或者發送出去,并且可以保存,以便日后查看。
??? 由于GPS模塊是通過串行口1與S3C2410A進行通信的,因此本文設計了Linux系統下相應的串行口通信程序。串口程序設計具體步驟如下:
??? (1)串行口1的初始化:設置串行口1的通信方式為8位數據位,1位停止位,無奇偶校驗位。波特率為4 800 b/s。
??? (2)一幀一幀接收ASCII碼字符信息。
??? (3)對每一幀ASCII碼字符信息進行數據處理。
??? 在數據處理過程中,針對需要的定位信息要求,設計了如下的串行通信思想:
??? ①以“$GPRMC”為過濾條件,接收定位語句。
??? ②在“$GPRMc”之后的59個字符為有用的信息,所以用“59”作為判斷定位語句完整的依據。
??? ③在數據接收的過程中往往會有兩種情況,一種是每幀會得到一個以“$GPRMC”開頭的完整語句,另一種是上一幀的后半部分在加下一幀的前一部分共同組成的完整定位語句。
3.2 GPRS通信模塊實現
??? GPRS模塊是借助GPRS無線網絡實現數據的無線傳輸,從而在不同的車輛或車輛與控制中心之間架起溝通的橋梁,所以軟件的功能主要是建立無線連接,按照GPRS通信協議傳輸數據。
??? GPRS模塊的通信主要是通過串口驅動實現,在嵌入式Linux內核中已經提供了對串設備的支持,因此在配置內核編譯選項時,只需要選中對串口設備的支持,就可以實現對GPRS模塊的串口數據通信功能。為了實現與Internet的通信,還需要在配置內核編譯選項時選中PPP和TCP/IP協議。這樣一旦網絡連接建立,就可以使用應用程序來實現網絡數據的通信。
??? 本系統數據鏈路層采用PPP協議,它是一種面向字符的協議,是為在兩個對等實體間傳輸數據包連接而設計的,使用可擴展的鏈路控制協議LCP來建立、配置和測試數據鏈路。用網絡控制協議族NCP來建立和配置不同的網絡層協議,并且允許采用多種網絡層協議。一個PPP會話分四個步驟:建立連接、連接質量控制、網絡層協議配置和連接終止。
??? 嵌入式Linux系統內核源自于Linux內核,并保留了對TCP/IP以及其他的網絡協議的支持。在嵌入式Linux系統上編寫網絡應用程序與在Linux上編寫網絡應用程序沒什么大區別,通常只需要做很小的修改就可以移植到嵌入式Linux系統上。至此,GPRS模塊完整地集成到嵌入式終端中。
3.3 CAN模塊實現
??? CAN總線驅動程序要完成的報文發送、接收等任務都是圍繞CAN總線控制器展開的,因此驅動程序主要是對控制器MCP2510內部寄存器進行操作。CAN總線控制器MCP2510的初始化按照以下步驟進行:
??? (1)軟件復位,進入配置模式;
??? (2)設置CAN總線波特率;
??? (3)關閉中斷,設置ID過濾器;
??? (4)切換MCP2510到正常狀態;
??? (5)清空接收和發送緩沖區;
??? (6)開啟接收緩沖區,開啟中斷。
4 結 語
??? 該系統不僅能夠通過GPS和GPRs實現車輛定位以及車輛與控制中心之間的數據通信,還能夠通過CAN總線檢測汽車主要技術參數,為交通道路的智能管理以及汽車的安全駕駛提供了可靠保障。
評論
查看更多