1,、引言
CAN(Controller Area Network)是德國(guó) Bosch 公司最先提出的,,是目前汽車控制器局域網(wǎng)中最流行,、最常用的總線,。它的主要特點(diǎn)是:CAN 總線為多主站總線,,各節(jié)點(diǎn)均可在任意時(shí)刻主動(dòng)向網(wǎng)絡(luò)上的其他節(jié)點(diǎn)發(fā)送信息,不分主從,,通信靈活,;CAN 總線采用獨(dú)特的非破壞性總線仲裁技術(shù),優(yōu)先級(jí)高的節(jié)點(diǎn)先傳送數(shù)據(jù),,能滿足實(shí)時(shí)性要求,;CAN 總線具有點(diǎn)對(duì)點(diǎn)、一點(diǎn)對(duì)多點(diǎn)及全局廣播傳送數(shù)據(jù)的功能,;CAN 總線上每幀有效字節(jié)數(shù)最多為 8 個(gè),,并有 CRC 及其他校驗(yàn)措施,,數(shù)據(jù)出錯(cuò)率極低,某個(gè)節(jié)點(diǎn)出現(xiàn)嚴(yán)重錯(cuò)誤,,可自動(dòng)脫離總線,,總線上的其他操作不受影響;CAN 總線只有 2 條導(dǎo)線,,系統(tǒng)擴(kuò)充時(shí)可直接將新節(jié)點(diǎn)掛在總線上,,因此走線少,系統(tǒng)容易擴(kuò)充,,改型靈活,;CAN 總線傳輸速度快,在傳輸距離小于 40 m 時(shí),,最大傳輸速率可達(dá) 1 Mb/s,。CAN 總線的應(yīng)用不僅能簡(jiǎn)化線束,實(shí)現(xiàn)傳感器共享,,降低系統(tǒng)成本,,而且能大大降低車輛的故障率。CAN 總線在汽車上的應(yīng)用是現(xiàn)代汽車技術(shù)的發(fā)展趨勢(shì),。
2,、CAN 總線在汽車中的應(yīng)用
目前,汽車中的網(wǎng)絡(luò)連接主要采用 2 條 CAN 總線,,一條是驅(qū)動(dòng)系統(tǒng)的高速 CAN 總線,,速率達(dá) 500 kb/s,另一條是車身系統(tǒng)的低速 CAN 總線,,速率是 100 kb/s,。驅(qū)動(dòng)系統(tǒng)的 CAN 主要連接對(duì)象是發(fā)動(dòng)機(jī)控制器(ECU)、ASR 及 ABS 控制器,、安全氣囊控制器,、組合儀表等,其基本特征相同,,都是控制與汽車行駛直接相關(guān)的系統(tǒng),。車身系統(tǒng)的 CAN 主要連接對(duì)象是 4 門以上的中控門鎖、電動(dòng)車窗,、后視鏡和車廂內(nèi)照明燈等,。有些先進(jìn)的轎車除了上述 2 條 CAN 總線外,還會(huì)有第 3 條 CAN 總線,,它的主要連接對(duì)象是衛(wèi)星導(dǎo)航及智能通信系統(tǒng),。
在國(guó)外尤其是在歐洲,CAN 已成為現(xiàn)代汽車中必不可少的裝置,CAN 總線技術(shù)正日趨成熟,,應(yīng)用也越來越廣,,奔馳、寶馬,、大眾,、沃爾沃、雷諾等汽車都采用 CAN 作為控制器聯(lián)網(wǎng)的技術(shù),。國(guó)內(nèi)對(duì) CAN 總線的研究剛剛起步,,到目前為止還沒有較成功的應(yīng)用。但我國(guó)對(duì)車輛局域網(wǎng)絡(luò)總線技術(shù)的研究與開發(fā)非常重視,,最近國(guó)家有關(guān)部門對(duì) CAN 總線在豪華大客車上的應(yīng)用做出明確規(guī)定,。相信這一政策的出臺(tái)必將大大促進(jìn)相關(guān)企業(yè)和科研單位對(duì)汽車 CAN 總線的研究與開發(fā)應(yīng)用。本文討論客車車身 CAN 總線系統(tǒng)中的車燈節(jié)點(diǎn)設(shè)計(jì),,它屬于低速 CAN 總線上的節(jié)點(diǎn)設(shè)計(jì),。
3、單片機(jī)及其 CAN 總線模塊
NEC 是僅次于 Freescale 的世界第二大車用單片機(jī)制造商,,由于其在中國(guó)推廣的比較晚,,國(guó)內(nèi)企業(yè)使用得并不多。CAN 總線模塊是μPD780822 型單片機(jī)的一個(gè)外設(shè),,是一個(gè)完整的 CAN 控制器,。可滿足車身 CAN 總線網(wǎng)絡(luò)的要求,。除了具有 CAN 的基本功能外,,還包括一些特有功能,如時(shí)間同步功能,、可編程的 CAN 總線喚醒和 CPU 喚醒功能,、可編程的總線關(guān)閉時(shí)發(fā)送底層復(fù)位功能等。對(duì) CAN 總線的訪問分為控制 / 狀態(tài)寄存器的訪問和發(fā)送 / 接收緩沖器的訪問,。
CAN 控制器發(fā)送的信息幀分為二種:發(fā)送數(shù)據(jù)幀和發(fā)送遠(yuǎn)程幀,。有二個(gè)發(fā)送緩沖器,,其中一個(gè)為 16 字節(jié),,一個(gè)為 8 字節(jié)。16 字節(jié)的緩沖器可以存儲(chǔ)標(biāo)準(zhǔn)幀和擴(kuò)展幀二種格式的數(shù)據(jù)幀,,8 字節(jié)的緩沖器可以用來存儲(chǔ)要發(fā)送的數(shù)據(jù),。發(fā)送數(shù)據(jù)幀時(shí),在數(shù)據(jù)寫到發(fā)送緩沖器后,,如果相應(yīng)的發(fā)送請(qǐng)求位使能,,則數(shù)據(jù)被發(fā)送到 CAN 總線上,數(shù)據(jù)幀的數(shù)據(jù)可以用軟件設(shè)置成 1~8 個(gè)字節(jié)。數(shù)據(jù)幀的格式如圖 1 所示,。
CAN 控制器接收信息時(shí)首先要將接收信息的標(biāo)識(shí)符與相應(yīng)緩沖器的標(biāo)識(shí)符進(jìn)行比較,,只有標(biāo)識(shí)符相同的信息才能被接收。μPD780822 型單片機(jī)的 CAN 模塊有 2 個(gè)獨(dú)立的發(fā)送緩沖器,,2 個(gè)緩沖器共用 1 個(gè) 16 字節(jié)的數(shù)據(jù)區(qū)來存儲(chǔ)最多 8 字節(jié)數(shù)據(jù)的 CAN 幀,。發(fā)送區(qū)和接收區(qū)的結(jié)構(gòu)相似,當(dāng)標(biāo)志位和控制位沒有設(shè)置為 CAN 專用時(shí),,CPU 可以把其作為普通的數(shù)據(jù)存儲(chǔ)區(qū)使用,。
控制器接收緩沖器有 16 個(gè),接收信息幀時(shí)用的緩沖器區(qū)由信息數(shù)量寄存器(MCNT)決定,。從總線上接收的信息被直接存儲(chǔ)在發(fā)送緩沖區(qū)中,。工作中沒有使用的接收緩沖區(qū)可以被 CPU 作為普通的 RAM 使用。每個(gè)接收緩沖器都有其可編程的中斷使能位,。
4,、網(wǎng)絡(luò)結(jié)構(gòu)和節(jié)點(diǎn)
客車車身 CAN 系統(tǒng)包括主控節(jié)點(diǎn)、燈光節(jié)點(diǎn),、空調(diào)節(jié)點(diǎn),、車門節(jié)點(diǎn)和儀表節(jié)點(diǎn)等,如圖 2 所示,。其中,,前車燈節(jié)點(diǎn)控制包括前左、右示廓燈,,前左,、右位燈,前左,、右遇險(xiǎn)報(bào)警燈,,前左、右駐車燈,,左,、右前照燈遠(yuǎn)光,左,、右前照燈近光,,前左、右霧燈和前左,、右轉(zhuǎn)向燈等 16 個(gè)控制單位,。后車燈節(jié)點(diǎn)控制包括后左、右示廓燈,,后左,、右轉(zhuǎn)向燈,后左、右制動(dòng)燈,,后左,、右位燈,后左,、右霧燈和后左,、右倒車燈等 12 個(gè)控制單位。主控節(jié)點(diǎn)主要接收來自駕駛員的一些開關(guān)輸入信號(hào),。儀表節(jié)點(diǎn)主要通過接收總線上的數(shù)據(jù)來控制方向,、水溫、機(jī)油壓力,、制動(dòng),、車門、車燈,、ABS/ARS 和除霜等指示燈和控制儀表,,以顯示車速、發(fā)動(dòng)機(jī)轉(zhuǎn)速,、水溫,、燃油、機(jī)油,、電壓,、步進(jìn)電機(jī)等數(shù)值??照{(diào)節(jié)點(diǎn)控制空調(diào)的開關(guān)和車內(nèi)溫度的設(shè)定等,。車門和后視鏡節(jié)點(diǎn)控制車門電磁閥開關(guān)、后視鏡調(diào)整開關(guān)和后視鏡加熱開關(guān),。安全節(jié)點(diǎn)監(jiān)控 ABS 和 ECAS 的電源,。
5、硬件電路設(shè)計(jì)
燈光節(jié)點(diǎn)的硬件結(jié)構(gòu)如圖 3 所示,,它包括燈光控制模塊和 CAN 接口模塊,。燈光控制模塊由 TLP521-4 型光電隔離器和 BTS442、BTS740 型智能開關(guān)組成,。
TLP521-4 是 4 路光電隔離器,,8 個(gè) TLP521-4 組成 32 路光電隔離,把傳遞到開關(guān)和開關(guān)反饋的信號(hào)與單片機(jī)連接起來,。BTS442 是 Infineon 公司生產(chǎn)的單路輸出智能開關(guān)(PROFET),,具有允許較大瞬態(tài)電流(140 A 以上)和較寬泛的溫度范圍(-55℃~+150℃)等優(yōu)點(diǎn),,6 個(gè) BTS442 組成 6 路控制開關(guān),,控制大燈和霧燈等 6 個(gè)大電流負(fù)載。BTS740 是 lnfineon 公司生產(chǎn)的 4 路輸出智能開關(guān),把輸出的 2 路并作 1 路用,,使其通過較大的瞬時(shí)電流,。5 個(gè) BTS740 組成 10 路控制開關(guān)用以控制其余的小電流負(fù)載。BTS442 和 BTS740 都有診斷反饋功能,,如果出現(xiàn)錯(cuò)誤,,BTS442 的第 4 引腳和 BTS740 的第 4 引腳與第 8 引腳上會(huì)出現(xiàn)一個(gè)低電平信號(hào),通過光電隔離器把該信號(hào)接入單片機(jī),,實(shí)現(xiàn)端點(diǎn)檢測(cè)功能,,并通過 CAN 信息幀反饋到儀表節(jié)點(diǎn)上。所有節(jié)點(diǎn)的硬件 CAN 接口模塊都相同,,包括燈光節(jié)點(diǎn)在內(nèi),。由于這種單片機(jī)帶有 CAN 總線模塊,所以不需專門的 CAN 控制器,,單片機(jī)沒有 CAN 收發(fā)器,,需要外接 82C250 型收發(fā)器,中間是 6N137 型光電隔離器,。單片機(jī),、光電隔離器和 CAN 收發(fā)器硬件接口電路如圖 4 所示。
6,、節(jié)點(diǎn)軟件設(shè)計(jì)
節(jié)點(diǎn)軟件流程如圖 5 所示,。程序采用查詢方式,節(jié)點(diǎn)初始化并報(bào)告正常工作后將一直處于查詢狀態(tài),,直到主控節(jié)點(diǎn)發(fā)送的燈光控制命令到達(dá)燈光節(jié)點(diǎn)時(shí),,單片機(jī)才可判斷控制的是哪一路燈光或哪幾路燈光,并通過開關(guān)的診斷反饋功能檢測(cè)相應(yīng)的開關(guān)是否正常,。如果正常,,則向相應(yīng)的高 / 低端開關(guān)發(fā)送相應(yīng)的控制命令,然后回到查詢狀態(tài),。如果不正常,,則向儀表節(jié)點(diǎn)發(fā)送相應(yīng)端點(diǎn)的不正常信息幀,繼續(xù)檢測(cè)相應(yīng)的端點(diǎn),。
節(jié)點(diǎn)初始化主要是單片機(jī)初始化,,包括端口初始化和 CAN 控制模塊的初始化。單片機(jī)端口初始化主要對(duì)用到的 I/O 口上電復(fù)位,。CAN 模塊的初始化主要是設(shè)置所用的特殊功能寄存器,,主要包括協(xié)議模式、驗(yàn)收濾波方式,、CAN 通信速率和中斷寄存器的設(shè)置等,。將驗(yàn)收代碼和驗(yàn)收屏蔽代碼寫入驗(yàn)收代碼寄存器和驗(yàn)收屏蔽寄存器,。
CAN 總線的軟件設(shè)計(jì)主要包括 CAN 節(jié)點(diǎn)的初始化、數(shù)據(jù)的發(fā)送和接收程序,,掌握了這 3 個(gè)模塊的設(shè)計(jì),,基本上就完成了 CAN 通信的軟件設(shè)計(jì)。
7 ,、結(jié)束語
雖然本節(jié)點(diǎn)是為控制客車車燈設(shè)計(jì)的,,但對(duì)其他一些節(jié)點(diǎn)也有借鑒作用,尤其是 CAN 總線的硬件接口部分,,可以通用到客車其他 CAN 網(wǎng)絡(luò)節(jié)點(diǎn)上,,甚至可以用在其他非汽車領(lǐng)域的 CAN 網(wǎng)絡(luò)上,如工業(yè)自動(dòng)化等領(lǐng)域,。