石 林,岳秀麟,楊春華
(豫新汽車熱管理科技有限公司,河南 新鄉 453000)
CAN屬于現場總線的范疇,它是一種有效支持分布式控制或實時控制的串行通信網絡,是目前全球應用最廣泛的開放式現場總線之一。CAN總線技術自從開發出來后,在汽車領域被極大范圍地推廣與使用,尤其在混合動力汽車和純電動汽車領域,整車各電子控制單元之間通過總線進行通信。越來越多的主車廠還在CAN總線基礎上增加了診斷與Bootloader功能,圖1為一混動車型的網絡拓撲圖。
PTC加熱器 (包括水暖式與風暖式)做為高壓、高功率、高溫工作的器件,其內部大多集成控制器,通過CAN總線與整車ECU進行通信。PTC加熱器需接收整車的指令來開啟/關閉輸出或調節輸出功率,同時還要將實時的工作狀態(耗電功率、故障信息等)放于總線上供ECU提取。在空調總成 (HVAC)的總裝車間,生產線通電檢測時需要頻繁啟動PTC加熱器,本工裝可以模擬ECU控制PTC加熱器的通斷與PWM占空比,同時將PTC的工作狀態與故障信息顯示出來,保證了空調總成在線檢測的有效進行。本文以風暖式PTC加熱器為例設計CAN總線通信工裝。
此工裝采用CAN2.0B總線協議,按表1中DBC數據表與PTC加熱器進行通信,波特率為250kb/s。
它發給PTC加熱器一種ID(0x18F00C87)的報文,控制PTC加熱器的開關狀態與工作占空比,同時接收PTC加熱器發送的3種ID (0x18F0012A、0x18F0022A、0x18F00F2A)的報文,分析報文信息并顯示出來。此工裝包含4個按鈕,分別實現PTC啟動/停止、顯示屏換頁、占空比減少1、占空比增加1功能,還包含一液晶顯示屏,分PTC工作信息、故障信息、占空比設置3個頁面顯示。
微處理器選用Freescale公司的MC9S12XS128MAL單片機,總線速度可達40MHz,它由16位中央處理單元 (CPU12X)、128KB程序Flash、8KB RAM、8KB數據Flash組成片內存儲器。它的主要功能模塊包括:內部存儲器、內部PLL鎖相環模塊、MSCAN模塊、1個8通道輸入/輸出比較定時器模塊TIM、周期中斷定時器模塊PIT、16通道A/D轉換模塊ADC、1個8通道脈沖寬度調制模塊PWM等。圖2為其最小系統電路圖。
此單片機的MSCAN模塊支持CAN2.0A/2.0B協議,有兩個信號引腳,分為發送 (TX單片機的PM1引腳)和接收(RX單片機的PM0引腳),為TTL電平,需接收發器才能連接到CAN總線上。當TX引腳上的輸出電平為低電平時,為顯性狀態,反之為隱性狀態。
本設計選用高速CAN收發器TJA1050,它是物理總線和CAN控制器之間的接口,適用的波特率范圍從60kb/s到1Mb/s。TJA1050可以為總線提供差動的發送功能,且完全符合ISO 11898標準,是PCA82C250高速CAN收發器的后繼產品。

圖1 網絡拓撲圖

表1 DBC數據表
CAN控制器通過一條串行數據輸出線TxD和一條串行數據輸入線RxD連接到收發器,而收發器則通過兩個有差動接收和發送能力的總線終端CANH和CANL連接到CAN-bus總線。通過控制引腳S可以選擇兩種工作模式:將引腳S搭鐵或懸空可以使TJA1050進入高速模式;將引腳S邊接高電平可以使TJA1050進入靜音模式。圖3為本工裝CAN收發模塊的電路圖。
本設計選用MS12864R漢字圖形點陣液晶顯示模塊,可顯示漢字及圖形,內置8192個中文漢字 (16×16點陣)、128個字符 (8×16點陣) 及64×256點陣顯示RAM (GDRAM)。支持多種軟件功能:光標顯示、畫面移位、自定義字符、睡眠模式等。按鍵輸入引腳選用單片機帶有中斷功能的I/O口(PH0~PH3),且設計有按鍵防抖電容。圖4為顯示屏與按鍵模塊電路圖。
4.1.1 總線時鐘
本設計的MCU工作總線時鐘選擇內部鎖相環 (PLL)時鐘,以獲得更高的總線時鐘頻率。首先設置時鐘合成寄存器SYNR和時鐘分頻寄存器POSTDIV,以確定PLL時鐘頻率 (此設計POSTDIV的值為0,則fPLL=fVOC)。然后設置時鐘選擇寄存器的控制位PLLSEL=1,從而選定PLL時鐘。
鎖相環產生時鐘頻率fPLL以及總線時鐘頻率fBUS由下面公式得到:


圖2 最小系統電路圖

圖3 CAN收發模塊電路圖
式中:fOSC——晶振頻率,為16MHz;SYNDIV——時鐘合成分頻系數,設置為3;REFDIV——時鐘參考分頻系數,設置為1;fPLL——鎖相環時鐘;fBUS——總線時鐘。
4.1.2 ECT定時器

圖4 顯示屏與按鍵模塊電路圖
S12X系列單片機具有8個16位緩沖寄存器的輸入捕捉(IC)/輸出比較 (OC)通道。ECT定時器模塊各個功能的使用,需要依據MCU型號確定可用的寄存器資源,其中主要的寄存器有:輸入捕捉/輸出比較選擇寄存器 (TIOS)、計數寄存器 (TCNT)、控制寄存器 (TCTL1、TCTL2)、系統控制寄存器 (TSCR1、TSCR2)、中斷使能寄存器TIE、中斷標志寄存器 (TFLG1、TFLG2)、輸入捕捉/輸出比較寄存器TCx等。具體程序見圖5。

圖5 ECT定時器程序
4.1.3 MSCAN模塊
首先,此設計的總線波特率為250kb/s,當MSCAN模塊進入初始化模式后 (INITRQ=1且INITAK=1),需要通過設置總線定時器寄存器CAN0BTR0與總線計數器寄存器CAN0BTR1來實現。計算公式如下:
位時間=預分頻值×(1+時間段1+時間段2)/fCANCLK=8×(1+2+13)/32=4
即,波特率為1/位時間=250kb/s,圖6為其程序代碼。

圖6 MSCAN模塊程序代碼
其次,通過設置控制寄存器CANCTL1=0xC0,使能MSCAN模塊,且使用總線時鐘源。最后設置控制寄存器CANCTL0=0x00,退出初始化,回到一般運行模式。
4.1.4 中斷向量
此工裝涉及到3種中斷:CAN0接收中斷、按鍵 (H口)中斷與定時器1中斷,根據中斷源設置其向量地址,中斷向量程序代碼如圖7所示。

圖7 中斷向量程序代碼
此工裝的主函數流程如圖8所示。
此工裝發送的報文格式如圖9所示。
填寫報文的內容為:①ID——0x18f00c87;②RTR——0,表示數據幀;③數據——0x00 00 00 00 00 00 00 C9,表示開啟工作,占空比100%,如果調節按鍵3或按鍵4,此數據中bit1~bit7會變化;④數據長度——8;⑤數據優先級——0,表示最高。
CAN0發送與接收函數流程如圖10所示。
其中,ID為擴展幀格式,對標識符寄存器IDR0~IDR3寫入程序與讀取程序分別如圖11和圖12所示。

圖8 主函數流程圖

圖9 報文格式

圖10 CAN0發送與接收函數流程圖

圖11 寫入程序

圖12 讀取程序
CAN0接收中斷函數流程圖與按鍵中斷函數流程如圖13與14所示。

圖13 CAN0接收中斷函數流程圖
此工裝在現有功能基礎上可以增加LIN與PWM模塊,以適用不同型號的產品,還可以擴展存儲芯片,并增加USB模塊,這樣就可以存儲生產線的檢測記錄,并將數據導出到上位機,便于品質跟蹤。

圖14 按鍵中斷函數流程圖