1 引言 CAN(Controller Area Network)即控制器局域網(wǎng)絡(luò ),它是德國波許(Bosch)一公司從20世紀80年代初開(kāi)始,為解決當代汽車(chē)中日益增多的控制與測試儀器之間的數據交換而開(kāi)發(fā)的一種能有效支持分布式控制或實(shí)時(shí)控制的串行通信網(wǎng)絡(luò ),F代汽車(chē)安全性、舒適性及環(huán)保要求的不斷提高,因此,本課題著(zhù)眼于其發(fā)展的現狀,通過(guò)CAN總線(xiàn)和外設傳感器的應用,保證了車(chē)載系統和外圍電路更好的通信,最大程度的保證了車(chē)輛的安全。 2 總體結構 本課題旨在通過(guò)對CAN總線(xiàn)的研究,保證車(chē)身與外圍擴展電路正常的通信。經(jīng)過(guò)分析比較,確定實(shí)行方案,并加以驗證。 整個(gè)系統是將溫度、加速度,還有TTS、GPS的數據經(jīng)過(guò)AT90CAN128進(jìn)行處理,通過(guò)轉發(fā)器,一并發(fā)到CAN總線(xiàn)上,然后,接收端(CAN轉串口232)將接到的數據通過(guò)串口發(fā)到車(chē)載平臺上,對數據進(jìn)行處理。同理,車(chē)載平臺發(fā)送的命令也會(huì )經(jīng)過(guò)CAN總線(xiàn)傳回控制器,對外圍設備進(jìn)行控制(數據的逆向傳輸)。 系統原理如圖1所示: ![]() 圖1系統原理 2.1硬件設計 1) AT90CAN128做主控制器,它是ATMEL公司生產(chǎn)帶有一個(gè)CAN的控制器,CAN控制器集成了CAN協(xié)議的物理層和數據鏈路層的功能,可完成對數據的成幀處理,包括位填充、數據塊編碼、循環(huán)冗余校驗和優(yōu)先級判別等功能。符合CAN2.OA和CAN2.OB協(xié)議規范,支持標準幀和擴展幀的接收和發(fā)送。 2) ATA6660也是ATMEL公司的新型高速度的CAN總線(xiàn)收發(fā)器。這種新產(chǎn)品采用了ATMEL公司的0.8微米BCDMOS處理技術(shù),可滿(mǎn)足45伏特電壓甚至更為苛刻環(huán)境中的應用。ATA6660是為不同工作模式下高速差動(dòng)數據傳輸(如工業(yè)和汽車(chē)制造上的應用)而專(zhuān)門(mén)設計的。針對高速數據傳輸的需求,波特率可以調整到1 Mbaud。與國際高速CAN數據通訊標準ISO11898完全兼容。 2.1.1 CAN控制器的數據接收 首先,選定CAN控制器的MOB0模式,設定自動(dòng)增量,初值為0。再使CANSTMOB的RXOK置1,從而使CAN控制器處于接收數據狀態(tài),接收一個(gè)數據后,清接收中斷標志。 2.1.2 CAN控制器的數據發(fā)送 需要先關(guān)中斷的標志,其次裝載消息數據,并把CAN控制器設置為發(fā)送狀態(tài),待數據發(fā)送完后。再把全局中斷寄存器CANGIE設置為接收使能。 CAN總線(xiàn)收發(fā)器的原理圖為圖2: ![]() 圖2 CAN總線(xiàn)收發(fā)器的原理圖 2.1.3 RS232-CAN總線(xiàn)轉換器 帶有RS232接口的數據操作站可以通過(guò)RS232接口接入,實(shí)現與CAN智能模塊的信息通訊,完成操作命令的下發(fā)及智能模塊實(shí)時(shí)數據、運行狀態(tài)的采集。 RS232-CAN總線(xiàn)轉換器原理圖為圖3: ![]() 圖3 RS232-CAN總線(xiàn)轉換器原理圖 2.2軟件設計 2.2.1 AT90CAN128的初始化 AT90CAN128的初始化是在復位模式下進(jìn)行,初始化主要包括工作方式的設置、接收濾波方式的設置,接收屏蔽寄存器ARM和接收代碼寄存器ACR的設置.波特率參數的設置和中斷允許寄存器IER的設置等,在完成AT90CAN128的初始化設置以后,AT90CAN128回到工作狀態(tài)進(jìn)行正常的通訊任務(wù)。 CAN總線(xiàn)初始化的流程圖為圖4: ![]() 圖4 CAN總線(xiàn)初始化的流程圖 下面給出了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)先級 ///////////////////////////// CANBT1=0x7E; CANBT2=Ox6E; CANBT3=Ox7F; CANTCON=OxFF: .//波特率設置為10.000kHz ///////////////////////////// CANPAGE=0xOO://選通Mob0 CANSTMOB=0: //狀態(tài)寄存器清零 CANCDMOB=Ox01;//DLC選擇lbyte CANCDMOB I=0x80;//允許接收 CANGCON I=0x02;//選擇使能模式 2.2.2 CAN總線(xiàn)收發(fā)器設計 此系統選用了ATMEL公司的AT90CAN128芯片作為CAN總線(xiàn)控制器,通過(guò)對其相應寄存器的配置,并與ATA6660CAN總線(xiàn)收發(fā)器配合,便可實(shí)現對CAN總線(xiàn)的操縱。 AT90CAN128兼容CAN2.0A和CAN2.OB規范,提供了從MOBO到MOBl4共15組MOB,每個(gè)MOB都有獨立的ID和ID接收過(guò)濾碼,可看作CAN總線(xiàn)上的獨立器件進(jìn)行控制。 2.2.3中斷處理 在CAN收發(fā)數據中,最霞要的就是中斷處理過(guò)程。 為了保證總線(xiàn)轉換過(guò)程中不產(chǎn)生丟包現象,在此設計中。CAN與RS232的接收均采用中斷形式,并設計了兩個(gè)軟件F1-FO分別做為CAN和RS232的緩沖,在中斷處理中將數據壓入FIFO,減少了中斷服務(wù)程序所占用的時(shí)間。使系統中斷后能迅速恢復并準備接收下一數據。當總線(xiàn)空閑時(shí),轉換器再將FIFO中的數據以硬件中斷形式依次發(fā)出。由于CAN總線(xiàn)數據采用的是短幀結構,不會(huì )長(cháng)時(shí)問(wèn)占用總線(xiàn),所以這樣做不會(huì )對總線(xiàn)的實(shí)時(shí)性產(chǎn)生很大影響。 本文作者創(chuàng )新點(diǎn):本論文主要研究CAN總線(xiàn)的特性及優(yōu)勢,實(shí)現在CAN總線(xiàn)上進(jìn)行數據通信。課題設計并實(shí)現的功能模塊,可擴展性好,便于升級和維護。有良好的實(shí)際應用價(jià)值,有利于CAN總線(xiàn)的汽車(chē)應用國產(chǎn)化。 作者:唐輝,劉錦高 來(lái)源:《微計算機信息》(嵌入式與SOC)2009年第3-2期 |