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