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