基于CAN總線技術的汽車ECU設計
1、引言
控制器局域網(wǎng)(ControllerAreaNetwork,CAN)是Bosch公司于1986年在美國汽車工程師協(xié)會(SAE)大會上推出的一種新型串行總線,被廣泛地用于汽車內(nèi)部測量與執(zhí)行部件之間的數(shù)據(jù)通信,其總線規(guī)范已被制訂為國際標準,由于其高性能、高可靠性及獨特的設計,CAN總線技術越來越受到人們的重視[1,2]。隨著現(xiàn)代汽車技術的發(fā)展,電子設備在汽車中的比重越來越高,如電噴發(fā)動機、燃油高壓共軌、制動防抱死系統(tǒng)(ABS)、自動變速器系統(tǒng)、注油控制以及電動門窗等[3],這些總成之間需要檢測并交換大量數(shù)據(jù),采用CAN總線技術不僅成本低,而且可靠性明顯提高。從1992年起,Mercedes-Benz(奔馳)公司開始在高級客車中使用CAN總線技術,隨后,Volvo、Saab、Volkswagen、BMW、Renault以及Fiat等汽車公司也分別在自己的汽車上使用CAN總線技術[4-6]。國內(nèi)針對汽車的CAN總線技術研究還處于起步階段,北京航空航天大學、中國計算機學會單片機公共實驗室、清華大學以及中國汽車技術研究中心等單位都開展了汽車CAN總線技術的研究[7-9],但目前還不能構成系列產(chǎn)品,并沒有真正組建汽車CAN總線網(wǎng)絡。
本文以某即將定型汽車為原型,設計基于CAN總線技術的汽車ECU系統(tǒng),對于已有CAN接口的總成,可以直接依據(jù)協(xié)議讀取CAN接口的數(shù)據(jù),對于沒有CAN接口的總成,利用AT90CAN128單片機設計汽車ECU,采集傳感器信息,并通過CAN接口與其他總成交換數(shù)據(jù),組建基于CAN總線的汽車網(wǎng)絡,這樣既有利于汽車本身的數(shù)據(jù)通信,又能方便配套的便攜式診斷儀器讀取汽車技術狀態(tài)信息。
2、CAN總線網(wǎng)絡的組建
CAN是一種串行數(shù)據(jù)通信總線,其通信速率能達到1Mbps,并已經(jīng)成為一項國際標準,其最大特點是,任一節(jié)點所傳送的數(shù)據(jù)信息并不包含傳送節(jié)點或接收節(jié)點的地址,信息內(nèi)容通過一個標識符(ID)作上標記,在整個網(wǎng)絡中,該標識符是唯一的,網(wǎng)絡上的其他節(jié)點接收到信息后,每一節(jié)點都對這一標識符進行測試,以判斷信息內(nèi)容是否與己有關,如果是相關信息,將其接收并進行處理,否則,即被忽略。這樣,不同的節(jié)點可以接收到不同的數(shù)據(jù),保證了通信的實時性。
現(xiàn)代汽車廣泛地采用了電子技術,而總控模塊能隨時接收到所需要的數(shù)據(jù),實現(xiàn)汽車總成之間的數(shù)據(jù)交換使用CAN總線組成數(shù)據(jù)傳輸網(wǎng)絡主要用途之一,如發(fā)動機系統(tǒng)、自動變速器系統(tǒng)、ABS系統(tǒng)、自動差速鎖系統(tǒng)、中央充放氣系統(tǒng)、動力轉(zhuǎn)向系統(tǒng)以及電動門窗系統(tǒng)等總成之間的數(shù)據(jù)交換。利用CAN總線技術組建汽車信息傳輸網(wǎng)絡的基本結(jié)構如圖1所示。
由于一些總成生產(chǎn)廠家在設計時已經(jīng)考慮了信息交互的接口問題,在生產(chǎn)時已將CAN總線技術集成到總成上。對于這類總成(如高壓共軌發(fā)動機、自動變速器以及ABS等系統(tǒng)),只需通過ECU讀取其CAN總線協(xié)議即可完成數(shù)據(jù)信息交換。對于其他總成,通過設計汽車ECU,采集相應傳感器的信息,并利用CAN接口向總線廣播式發(fā)送數(shù)據(jù),可完成信息交換。
3、汽車ECU的設計
為了設計帶有CAN接口的汽車ECU,較為常見的方法是用單片機與CAN控制器相結(jié)合,如使用8051單片機與CAN控制器芯片SJA1000來組合使用[4][6]。由于CAN總線技術應用領域廣泛,一些芯片生產(chǎn)廠家(如Motorola、Intel、Philip、Atmel、Microchip以及NEC等公司)紛紛在自己的芯片中集成了CAN接口模塊,這樣將大大提高CAN接口通信的可靠性。本文采用Atmel公司的一款內(nèi)嵌CAN控制器的AVR型單片機AT90CAN128來實現(xiàn)CAN節(jié)點。
AT90CAN128單片機具有以下特點:128K字節(jié)FLASH,4K字節(jié)EEPROM和4K字節(jié)的SRAM,帶有硬件乘法器功能,53個通用的I/O口,32個通用工作寄存器,4個具有比較模式的定時器/計數(shù)器,2通道8位的PWM,6通道2到16位精度的PWM,2個USART和1個主從SPI串行口,1個兩線(I2C)串行接口,一個8通道10位具有可選增益差分輸入的A/D轉(zhuǎn)換器,1個帶內(nèi)部振蕩器的可編程看門狗定時器[10]。同時還集成了CAN控制器,與CAN標準幀2.0A和擴展幀2.0B完全兼容,具有15個獨立的信息對象,能夠處理所有的幀類型,具有8位靜態(tài)分配的數(shù)據(jù)緩沖區(qū),晶振頻率8MHz時數(shù)據(jù)傳送速率可達到1Mbps。
3.1硬件設計
在本文的設計中,利用AT90CAN128的A/D轉(zhuǎn)換器采集相關傳感器的電壓信號(如水溫、振動、位置、氣壓以及油壓等信號),利用定時器/計數(shù)器模塊采集相關傳感器的脈沖信號(如轉(zhuǎn)速、里程等信號),由于AT90CAN128集成了CAN控制器功能,因此,結(jié)合CAN總線收發(fā)器即可完成CAN總線的接收和發(fā)送任務。CAN總線收發(fā)器采用了ATA6660芯片,它是CAN控制器與物理傳輸媒體之間的物理連接子層接口。為提高系統(tǒng)的抗干擾性,在AT90CAN128與ATA6660芯片之間加入高速光耦芯片6N137,其接口電路如圖2所示。
從圖2中可以看出,電路主要由3部分組成:單片機AT90CAN128、高速光耦6N137和高速CAN總線收發(fā)器。單片機AT90CAN128主要負責傳感器信息的采集、內(nèi)部CAN控制器的初始化并實現(xiàn)數(shù)據(jù)的接收和發(fā)送等通信任務。在ATA6660與CAN總線的接口部分也采用了抗干擾和安全措施,ATA6660的CANH和CANL引腳各自通過5Ω的電阻與CAN總線相連,電阻可起到一定的限流作用,保護ATA6660免受過流沖擊。CANH和CANL與地之間并聯(lián)兩個30pF的小電容,可以起到濾除總線上的高頻干擾和一定的防電磁輻射的能力。另外,在兩根CAN總線與地之間分別接了一個防雷擊管,當兩輸入端與地之間出現(xiàn)瞬變干擾時,通過防雷擊管的放電可以起到一定的保護作用。
3.2軟件設計
系統(tǒng)軟件設計主要包括信號采集和CAN接口通信程序。利用AT90CAN128片上集成的ADC模塊可以采集一些常規(guī)傳感器的模擬信號,如油壓、水溫、氣壓等信號;利用定時器/計數(shù)器模塊采集傳感器脈沖信號,如轉(zhuǎn)速、行駛里程信號等。對于模擬量信號,在經(jīng)過放大器處理之后,可以直接控制單片機的ADC模塊對其進行采集;對于脈沖信號,在對其進行采集時需要進行整形處理,如轉(zhuǎn)速傳感器獲取發(fā)動機飛輪旋轉(zhuǎn)時輪齒的信號,是正弦交流信號,將其整形為方波信號,利用定時器/計數(shù)器模塊采集方波的頻率來完成速度采集。為提高轉(zhuǎn)速采集的實時性,通常采集脈沖信號的周期(兩個脈沖信號上升沿或下降沿之間的時間)來計算其頻率,并計算發(fā)動機轉(zhuǎn)速,計算公式如如式(1)所示。
式(1)中為系統(tǒng)時鐘周期,為分頻系數(shù),為發(fā)動機飛輪齒圈齒數(shù)(對于康明斯發(fā)動機為
為輪齒脈沖兩次上升(或下降)沿的計數(shù)器值。
CAN接口通信程序主要包括CAN控制器的初始化、數(shù)據(jù)接收和數(shù)據(jù)發(fā)送程序。主程序通過調(diào)用函數(shù)來實現(xiàn)數(shù)據(jù)的接收和發(fā)送,流程圖如圖3所示,在數(shù)據(jù)接收程序中,通過查詢方式讀取相應消息對象中的數(shù)據(jù)。
CAN控制器初始化工作主要包括波特率參數(shù)設置、接收屏蔽寄存器及接收代碼寄存器的設置、使能允許寄存器的設置等。通過總線定時器寄存器CANBT1、CANBT2、CANBT3來設置波特率參數(shù)。AT90CAN128中提供了一組由4個驗收碼寄存器(CANIDT1~CANIDT4)和4個驗收屏蔽寄存器(CANIDM1~CANIDM4)組成的驗收濾波器,信息只有通過它的驗收濾波才能被接收;所有驗收屏蔽寄存器為0的位,驗收碼寄存器和CAN信息幀的對應位必須相同才能驗收通過,而所有驗收屏蔽寄存器中為1的位,驗收碼寄存器對應位的驗收濾波功能則被屏蔽。通過設置驗收濾波器,既可以實現(xiàn)節(jié)點與節(jié)點之間的點對點通信,也可以實現(xiàn)一點對多點的廣播式通信,使整個數(shù)據(jù)通信網(wǎng)絡更加靈活。
4、實驗
采用本文設計的汽車ECU對車輛上的模擬信號(水溫、壓力等),脈沖信號(轉(zhuǎn)速、里程等)進行采集,并通過CAN總線發(fā)送和接收數(shù)據(jù)。采用IXXAT公司的CAN分析儀(USBtoCAN)對CAN總線進行監(jiān)控,利用計算機與CAN分析儀連接,并通過CAN總線采集ECU傳輸?shù)臄?shù)據(jù),CAN總線的通信波特率設定為125kbps,實驗中測得的總線狀態(tài)如圖4(a)所示,實驗中采用CAN2.0B擴展幀協(xié)議,采集某ECU節(jié)點的CAN總線數(shù)據(jù)如圖4(b)所示,其中節(jié)點204060為脈沖信號采集,節(jié)點204061為模擬信號采集,數(shù)據(jù)長度為8字節(jié),空余字節(jié)用FF填補,可用來擴展信息量。
根據(jù)實際測量結(jié)果,可以看出總線沒有接收到出錯幀,接收到數(shù)據(jù)幀,反映總線工作狀態(tài)正常。從接收的數(shù)據(jù)表明,每個ECU節(jié)點發(fā)送的ID碼和數(shù)據(jù)與預定義的ID碼和數(shù)據(jù)相同,總線接收和發(fā)送正常。另外,在軟件中加入了異常處理,如果某節(jié)點一直向總線發(fā)送錯誤標志,總線會自動終止該節(jié)點,其他節(jié)點也會檢測到錯誤條件,停止向該節(jié)點發(fā)送數(shù)據(jù),這樣可以避免總線癱瘓。
5、結(jié)論
本文設計的基于AT90CAN128單片機的汽車ECU,由于其本身接口豐富,可以采集多種傳感器數(shù)據(jù),并集成了CAN接口模塊,這樣提高了EUC的工作可靠性和CAN接口通信的可靠性,非常適宜于組建汽車CAN總線網(wǎng)絡。另外,在硬件上做了優(yōu)化處理,提高了系統(tǒng)的抗干擾能力。實驗表明,該ECU能準確采集數(shù)據(jù),并能通過CAN總線進行可靠通信。
文章版權歸西部工控xbgk所有,未經(jīng)許可不得轉(zhuǎn)載。