新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于CAN總線在車載系統(tǒng)中的應(yīng)用

基于CAN總線在車載系統(tǒng)中的應(yīng)用

作者: 時(shí)間:2016-09-12 來(lái)源:網(wǎng)絡(luò) 收藏

1 引言

本文引用地址:http://www.butianyuan.cn/article/201609/303276.htm

CAN(Controller Area Network)即控制器局域網(wǎng)絡(luò),它是德國(guó)波許(Bosch)一公司從20世紀(jì)80年代初開(kāi)始,為解決當(dāng)代汽車中日益增多的控制與測(cè)試儀器之間的數(shù)據(jù)交換而開(kāi)發(fā)的一種能有效支持分布式控制或?qū)崟r(shí)控制的串行通信網(wǎng)絡(luò)?,F(xiàn)代汽車安全性、舒適性及環(huán)保要求的不斷提高,因此,本課題著眼于其發(fā)展的現(xiàn)狀,通過(guò) 和外設(shè)傳感器的應(yīng)用,保證了和外圍電路更好的通信,最大程度的保證了車輛的安全。

2 總體結(jié)構(gòu)

本課題旨在通過(guò)對(duì)的研究,保證車身與外圍擴(kuò)展電路正常的通信。經(jīng)過(guò)分析比較,確定實(shí)行方案,并加以驗(yàn)證。

整個(gè)系統(tǒng)是將溫度、加速度,還有TTS、GPS的數(shù)據(jù)經(jīng)過(guò)AT90CAN128進(jìn)行處理,通過(guò)轉(zhuǎn)發(fā)器,一并發(fā)到上,然后,接收端(CAN轉(zhuǎn)串口232)將接到的數(shù)據(jù)通過(guò)串口發(fā)到車載平臺(tái)上,對(duì)數(shù)據(jù)進(jìn)行處理。同理,車載平臺(tái)發(fā)送的命令也會(huì)經(jīng)過(guò)CAN總線傳回控制器,對(duì)外圍設(shè)備進(jìn)行控制(數(shù)據(jù)的逆向傳輸)。

系統(tǒng)原理如圖1所示:

1.gif

圖1系統(tǒng)原理

2.1硬件設(shè)計(jì)

1) AT90CAN128做主控制器,它是ATMEL公司生產(chǎn)帶有一個(gè)CAN的控制器,CAN控制器集成了CAN協(xié)議的物理層和數(shù)據(jù)鏈路層的功能,可完成對(duì)數(shù)據(jù)的成幀處理,包括位填充、數(shù)據(jù)塊編碼、循環(huán)冗余校驗(yàn)和優(yōu)先級(jí)判別等功能。符合CAN2.OA和CAN2.OB協(xié)議規(guī)范,支持標(biāo)準(zhǔn)幀和擴(kuò)展幀的接收和發(fā)送。

2) ATA6660也是ATMEL公司的新型高速度的CAN總線收發(fā)器。這種新產(chǎn)品采用了ATMEL公司的0.8微米BCDMOS處理技術(shù),可滿足45伏特電壓甚至更為苛刻環(huán)境中的應(yīng)用。ATA6660是為不同工作模式下高速差動(dòng)數(shù)據(jù)傳輸(如工業(yè)和汽車制造上的應(yīng)用)而專門設(shè)計(jì)的。針對(duì)高速數(shù)據(jù)傳輸?shù)男枨螅ㄌ芈士梢哉{(diào)整到1 Mbaud。與國(guó)際高速CAN數(shù)據(jù)通訊標(biāo)準(zhǔn)ISO11898完全兼容。

2.1.1 CAN控制器的數(shù)據(jù)接收

首先,選定CAN控制器的MOB0模式,設(shè)定自動(dòng)增量,初值為0。再使CANSTMOB的RXOK置1,從而使CAN控制器處于接收數(shù)據(jù)狀態(tài),接收一個(gè)數(shù)據(jù)后,清接收中斷標(biāo)志。

2.1.2 CAN控制器的數(shù)據(jù)發(fā)送

需要先關(guān)中斷的標(biāo)志,其次裝載消息數(shù)據(jù),并把CAN控制器設(shè)置為發(fā)送狀態(tài),待數(shù)據(jù)發(fā)送完后。再把全局中斷寄存器CANGIE設(shè)置為接收使能。

CAN總線收發(fā)器的原理圖為圖2:

2.gif

圖2 CAN總線收發(fā)器的原理圖

2.1.3 RS232-CAN總線轉(zhuǎn)換器

帶有RS232接口的數(shù)據(jù)操作站可以通過(guò)RS232接口接入,實(shí)現(xiàn)與CAN智能模塊的信息通訊,完成操作命令的下發(fā)及智能模塊實(shí)時(shí)數(shù)據(jù)、運(yùn)行狀態(tài)的采集。

RS232-CAN總線轉(zhuǎn)換器原理圖為圖3:

3.gif

圖3 RS232-CAN總線轉(zhuǎn)換器原理圖

2.2軟件設(shè)計(jì)

2.2.1 AT90CAN128的初始化

AT90CAN128的初始化是在復(fù)位模式下進(jìn)行,初始化主要包括工作方式的設(shè)置、接收濾波方式的設(shè)置,接收屏蔽寄存器ARM和接收代碼寄存器ACR的設(shè)置.波特率參數(shù)的設(shè)置和中斷允許寄存器IER的設(shè)置等,在完成AT90CAN128的初始化設(shè)置以后,AT90CAN128回到工作狀態(tài)進(jìn)行正常的通訊任務(wù)。

CAN總線初始化的流程圖為圖4:

4.gif

圖4 CAN總線初始化的流程圖

下面給出了CAN初始化程序。

CANGCON=0x01 //CAN硬件reset

CANGIE=0xB0; //允許除定時(shí)器溢出外的所有中斷(如接收、發(fā)送中斷)

///////////////////////////////

CANEN2=0x03;

CANEN1=Ox00; //Mob0、Mob1選通,Mob2-14禁止

//////////////////////////////

CANIE2=0x03;

CANIEl=Ox00; //Mob0、Mob1允許中斷,Mob2-14禁止中斷

CANHPMOB=0x10 //Mob()具有最高優(yōu)先級(jí)

/////////////////////////////

CANBT1=0x7E;

CANBT2=Ox6E;

CANBT3=Ox7F;

CANTCON=OxFF: .//波特率設(shè)置為10.000kHz

/////////////////////////////

CANPAGE=0xOO://選通Mob0

CANSTMOB=0: //狀態(tài)寄存器清零

CANCDMOB=Ox01;//DLC選擇lbyte

CANCDMOB I=0x80;//允許接收

CANGCON I=0x02;//選擇使能模式

2.2.2 CAN總線收發(fā)器設(shè)計(jì)

此系統(tǒng)選用了ATMEL公司的AT90CAN128芯片作為CAN總線控制器,通過(guò)對(duì)其相應(yīng)寄存器的配置,并與ATA6660CAN總線收發(fā)器配合,便可實(shí)現(xiàn)對(duì)CAN總線的操縱。

AT90CAN128兼容CAN2.0A和CAN2.OB規(guī)范,提供了從MOBO到MOBl4共15組MOB,每個(gè)MOB都有獨(dú)立的ID和ID接收過(guò)濾碼,可看作CAN總線上的獨(dú)立器件進(jìn)行控制。

2.2.3中斷處理

在CAN收發(fā)數(shù)據(jù)中,最霞要的就是中斷處理過(guò)程。

為了保證總線轉(zhuǎn)換過(guò)程中不產(chǎn)生丟包現(xiàn)象,在此設(shè)計(jì)中。CAN與RS232的接收均采用中斷形式,并設(shè)計(jì)了兩個(gè)軟件F1-FO分別做為CAN和RS232的緩沖,在中斷處理中將數(shù)據(jù)壓入FIFO,減少了中斷服務(wù)程序所占用的時(shí)間。使系統(tǒng)中斷后能迅速恢復(fù)并準(zhǔn)備接收下一數(shù)據(jù)。當(dāng)總線空閑時(shí),轉(zhuǎn)換器再將FIFO 中的數(shù)據(jù)以硬件中斷形式依次發(fā)出。由于CAN總線數(shù)據(jù)采用的是短幀結(jié)構(gòu),不會(huì)長(zhǎng)時(shí)問(wèn)占用總線,所以這樣做不會(huì)對(duì)總線的實(shí)時(shí)性產(chǎn)生很大影響。



關(guān)鍵詞: CAN總線 車載系統(tǒng)

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉