基于CAN總線(xiàn)技術(shù)的汽車(chē)ECU設計
3.2軟件設計
系統軟件設計主要包括信號采集和CAN接口通信程序。利用AT90CAN128片上集成的ADC模塊可以采集一些常規傳感器的模擬信號,如油壓、水溫、氣壓等信號;利用定時(shí)器/計數器模塊采集傳感器脈沖信號,如轉速、行駛里程信號等。對于模擬量信號,在經(jīng)過(guò)放大器處理之后,可以直接控制單片機的ADC模塊對其進(jìn)行采集;對于脈沖信號,在對其進(jìn)行采集時(shí)需要進(jìn)行整形處理,如轉速傳感器獲取發(fā)動(dòng)機飛輪旋轉時(shí)輪齒的信號,是正弦交流信號,將其整形為方波信號,利用定時(shí)器/計數器模塊采集方波的頻率來(lái)完成速度采集。為提高轉速采集的實(shí)時(shí)性,通常采集脈沖信號的周期(兩個(gè)脈沖信號上升沿或下降沿之間的時(shí)間)來(lái)計算其頻率,并計算發(fā)動(dòng)機轉速,計算公式如如式(1)所示。
式(1)中為系統時(shí)鐘周期,為分頻系數,為發(fā)動(dòng)機飛輪齒圈齒數(對于康明斯發(fā)動(dòng)機為為輪齒脈沖兩次上升(或下降)沿的計數器值。
CAN接口通信程序主要包括CAN控制器的初始化、數據接收和數據發(fā)送程序。主程序通過(guò)調用函數來(lái)實(shí)現數據的接收和發(fā)送,流程圖如圖3所示,在數據接收程序中,通過(guò)查詢(xún)方式讀取相應消息對象中的數據。
CAN控制器初始化工作主要包括波特率參數設置、接收屏蔽寄存器及接收代碼寄存器的設置、使能允許寄存器的設置等。通過(guò)總線(xiàn)定時(shí)器寄存器CANBT1、CANBT2、CANBT3來(lái)設置波特率參數。AT90CAN128中提供了一組由4個(gè)驗收碼寄存器(CANIDT1~CANIDT4)和4個(gè)驗收屏蔽寄存器(CANIDM1~CANIDM4)組成的驗收濾波器,信息只有通過(guò)它的驗收濾波才能被接收;所有驗收屏蔽寄存器為0的位,驗收碼寄存器和CAN信息幀的對應位必須相同才能驗收通過(guò),而所有驗收屏蔽寄存器中為1的位,驗收碼寄存器對應位的驗收濾波功能則被屏蔽。通過(guò)設置驗收濾波器,既可以實(shí)現節點(diǎn)與節點(diǎn)之間的點(diǎn)對點(diǎn)通信,也可以實(shí)現一點(diǎn)對多點(diǎn)的廣播式通信,使整個(gè)數據通信網(wǎng)絡(luò )更加靈活。
4、實(shí)驗
采用本文設計的汽車(chē)ECU對車(chē)輛上的模擬信號(水溫、壓力等),脈沖信號(轉速、里程等)進(jìn)行采集,并通過(guò)CAN總線(xiàn)發(fā)送和接收數據。采用IXXAT公司的CAN分析儀(USBtoCAN)對CAN總線(xiàn)進(jìn)行監控,利用計算機與CAN分析儀連接,并通過(guò)CAN總線(xiàn)采集ECU傳輸的數據,CAN總線(xiàn)的通信波特率設定為125kbps,實(shí)驗中測得的總線(xiàn)狀態(tài)如圖4(a)所示,實(shí)驗中采用CAN2.0B擴展幀協(xié)議,采集某ECU節點(diǎn)的CAN總線(xiàn)數據如圖4(b)所示,其中節點(diǎn)204060為脈沖信號采集,節點(diǎn)204061為模擬信號采集,數據長(cháng)度為8字節,空余字節用FF填補,可用來(lái)擴展信息量。
根據實(shí)際測量結果,可以看出總線(xiàn)沒(méi)有接收到出錯幀,接收到數據幀,反映總線(xiàn)工作狀態(tài)正常。從接收的數據表明,每個(gè)ECU節點(diǎn)發(fā)送的ID碼和數據與預定義的ID碼和數據相同,總線(xiàn)接收和發(fā)送正常。另外,在軟件中加入了異常處理,如果某節點(diǎn)一直向總線(xiàn)發(fā)送錯誤標志,總線(xiàn)會(huì )自動(dòng)終止該節點(diǎn),其他節點(diǎn)也會(huì )檢測到錯誤條件,停止向該節點(diǎn)發(fā)送數據,這樣可以避免總線(xiàn)癱瘓。
5、結論
本文設計的基于A(yíng)T90CAN128單片機的汽車(chē)ECU,由于其本身接口豐富,可以采集多種傳感器數據,并集成了CAN接口模塊,這樣提高了EUC的工作可靠性和CAN接口通信的可靠性,非常適宜于組建汽車(chē)CAN總線(xiàn)網(wǎng)絡(luò )。另外,在硬件上做了優(yōu)化處理,提高了系統的抗干擾能力。實(shí)驗表明,該ECU能準確采集數據,并能通過(guò)CAN總線(xiàn)進(jìn)行可靠通信
評論