李愛佳,崔建峰,李愛慧,劉慧豐
(1.中北大學電子測試技術國家重點實驗室,太原 030051;2.哈爾濱電機廠有限責任公司,哈爾濱 150000;3.北京特種車輛試驗場,北京 100072)
隨著信息技術與計算機通信技術的飛速發(fā)展,CAN總線(Controller Area Network)已成為目前國際上應用最廣泛的現(xiàn)場總線之一。CAN總線最開始是由20世紀80年代德國Bosch公司為了解決現(xiàn)代汽車中龐大的電子控制裝置之間的通信而最先提出的。在汽車領域,CAN總線被設計為汽車環(huán)境中的微控制器通信,與車載其他電子控制裝置ECU之間交換信息[1]。CAN總線是一個單一的網(wǎng)絡總線,其外圍器件都可被掛在總線上。目前,CAN總線已經(jīng)在汽車工業(yè)、航空工業(yè)、工業(yè)控制等領域中有著廣泛的應用[2]。
車載記錄儀采用飛思卡爾單片機中的MC9S12XEP100作為主控制器,該單片機內(nèi)置CAN通信接口,只需搭配外圍電路和CAN驅(qū)動器即可。車輛采集系統(tǒng)諸如:溫度檢測、里程表更新、油量檢測、車速等所有采集系統(tǒng)與記錄儀的通信都采用CAN總線模塊[3]。通過編寫采集系統(tǒng)與記錄儀固件代碼,對不同采集系統(tǒng)采集數(shù)據(jù)定義不同的ID,車載記錄儀通過CAN總線標識符接收寄存器接收不同的擴展標識符實現(xiàn)多通道數(shù)據(jù)的實時記錄。
記錄儀由主控(MC9S12XEP100單片機)、數(shù)據(jù)接收模塊(CAN總線接口)和數(shù)據(jù)存儲模塊(Flash芯片)構成。主控MCU的控制器局域網(wǎng)是一種通信控制器,它使用先進的緩沖器安排,簡化了應用軟件。采集系統(tǒng)將不同ID和不同優(yōu)先級的多通道數(shù)據(jù)經(jīng)過CAN總線與記錄儀進行通信[4],完成對數(shù)據(jù)記錄。系統(tǒng)的結(jié)構圖如圖1所示。
圖1 系統(tǒng)結(jié)構圖
CAN總線是一種多主方式的串行通信總線,設計規(guī)范要求有較高位速率、高抗電磁干擾性[5]。其通信協(xié)議實質(zhì)是完成設備之間的信息傳遞方式,CAN總線不僅有很遠的數(shù)據(jù)傳輸距離(最長10 km),還有高速的數(shù)據(jù)傳輸速率(高達1 Mb/s)最重要的是CAN總線能根據(jù)報文的ID決定接收或者屏蔽該報文,CAN總線的模塊框圖如圖2所示。
圖2 CAN模塊框圖
方案中CAN總線使用雙絞線作為通信的介質(zhì)媒介,且CAN信號使用差分電壓進行傳送,CAN總線的兩條信號線(CAN_H和CAN_L)在靜態(tài)時均為2.5 V左右,這種狀態(tài)也稱為“隱性”;當兩條信號線之間有電壓差(一般情況下:CAN_H=3.5 V,CAN_L=1.5 V)這種狀態(tài)成為“顯性”[6]。
CAN總線接口模塊硬件設計如下頁圖3所示,方案中設計了2種CAN總線接口工作模式,具體分析如下:
1)非隔離驅(qū)動模式:選用的CAN驅(qū)動芯片為NXP公司的PCA82C251,該芯片收發(fā)器是協(xié)議控制器和物理傳輸線路之間的接口,此器件對總線提供差動發(fā)送能力,對CAN控制器提供差動接收能力[7],可以廣泛應用在汽車、一般工業(yè)控制、遠程通訊等應用領域中。其承受的共模電壓范圍為-7 V~12 V,工作最高速率為1Mb/s,RJ9電阻為斜率電阻,它用來控制通信速率斜率,方案中CAN總線的工作速率為1Mb/s,此時RJ9應該直接接地。D3和D4為二極管,主要作用是對CAN接口差分線的信號電平進行鉗位,防止外部干擾信號對其通訊過程產(chǎn)生影響。RJ8為CAN總線終端匹配電阻。
2)隔離驅(qū)動模式:選用廣州志遠電子有限公司的CTM1050T作為CAN驅(qū)動芯片,該芯片的隔離電壓為DC 2 500 V,工作速率最高為1 Mb/s,可以達到方案設計中速率的要求,由于CTM1050T在內(nèi)部已經(jīng)集成了CAN總線ESD保護器件,因此,在硬件設計中無需加載二極管,只需配裝一個去耦電容C17,當前模式仍然需要RJ8作為CAN總線終端匹配電阻。
在MC9S12XEP100主控芯片中,提供了兩路CAN協(xié)議接口,當主控單片機相應引腳因外部原因發(fā)生故障時,可通過相應的跳線電阻切換工作端口。這種冗余設計[7]能增加系統(tǒng)的平均鼓掌間隔時間,提高記錄儀的可靠性。
2.3.1 CAN總線接收數(shù)據(jù)原理分析
記錄儀總CAN總線接口主要完成數(shù)據(jù)的接收,并對相應數(shù)據(jù)進行封包和解析。CAN總線模塊的接收緩沖器結(jié)構如圖4所示。
CAN總線系統(tǒng)中,每個CAN節(jié)點通過收發(fā)器物理連接到CAN總線線路。收發(fā)器驅(qū)動供工作所需的最大電流,并具有對故障節(jié)點的電流保護。圖5為CAN總線系統(tǒng)。
圖3 CAN模塊硬件電路圖
圖4 接收緩沖器結(jié)構
圖5 CAN總線系統(tǒng)
記錄儀的CAN總線接口將實時接收多通道數(shù)據(jù),利用CAN總線接收標識符定義不同的ID對多通道數(shù)據(jù)進行封包和解析[8]。這些位中的任何一個都可以在標識符掩碼寄存器中表示為不比較,這種可編程通用標識符接收濾波器可以有效降低CPU的中斷負載,該方案中通過編程,實現(xiàn)的具體工作模式為:8個標識符接收濾波器,每個都應用與標識符的前8位,它符合CAN2.0A/B的標準標識符,CAN2.0A/B標準幀協(xié)議如表1所示。一個8位濾波器頁產(chǎn)生濾波器匹配過程如下頁圖6所示。
2.3.2 CAN接口程序設計
CAN接口模塊工作前首先對CAN模塊進行初始化設計,寄存器CAN0CTL0_INITRQ=1,表示CAN模塊進入初始化狀態(tài);寄存器CAN0BTR0_SJW=0,設置同步跳轉(zhuǎn)寬度為1個Tq時鐘周期;寄存器CAN0BTR0_BRP=2,設置波特率預分頻值為3;寄存器CAN0BTR1=0x1c,設置時間段1和時間段2的值;CAN傳輸位時間=預分頻值*(1+時間段1+時間段2)/fCANCLK,由上述對寄存器配置,可以得到CAN總線的傳輸速率為1 Mb/s。
表1 CAN2.0A/B標準幀協(xié)議
為了能接收多通道數(shù)據(jù),需要對CAN總線濾波器進行設置,要求對不同數(shù)據(jù)ID進行屏蔽或者接收設置。首先對標識符接收模式設置,方案中選用8個8位接收濾波器,寄存器配置為CAN0IDAC=0x20;然后對8個濾波器的詳細配置為:
1)8個標識符驗收控制寄存器:
CAN0IDAR0=0x2C;
CAN0IDAR1=0x8C;
CAN0IDAR2=0x6C;
圖6 濾波器匹配過程
CAN0IDAR3=0x64;
CAN0IDAR4=0x24;
CAN0IDAR5=0x50;
CAN0IDAR6=0x18;
CAN0IDAR7=0x00;
2)8個標識符掩碼寄存器:
CAN0IDMR0=0x05;
CAN0IDMR1=0x02;
CAN0IDMR2=0x03;
CAN0IDMR3=0x01;
CAN0IDMR4=0x05;
CAN0IDMR5=0x02;
CAN0IDMR6=0x01;
CAN0IDMR7=0x00;
完成對CAN總線濾波器配置后,CAN總線正常工作還需要使能其CAN功能,并確定CAN接口的時鐘源,這里設置CAN總線時間為總線時鐘源48 MHz,寄存器配置為CAN0CTL1=0xC0;CAN總線接口接收多通道數(shù)據(jù)采用中斷方式[9],所以在初始化設計中應該配置寄存器為中斷使能模式,具體配置為CAN0RIER_RXFIE=1。以上操作完成對CAN接口模塊的初始化設計。
CAN接口模塊接收多通道數(shù)據(jù)時,先寫入ID寄存器:
CAN0TXIDR0=(unsigned char)(msg.id>>3);
CAN0TXIDR1=(unsigned char)(msg.id<<5);
CAN接口模塊想要準確接收每個通道數(shù)據(jù),需讀取ID寄存器:
msg->id= (unsigned int)(CAN0RXIDR0<<3)|(unsigned char)(CAN0RXIDR1>>5);只有寫入 ID和讀取ID一致時,看它是否通過濾波器,同時被寫入有效RXBG。CAN模塊的標識符接收寄存器定義了擴展標識符的可接受模式[8]。標識符的匹配標志能清晰識別并引起接收的濾波寄存器完成對數(shù)據(jù)報文的接收工作。CAN總線接口模塊接收多通道數(shù)據(jù)流程圖如圖7所示。
圖7 CAN接口模塊接收數(shù)據(jù)流程圖
記錄儀其他模塊諸如:電源模塊、時鐘模塊、主控MCU接口配置等。電源模塊根據(jù)元器件的要求供電電壓為5 V;時鐘模塊主要為主控MCU提供48 MHz時鐘;主控MCU接口配置主要完成引腳功能設置,并完成對所有模塊的固件初始化。
為了驗證記錄儀的CAN總線接口設計的可靠性,將車載記錄儀中記錄的數(shù)據(jù)與采集系統(tǒng)中原始數(shù)據(jù)文件分析比較如下頁圖8得出:記錄儀存儲的數(shù)據(jù)完全正確,且無數(shù)據(jù)丟失現(xiàn)象。CAN總線接口設計具有可行性。
上述分析表明CAN總線接口接收數(shù)據(jù)的準確性,然而記錄儀的CAN總線接口設計需正確接收多通道數(shù)據(jù),完成對多通道數(shù)據(jù)的接收。經(jīng)過驗證,記錄儀的CAN總線接口設計能實現(xiàn)對多通道數(shù)據(jù)的記錄,經(jīng)過上述測試,從而驗證了記錄儀的CAN總線接口設計的有效性。圖9為CAN總線接口接收多通道數(shù)據(jù)在上位機驗證過程。
圖8 數(shù)據(jù)比較分析
圖9 多通道數(shù)據(jù)
本文提出一種車載數(shù)據(jù)記錄儀的多通道CAN總線接口設計,記錄儀通過CAN總線接口接收多個采集系統(tǒng)的消息數(shù)據(jù),避免了使用傳統(tǒng)RS232總線進行通信存在的傳輸速率不高、穩(wěn)定性不強等問題。經(jīng)過多次測試結(jié)果表明,該設計具有可行性、有效性。