基于WinCE的智能車(chē)載儀表設(shè)計(jì)
在眾多接口中,CAN總線通信單元是在整車(chē)通信過(guò)程中的關(guān)鍵部分。在汽車(chē)的各個(gè)重要部件中,配置相應(yīng)的CAN控制單元,由雙絞線將各個(gè)CAN總線控制單元連接起來(lái)。汽車(chē)的各個(gè)部件將該部件的當(dāng)前狀態(tài)信息由CAN控制單元發(fā)送出去,經(jīng)雙絞線發(fā)送到智能車(chē)載儀表的CAN單元當(dāng)中,經(jīng)過(guò)系統(tǒng)的CAN接口將數(shù)據(jù)發(fā)送到系統(tǒng)中。車(chē)載儀表系統(tǒng)得到數(shù)據(jù)后,經(jīng)過(guò)數(shù)據(jù)處理得到汽車(chē)部件的當(dāng)前狀態(tài)信息。
CAN總線接口電路如圖2所示。采用Microchip公司的CAN總線控制器MCP2515。MCP2515完全支持CAN 2.OA/B技術(shù)規(guī)范,速度達(dá)到1Mbps;SPI的接口標(biāo)準(zhǔn)使得它與S3C2440的連接更加簡(jiǎn)單;能發(fā)送和接收標(biāo)準(zhǔn)和擴(kuò)展數(shù)據(jù)幀以及遠(yuǎn)程幀;自帶2個(gè)驗(yàn)收屏蔽寄存器和6個(gè)驗(yàn)收濾波寄存器,可以過(guò)濾掉不想要的報(bào)文,減少了微處理器的開(kāi)銷(xiāo)。CAN總線收發(fā)器采用TJA1050,該器件提供了CAN控制器與物理總線之間的接口以及對(duì)CAN總線的差動(dòng)發(fā)送和接收功能。本文引用地址:http://www.ex-cimer.com/article/197467.htm
為了增強(qiáng)CAN總線節(jié)點(diǎn)的抗干擾能力,提高系統(tǒng)的穩(wěn)定性,在CAN控制器與CAN收發(fā)器之間加入了光耦隔離器6N137,而不是使TXCAN和RX-CAN端直接與收發(fā)器相連,這樣就實(shí)現(xiàn)了總線上各CAN節(jié)點(diǎn)之間的電氣隔離。同時(shí),這也解決了MCP2515與TJA1050之間電平兼容的問(wèn)題,還可以抑制CAN網(wǎng)絡(luò)中的尖峰脈沖及噪聲干擾。光耦部分電路所采用的兩個(gè)電源必須完全隔離,否則也就失去了意義。電源的隔離可以采用小功率的電源隔離模塊或者多帶5 V隔離輸出的開(kāi)關(guān)電源模塊實(shí)現(xiàn)。這些部分雖然增加了接口電路的復(fù)雜性,但是卻提高了節(jié)點(diǎn)的穩(wěn)定性和安全性。
在CAN接口處,CAN通信線上的2個(gè)60Ω電阻(總計(jì)120 Ω),起到增大負(fù)載、減少回波反射作用,是一種阻抗匹配的補(bǔ)救措施。2個(gè)60 Ω的中間部分與地端之間連接一個(gè)電容以抗干擾。
3 軟件設(shè)計(jì)
軟件的整體環(huán)境為winCE編程環(huán)境。針對(duì)本車(chē)載智能儀表硬件系統(tǒng)定制相應(yīng)的WinCE操作系統(tǒng),實(shí)現(xiàn)對(duì)硬件的驅(qū)動(dòng)。再編寫(xiě)應(yīng)用程序,通過(guò)對(duì)應(yīng)用程序的具體操作實(shí)現(xiàn)對(duì)系統(tǒng)硬件的操作,即實(shí)現(xiàn)系統(tǒng)的功能。其中非常關(guān)鍵的是編寫(xiě)CAN控制器的驅(qū)動(dòng)。CAN驅(qū)動(dòng)實(shí)現(xiàn)應(yīng)用軟件對(duì)CAN控制單元的操作,以及讀取CAN控制單元中的數(shù)據(jù)代碼。
3.1 系統(tǒng)開(kāi)發(fā)和移植
嵌入式系統(tǒng)開(kāi)發(fā)就是系統(tǒng)驅(qū)動(dòng)層的設(shè)計(jì),其中最主要就是BSP的開(kāi)發(fā)和調(diào)試。所以智能車(chē)載儀表底層驅(qū)動(dòng)的開(kāi)發(fā)就顯得尤為重要。
由于使用的是WinCE操作系統(tǒng),所以使用Platform Builder定制WinCE操作系統(tǒng)鏡像。在Platform Builder中,可以添加系統(tǒng)部分硬件(如液晶屏、RAM)的驅(qū)動(dòng),這些驅(qū)動(dòng)已經(jīng)由微軟公司編寫(xiě)好。然后啟動(dòng)Bootloader,把鏡像文件下載到Flash存儲(chǔ)器中,并配置操作系統(tǒng)啟動(dòng)文件boot.ini。
3.2 CAN總線驅(qū)動(dòng)開(kāi)發(fā)
由于CAN是外部設(shè)備,所以需要將CAN的驅(qū)動(dòng)以流接口驅(qū)動(dòng)方式編寫(xiě)。流接口驅(qū)動(dòng)函數(shù)被設(shè)計(jì)來(lái)與通常的文件系統(tǒng)API(如 Activate Dev-iee、ReadFile、WriteFile和IOControl等)緊密匹配,即流接口驅(qū)動(dòng)在應(yīng)用程序中表現(xiàn)為一個(gè)系統(tǒng)文件,應(yīng)用程序通過(guò)對(duì)系統(tǒng)文件的特殊文件進(jìn)行操作從而完成對(duì)設(shè)備的操作。編寫(xiě)流接口文件主要用到流接口函數(shù),也就是流接口驅(qū)動(dòng)的入口點(diǎn),如XXX_Init、XXX_Read和XXX_Open等。這些流接口文件與相應(yīng)的API函數(shù)對(duì)應(yīng),使應(yīng)用程序由相應(yīng)的函數(shù)可以訪問(wèn)到外部設(shè)備。
評(píng)論