MC微控器在汽車CAN/LIN網(wǎng)關(guān)中的應(yīng)用
汽車電子技術(shù)的不斷發(fā)展大大提高了汽車性能,同時(shí)也給汽車制造安裝以及系統(tǒng)可靠性等帶方面來(lái)了一系列問題。汽車網(wǎng)絡(luò)的誕生使汽車電子邁入了一個(gè)新的臺(tái)階,汽車網(wǎng)絡(luò)用總線進(jìn)行信息通訊,不僅解決了現(xiàn)代汽車電子化中出現(xiàn)的線路復(fù)雜和線束增加等問題,同時(shí)也是汽車通信和控制的一個(gè)重要基礎(chǔ)。CAN 總線和LIN 總線作為汽車總線的主流形式,在汽車領(lǐng)域已逐日得到廣泛應(yīng)用。
1 CAN/LIN 總線技術(shù)簡(jiǎn)介[1]
CAN,全稱為“Controller Area Network”,即控制器局域網(wǎng),是國(guó)際上應(yīng)用最廣泛的現(xiàn)場(chǎng)總線之一。CAN 通信協(xié)議描述了在設(shè)備之間信息如何傳遞。CAN 以兩種形式存在:一種是具有11 位ID 標(biāo)示符的標(biāo)準(zhǔn)CAN,另一種是29 位ID 標(biāo)示符的擴(kuò)展CAN。LIN,全稱為“Local Interconnect Network”,是一種低成本的串行通訊網(wǎng)絡(luò)。LIN 的目
標(biāo)是為現(xiàn)有汽車網(wǎng)絡(luò)(如CAN 總線)提供輔助功能,在不需要CAN 總線的帶寬和多功能的場(chǎng)合,使用LIN 總線可大大節(jié)省成本。
CAN 總線以及LIN 總線的主要特征如表1 所示。
500)this.style.width=500;" border="0" />
2 MC68HC908GZ32 簡(jiǎn)介[2]
MC68HC908GZ32 是Freescale 公司生產(chǎn)的8 位微控制器。其內(nèi)部具有8 位的中央處理單元、時(shí)鐘發(fā)生模塊、8 通道的定時(shí)器模塊、8 位的鍵盤中斷模塊、增強(qiáng)型串行通信模塊、時(shí)基模塊以及CAN 通信模塊等。其容量達(dá)32KB 的片內(nèi)Flash 存儲(chǔ)器與1536B RAM 能滿足多數(shù)用戶的各種應(yīng)用要求。不僅有傳統(tǒng)的串行通信接口,而且還有串行外圍接口,使得芯片與外部設(shè)備、芯片與外圍擴(kuò)展芯片的通信和連接變得簡(jiǎn)便,具有53 個(gè)通用I/O 引腳。
MC68HC908GZ32 的上述眾多功能特點(diǎn),使其既可以進(jìn)行CAN 網(wǎng)絡(luò)通信,又可以進(jìn)行LIN 網(wǎng)絡(luò)通信,因此可以將其作為CAN/LIN 網(wǎng)關(guān)。
3 GZ32 在CAN/LIN 網(wǎng)關(guān)中的應(yīng)用
以汽車車身網(wǎng)絡(luò)為例,說(shuō)明GZ32 在CAN/LIN 網(wǎng)絡(luò)中的應(yīng)用。車身網(wǎng)絡(luò)屬于中低速網(wǎng)絡(luò),既可以用CAN 總線進(jìn)行通信和控制,也可以用LIN 總線進(jìn)行通信和控制。從節(jié)約成本的角度考慮,可以使用LIN 總線。但LIN 總線使用主從結(jié)構(gòu),而車身電器部分又很多,包括車燈、車門、后視鏡以及雨刮等等,因此,為減少系統(tǒng)模塊以及使系統(tǒng)更為簡(jiǎn)單系統(tǒng)化,可使用GZ32 作為CAN/LIN 網(wǎng)關(guān),既可以接收CAN 總線報(bào)文,又可以對(duì)CAN 報(bào)文進(jìn)行解讀,發(fā)送給LIN 總線。車身網(wǎng)絡(luò)系統(tǒng)構(gòu)建圖如圖1 所示。
500)this.style.width=500;" border="0" />
3.1 網(wǎng)關(guān)的作用
網(wǎng)關(guān)的作用就是為在不同的通信協(xié)議和不同的傳輸速度的計(jì)算機(jī)或模塊之間進(jìn)行通信時(shí),建立連接和信息解碼,重新編譯,并將數(shù)據(jù)傳輸給其他系統(tǒng)。為了使采用不同協(xié)議及速度的數(shù)據(jù)總線間實(shí)現(xiàn)無(wú)差錯(cuò)數(shù)據(jù)傳輸,必須要用一種特殊功能的計(jì)算機(jī),這種計(jì)算機(jī)就是網(wǎng)關(guān)。
GZ32 具有MSCAN08 模塊,可以接收/發(fā)送CAN 報(bào)文;同時(shí)又具有ESCI 模塊,可以接收/發(fā)送LIN 報(bào)文。因此,本設(shè)計(jì)中使用GZ32 作為CAN/LIN 網(wǎng)關(guān)。
當(dāng)使用 MSCAN 模塊時(shí),應(yīng)作如下初始化[3]:
CONFIG1=0x09;
CONFIG2=0x1C; // CAN 模塊使能
CBTR0=0x00;
CBTR1=0xD8; //設(shè)置波特率為125K
3.2 CAN 報(bào)文的接收和發(fā)送
一個(gè)完整的汽車網(wǎng)絡(luò)系統(tǒng)可分為車身網(wǎng)絡(luò)系統(tǒng)和動(dòng)力網(wǎng)絡(luò)系統(tǒng),要有高低速CAN 網(wǎng)關(guān)。本設(shè)計(jì)中的CAN/LIN 網(wǎng)關(guān)的主要功能是,接收高低速CAN 網(wǎng)關(guān)發(fā)送來(lái)的CAN 報(bào)文幀,通過(guò)TJA1050 CAN 收發(fā)器實(shí)現(xiàn)。對(duì)于車燈模塊(包括轉(zhuǎn)向燈、示寬燈、遠(yuǎn)/近光燈、霧燈等),可以使用CAN 報(bào)文通過(guò)I/O 口進(jìn)行控制。同時(shí)網(wǎng)關(guān)還對(duì)接收到的CAN 報(bào)文進(jìn)行解析,發(fā)送給LIN 總線。由于CAN 和LIN 是全雙工的總線,因此GZ32 CAN/LIN 網(wǎng)關(guān)還可以向CAN總線發(fā)送CAN 報(bào)文幀,也可以接收來(lái)自LIN 總線的LIN 報(bào)文幀。如圖2 所示[4]。
500)this.style.width=500;" border="0" />
以接收 CAN 報(bào)文幀為例說(shuō)明一下GZ32 CAN/LIN 網(wǎng)關(guān)工作流程:
DDRC_DDRC1=0; //CAN RX 使能
DDRC_DDRC0=1; //CAN TX 使能
re_id0=REC_IDR0;
re_id1=REC_IDR1; //讀ID 標(biāo)識(shí)符寄存器
temp0=REC_DSR0;
temp1=REC_DSR1;
temp2=REC_DSR2; //讀數(shù)據(jù)段寄存器
… …
re_dlr=REC_DLR; //讀數(shù)據(jù)長(zhǎng)度寄存器
當(dāng) GZ32 CAN/LIN網(wǎng)關(guān)接收到CAN報(bào)文幀后,根據(jù)所接收到的標(biāo)識(shí)符及數(shù)據(jù)段寄存器,就可以對(duì)左前組合燈以及后組合燈模塊進(jìn)行正確控制。同時(shí),網(wǎng)關(guān)還可以將各燈的狀態(tài)等信息發(fā)送給CAN 總線。
3.3 LIN 報(bào)文的接收和發(fā)送
當(dāng) GZ32 CAN/LIN 網(wǎng)關(guān)接收到CAN 報(bào)文并對(duì)其進(jìn)行正確解析后,將通過(guò)增強(qiáng)型串行通信ESCI 模塊向LIN 總線發(fā)送LIN 報(bào)文幀,本設(shè)計(jì)使用TJA1020 LIN 收發(fā)器加以實(shí)現(xiàn)。這樣LIN 總線上的各從機(jī)模塊,如車門模塊(包括門鎖電機(jī)、雨刮電機(jī)、后視鏡等)、后組合燈模塊,通過(guò)ID 識(shí)別可以正確的接收LIN 報(bào)文并加以控制。同理,各模塊亦可將各自的狀態(tài)等信息反饋給LIN 總線,并通過(guò)TJA1020 反饋給CAN/LIN 網(wǎng)關(guān),如圖3 所示。
500)this.style.width=500;" border="0" />
以發(fā)送LIN 報(bào)文幀為例說(shuō)明一下GZ32 CAN/LIN 網(wǎng)關(guān)工作流程:
DDRE_DDRE0=1; //TXD 使能
DDRE_DDRE1=0; //RXD 使能
SCBR=0xC0; //LINT 和LINR 使能
SCPSC=0xB0; //設(shè)置波特率為9.6K
SCC1=0x40; //ESCI 使能
SCC2=0x0C; //TE 和RE 使能
SCC3=0x00;
transmit_data[0]=0x55;
transmit_data[1]=ID;
transmit_data[2]=REC_DSR0;
transmit_data[3]=REC_DSR1;
… … //發(fā)送LIN 數(shù)據(jù)場(chǎng)及校驗(yàn)和場(chǎng)
4 調(diào)試過(guò)程及結(jié)論
本文針對(duì) MC68HC908GZ32 微控制器在汽車CAN/LIN 網(wǎng)關(guān)中的應(yīng)用,給出了具體的硬件設(shè)計(jì)方案及控制軟件,并最終加以了調(diào)試。在調(diào)試過(guò)程中遇到一些問題,并最終得到解決。比較典型的問題及解決方法如下:
(1)網(wǎng)關(guān)無(wú)法正確接收CAN 報(bào)文:網(wǎng)關(guān)若想正確收發(fā)CAN 報(bào)文,波特率配置與高低速CAN 網(wǎng)關(guān)之差一定要在CAN 協(xié)議允許的范圍之內(nèi)。同理,網(wǎng)關(guān)發(fā)送LIN 報(bào)文的波特率與LIN 從節(jié)點(diǎn)的波特率也要符合LIN 協(xié)議規(guī)定,否則容易產(chǎn)生無(wú)法接收?qǐng)?bào)文或接收到錯(cuò)誤報(bào)文的現(xiàn)象。
(2)網(wǎng)關(guān)能發(fā)送LIN 報(bào)文但總線上無(wú)信號(hào):LIN 收發(fā)器TJA1020 的NSLP 引腳為高電平時(shí),方可啟動(dòng)發(fā)送器,因此須將PTE2 引腳置為輸出腳,且端口置為隱性狀態(tài)。本文作者創(chuàng)新點(diǎn):以Freescale公司8位微處理器MC68HC908GZ32為主芯片,對(duì)其在汽車CAN/LIN網(wǎng)絡(luò)中的應(yīng)用加以了設(shè)計(jì)。給出了車身網(wǎng)絡(luò)結(jié)構(gòu)圖、CAN/LIN網(wǎng)關(guān)電路設(shè)計(jì)圖、報(bào)文收發(fā)流程以及調(diào)試過(guò)程中對(duì)所遇到的問題的解決方法等。經(jīng)調(diào)試結(jié)果表明該GZ32 CAN/LIN網(wǎng)關(guān)具有結(jié)構(gòu)簡(jiǎn)單、性能穩(wěn)定、實(shí)用性強(qiáng)等特點(diǎn)。