車載防盜報(bào)警接入LIN節(jié)點(diǎn)的設(shè)計(jì)與實(shí)現(xiàn)
隨著汽車工業(yè)的迅猛發(fā)展,車身上的電子控制單元也越來越多。傳統(tǒng)的車身線束不僅會(huì)增加制造成本,而且會(huì)降低系統(tǒng)的可靠性和可維護(hù)性。于是,汽車車身總線應(yīng)運(yùn)而生。采用車身總線設(shè)計(jì)不僅可以簡化線路、節(jié)約制造成本、提高可靠性,同時(shí)也節(jié)省了系統(tǒng)的維護(hù)成本。車載防盜報(bào)警模塊是車身控制單元(BCM)的一部分,由于其本身對(duì)總線通信的實(shí)時(shí)性和速率要求不高,所以將其接入低速總線LIN上。 LIN總線 LIN總線主要用于不需要CAN性能、速率和復(fù)雜性的低速系統(tǒng),是一種低成本的串行通信網(wǎng)絡(luò),采用一個(gè)主節(jié)點(diǎn)及若干從節(jié)點(diǎn)的結(jié)構(gòu),基于通用的UART/SCI的硬件接口,最高速率可以達(dá)到20kb/s。 LIN總線通過報(bào)文幀進(jìn)行數(shù)據(jù)傳輸,一個(gè)完整的報(bào)文幀包括幀頭和信息響應(yīng)。報(bào)文頭包括間隔場、同步場和標(biāo)志符場。間隔場由至少13個(gè)位時(shí)的持續(xù)顯性電平(0)組成,標(biāo)志著一次數(shù)據(jù)通信過程中報(bào)文幀的開始。同步場包含時(shí)鐘同步信息,其格式是0x55,所有從機(jī)節(jié)點(diǎn)在正確接收同步字節(jié)場后,準(zhǔn)確計(jì)算出主機(jī)節(jié)點(diǎn)將要發(fā)送數(shù)據(jù)的波特率,并以此波特率作為下一步要發(fā)送或接收數(shù)據(jù)的波特率設(shè)定值,從而實(shí)現(xiàn)從機(jī)節(jié)點(diǎn)與主機(jī)節(jié)點(diǎn)時(shí)鐘的同步。標(biāo)志符場定義了信息的內(nèi)容和長度。報(bào)文響應(yīng)由主機(jī)節(jié)點(diǎn)或從機(jī)節(jié)點(diǎn)根據(jù)標(biāo)志符場的信息發(fā)出,由2、4或8字節(jié)長度的數(shù)據(jù)和1字節(jié)的校驗(yàn)和構(gòu)成。校驗(yàn)通過計(jì)算數(shù)據(jù)的全部字節(jié)而得到,用于接收方驗(yàn)證數(shù)據(jù)的正確性。 圖1完整的LIN信息幀 功能描述 車載防盜報(bào)警模塊是車身控制模塊的一個(gè)從節(jié)點(diǎn),主要功能有以下3點(diǎn):一是與BCM之間保持通信聯(lián)系并上報(bào)防盜報(bào)警模塊的狀態(tài)信息;二是接收車身控制模塊的命令并驅(qū)動(dòng)喇叭發(fā)出報(bào)警聲;三是監(jiān)測連接防盜報(bào)警模塊與BCM之間的電源線、地線和LIN線是否被割斷并發(fā)出報(bào)警聲。 實(shí)現(xiàn)方案 1器件選擇 本系統(tǒng)的兩個(gè)主要器件為LIN收發(fā)器和微處理器。由于防盜報(bào)警模塊是電池供電的LIN節(jié)點(diǎn),所以在器件選取時(shí)需要盡量考慮低功耗的器件。LIN收發(fā)器選取TJA1020,它是連接車身控制器與防盜報(bào)警模塊之間的物理媒體連接,也是LIN主/從機(jī)協(xié)議控制器和LIN傳輸媒體之間的接口。協(xié)議控制器輸入引腳TXD的發(fā)送數(shù)據(jù)流被LIN收發(fā)器轉(zhuǎn)換為總線信號(hào),而且電平翻轉(zhuǎn)速率和波形都受到限制,以減少電磁輻射。TJA1020的接收器檢測到LIN總線上的數(shù)據(jù)流并通過RXD引腳將它傳送到協(xié)議控制器。TJA1020具備低功耗管理模式,它在睡眠模式中幾乎不消耗電流并在錯(cuò)誤模式中減小功率消耗。所以,TJA1020非常適用于防盜報(bào)警模塊這種以電池供電的LIN節(jié)點(diǎn)。系統(tǒng)采用意法半導(dǎo)體的8位微處理器STM8S105K4作為主控單片機(jī),靠內(nèi)部128kHz時(shí)鐘驅(qū)動(dòng)運(yùn)行時(shí),靜態(tài)功耗可以低至0.6mA。滿足系統(tǒng)對(duì)低功耗要求的同時(shí)具備LIN控制器與電池電量檢測10位ADC功能。 2信息幀分類與系統(tǒng)狀態(tài)定義 對(duì)車身控制系統(tǒng)與防盜報(bào)警模塊之間的通信信息幀做了如下的定義: 表1 喚醒命令用于將系統(tǒng)從睡眠狀態(tài)喚醒到未設(shè)防狀態(tài),睡眠命令用于指令系統(tǒng)進(jìn)入睡眠狀態(tài)。命令信息幀的內(nèi)容包含設(shè)防、解防、報(bào)警命令,以及對(duì)報(bào)警狀態(tài)如報(bào)警周期、次數(shù)等屬性的定義。系統(tǒng)的狀態(tài)轉(zhuǎn)換如圖2所示。 圖2 狀態(tài)轉(zhuǎn)換圖 3基本框圖 系統(tǒng)基本框圖如圖3所示,系統(tǒng)與外部的接口有3個(gè),LIN線、電源線和地線。車載蓄電池分別向可充電電池、TJA1020和MCU進(jìn)行供電,其中可充電電池的作用是在汽車蓄電池電源被剪斷時(shí)向系統(tǒng)提供報(bào)警所需的電源。 圖3系統(tǒng)基本框圖 初始情況,TJA1020處于休眠狀態(tài)并通過INH引腳切斷對(duì)MCU的供電,此時(shí)系統(tǒng)的狀態(tài)定義為睡眠狀態(tài)。連接汽車蓄電池相當(dāng)于TJA1020的NWAKE管腳產(chǎn)生電平變化,從而觸發(fā)TJA1020的外部中斷喚醒,同時(shí)TJA1020的Tx管腳會(huì)產(chǎn)生強(qiáng)下拉。當(dāng)有遠(yuǎn)程LIN信息幀喚醒TJA1020時(shí),Tx管腳會(huì)產(chǎn)生弱下拉。TJA1020被喚醒后,會(huì)通過INH管腳打開對(duì)MCU的供電使MCU開始工作,系統(tǒng)進(jìn)入未設(shè)防狀態(tài)。 在未設(shè)防狀態(tài)下,MCU通過GPA端口檢測是否存在汽車蓄電池供電信號(hào),如果不存在供電信號(hào),系統(tǒng)在一定時(shí)間后通過連接NSLP的GPB管腳令TJA1020進(jìn)入休眠狀態(tài),TJA1020則會(huì)通過INH管腳關(guān)閉MCU的電源供給,系統(tǒng)返回睡眠狀態(tài)。汽車蓄電池供電存在時(shí),若收到LIN睡眠信息幀,系統(tǒng)也進(jìn)入睡眠狀態(tài)。 系統(tǒng)在非睡眠狀態(tài)時(shí)可以通過接收BCM的LIN命令信息幀在未設(shè)防狀態(tài)、設(shè)防狀態(tài)和報(bào)警狀態(tài)之間進(jìn)行轉(zhuǎn)換。系統(tǒng)處于設(shè)防狀態(tài)和報(bào)警狀態(tài)時(shí),不會(huì)進(jìn)入睡眠狀態(tài)。 4軟件流程 系統(tǒng)的軟件主要包括實(shí)現(xiàn)單片機(jī)與LIN總線通信的程序以及單片機(jī)對(duì)防盜報(bào)警喇叭控制的主程序。為確保通信的實(shí)時(shí)性,系統(tǒng)采用了高優(yōu)先級(jí)中斷來接收LIN總線上的信號(hào)。為了保證系統(tǒng)的實(shí)時(shí)性,在中斷處理時(shí)除了進(jìn)行一些簡單的判斷和數(shù)據(jù)接收外,其他部分都在主程序中處理。 一旦總線上出現(xiàn)有效的顯性電平,控制器立即轉(zhuǎn)入高優(yōu)先級(jí)中斷處理函數(shù),首先判斷是否為主機(jī)節(jié)點(diǎn)發(fā)送的間隔場,如果是間隔場則接收同步場和標(biāo)志符場,若不是同步場則退出等待下一次中斷。在接收到正確的標(biāo)志符后,若標(biāo)志符要求系統(tǒng)發(fā)送信息,系統(tǒng)則發(fā)送數(shù)據(jù)場及校驗(yàn)和場,發(fā)送完成后又開始等待接收下一幀數(shù)據(jù)。若標(biāo)志符不是要求本機(jī)進(jìn)行數(shù)據(jù)發(fā)送,則接收隨后的數(shù)據(jù)場及校驗(yàn)和場,在主程序中再根據(jù)標(biāo)志符判斷所接收的數(shù)據(jù)是否對(duì)本機(jī)有效,有效的就進(jìn)行相應(yīng)的處理,無效就丟棄,處理完成后又開始等待接收下一幀數(shù)據(jù)。 |
評(píng)論