王維斌(湖南汽車工程職業學院,湖南 株洲 412001)
CAN是Controller Area Network(控制器局域網)的縮寫,屬于現場總線,是一種支持分布式控制、實時控制的串行通信總線協議,采用短報文幀及CSMA/CD-AMP(帶有信息優先權及沖突檢測的載波監聽多路訪問)的MAC(媒介訪問控制)方式[1]。CAN節點是CAN總線網絡中的一個單元,能通過CAN總線與其他各個節點之間實現通信,降低控制系統的復雜程序,當前主要用于汽車電子控制系統中的各傳感器之間以及各控制模塊之間的通信。CAN總線節點一般由單片機、CAN控制器以及CAN收發器三部分組成,如圖1所示。

圖1 CAN總線節點的組成
設計中采用MC9S12系列單片機作為主控芯片,內部集成了MSCAN模塊,能夠滿足CAN2.0A和CAN2.0B協議標準,是當前汽車控制器中最流行的CAN控制器架構。CAN收發器是CAN控制器和物理總線之間的接口,用于實現CAN控制器與CAN總線之間差分信號和二進制碼流的相互轉換,是CAN總線網絡中必不可少的組成部分。本設計中采用專用CAN收發器芯片TJA1040。它是NXP公司推出的針對汽車電子行業使用的高性能CAN收發器。此外,系統中還包括電源部分、顯示部分和按鍵控制等其他部分電路。
單片機最小系統電路包括電源電路、復位電路、時鐘電路以及BDM下載電路等[2],是保證單片機能夠可靠工作的基本電路,如圖2所示。時鐘電路采用晶振Y1與單片機內部的電路組成振蕩電路來產生時鐘信號,系統中選擇頻率為16 MHz的晶振,C3、C4為起振電容,R2為晶振電阻。復位引腳是第30腳,復位電路由電阻R4、電容C6和按鍵S1組成,S1用于手動控制單片機復位。BDM電路是單片機的調試接口電路,用于連接BDM下載器,實現程序的調試與下載。它是一個6針的接口,1腳與單片機的BKGD引腳相連,4引腳接單片機的RESET復位腳,6腳接電源,3腳和5腳懸空。
CAN總線收發器電路如圖3所示,采用CAN收發器專用芯片TJA1040實現。3腳和2腳分別接電源與地,1腳和4腳分別與單片機的CAN總線模塊輸出腳PM0、PM1腳連接,實現CAN總線控制器與收發器之間的數據傳輸。SPLIT為共模穩壓輸出腳,用于穩定共模輸出。第7和第8腳為CAN信號的差分輸出腳,外接2個60 Ω的終端電阻,使阻抗連續,消除反射。

圖2 最小系統電路

圖3 收發器電路
電源電路是將12 V和24 V電壓轉換為5 V的工作電壓。電路如圖4所示,采用低壓差三端穩壓芯片LM2940-5.0,輸入端由開關SW1、保險F2以及去耦電容C2組成,輸出端分別并聯了兩電解電容C19和電容C3。其中,電解電容起到防止電流過大而燒壞芯片的作用,普通電容起到濾波的作用。LED和電阻用來作為電源指示燈。
以MC9S12XS128單片機為主控制器的CAN總線節點硬件電路如圖5所示,包括了單片機最小系統電路、CAN總線電路、顯示電路以及按鍵電路[3]。設計中采用LCD12864液晶顯示器進行發送與接收數據信息的顯示,數據端口由PA0~PA7進行驅動,控制端由PJ6、PJ7、PM3、PM2分別進行控制。采用按鍵S1~S4進行控制命令的輸入,分別與PB0、PB1、PB2、PB3端口連接。CAN收發器電路分別與單片機的75(RXCAN0)腳和74(TXCAN0)腳連接。

圖4 電源電路
主程序主要對端口進行配置,進行鎖相環(PLL)和ECT模塊的初始化、MSCAN模塊相應寄存器的設置、MSCAN時序參數和MSCAN濾波參數的確定、中斷的設置等。
發送前檢測判斷是否存在可用的緩沖區,若有可用的緩沖區,將選擇相應的發送緩沖區。當有多個緩沖區空閑時,選擇的緩沖區的序號是最小的,CPU將標識符、數據段長度和數據裝入緩沖區,最后置位發送標志位,將已選擇的緩沖區標記為發送,同時TXE標志位被清零[3]。此后,MSCAN會自動把數據裝入傳送隊列,傳送成功后將TXE標志位置1。若先前使能了發送中斷,則會產生一個發送中斷,用戶可以利用此中斷繼續加載數據到發送緩沖區。發送程序流程如圖6所示。

圖5 系統硬件電路圖
首先設置INITRQ(初始化模式請求),配置接收過濾器并啟動接收中斷,然后讀取標識符、數據長度代碼字段、讀取數據字段、釋放接收緩沖器[4]。各信息在接收后被寫入后臺接收緩沖器,只有當CPU達到標識符接收和標識符掩碼寄存器中規定的標準時,CPU才會被通知讀取信息。接收程序流程如圖7所示。

圖6 發送子程序
設計中直接采用MC9S12(X)系列單片機內部MSCAN模塊實現CAN總線網線節點的設計,硬件電路結構簡單,程序設計方便,工作可靠性高,有效解決了利用專用CAN總線控制器芯片實現CAN總線網絡節點設硬件與軟件較復雜的問題。

圖7 接收子程序