LIN總線技術(shù)在汽車智能燈控系統(tǒng)中的應(yīng)用
下面對汽車智能燈控模塊控制思想及LIN總線技術(shù)在其中的應(yīng)用做出具體分析:在系統(tǒng)啟動(dòng)并進(jìn)行初始化以后,子模塊1開始啟動(dòng)一個(gè)定時(shí)器,實(shí)現(xiàn)周期性地對數(shù)字量診斷輸出的車燈和模擬電流傳感器診斷輸出的車燈進(jìn)行檢測(檢測不同智能開關(guān)向微控制器反饋的數(shù)字和模擬故障信號),對于出現(xiàn)故障的車燈信息,通過LIN總線傳輸?shù)阶幽K2。傳輸信息包括故障車燈的名稱、故障車燈所在的診斷組(數(shù)字量診斷組或模擬量診斷組)和故障狀態(tài)(斷路或短路等)。子模塊1同時(shí)亦接收來自于子模塊2的儀表盤的車燈按鈕掃描信息,該信息包含了駕駛員對于車燈狀態(tài)的要求(開通或關(guān)斷)。然后結(jié)合診斷結(jié)果及儀表盤的掃描結(jié)果,決定是否打開車燈或關(guān)閉車燈。子模塊2通過LIN總線接收子模塊1傳輸過來的車燈的故障診斷信息,周期性的通過LCD進(jìn)行顯示。同時(shí)亦周期性的掃描儀表盤的按鈕狀態(tài),并通過LIN總線傳輸?shù)阶幽K1。
本汽車燈光控制模塊作為車身低端網(wǎng)絡(luò),傳輸數(shù)據(jù)量小,對傳輸快速性要求不高,20kBaud完全可以滿足系統(tǒng)對傳輸速率的要求。相比于具有更多優(yōu)良性能而價(jià)格也更高昂的CAN總線,LIN總線成本較低,容易在UART中實(shí)現(xiàn),并具有較好的容故障能力和傳輸可靠性。在綜合考慮總線的硬件與軟件成本和總線的可靠性之后,選擇LIN總線實(shí)現(xiàn)燈控模塊內(nèi)部兩個(gè)子模塊間的數(shù)據(jù)傳輸,而CAN總線則用于燈控模塊與車身內(nèi)部其他ECU之間的通信。
3.1 LIN總線硬件接口電路
LIN總線硬件接口電路如圖5所示,該模塊分為主節(jié)點(diǎn)和從節(jié)點(diǎn)兩個(gè)單元。供電電源電路采用英飛凌TLE4278電壓調(diào)節(jié)器實(shí)現(xiàn),輸入Vi為12V,輸出Vq為5V。收發(fā)器采用英飛凌TLE 6258系列LIN總線收發(fā)器。從安全角度考慮,主節(jié)點(diǎn)電路在電源引腳和總線間以及總線和參考地之間分別連接1kΩ電阻和1nF電容,以保證總線信號在顯性電平和隱性電平間切換時(shí)有合適的時(shí)間延遲。
TLE 6258是單線收發(fā)器,適用于LIN協(xié)議,與LIN規(guī)范1.2兼容,發(fā)送速率可達(dá)20kbps,功率消耗低,且具有短路保護(hù)和過溫保護(hù)等功能,特別適于作為汽車和工業(yè)應(yīng)用,且可用于標(biāo)準(zhǔn)的ISO9141系統(tǒng)。為了減小電流損耗,TLE 6258提供了一種空閑模式。在空閑模式下,TLE 6258退出總線活動(dòng),既不接收也不發(fā)送數(shù)據(jù),電流降到最低,從而達(dá)到減小電流損耗的目的。TLE 6258在正常工作模式和空閑模式之間的切換過程如圖6所示,在正常工作模式下,通過對ENN置1進(jìn)入空閑模式。在空閑模式下,通過在總線上發(fā)送喚醒幀,可把主機(jī)或從機(jī)從空閑模式喚醒,返回到正常工作模式。進(jìn)入正常工作模式后,ENN變?yōu)?,釋放RxD為傳輸數(shù)據(jù)狀態(tài)。
3.2 LIN總線通訊軟件設(shè)計(jì)
LIN軟件基于幾個(gè)狀態(tài)機(jī)制和功能塊,狀態(tài)機(jī)制通過串行接口的中斷調(diào)用,在程序中用nTRANSCEIVER_STATUS表示每個(gè)狀態(tài)。主機(jī)任務(wù)發(fā)送同步間隔場(Synch Break Field)、同步場(Synch Field)和標(biāo)識符場,如果從機(jī)在總線上檢測到匹配的標(biāo)識符,它會(huì)接收或發(fā)送數(shù)據(jù)到總線(這里假設(shè)數(shù)據(jù)字節(jié)是8個(gè),主機(jī)為接收數(shù)據(jù),從機(jī)為發(fā)送數(shù)據(jù),也可定義為主機(jī)發(fā)送數(shù)據(jù),從機(jī)接收數(shù)據(jù))。以下(1)~(3)為主機(jī)任務(wù),(4)~(13)為從機(jī)任務(wù)。
(1)發(fā)送同步間隔場;
(2)接收同步間隔場和發(fā)送同步場;
(3)接收同步場和產(chǎn)生/發(fā)送ID域;
(4)接收ID域(報(bào)文過濾),拷貝數(shù)據(jù)到緩沖器(LIN transfer buffer) 并發(fā)送第一個(gè)數(shù)據(jù)字節(jié);
(5)接收第一個(gè)數(shù)據(jù)字節(jié)和發(fā)送第二個(gè)數(shù)據(jù)字節(jié);
(6)接收第二個(gè)數(shù)據(jù)字節(jié)和發(fā)送第三個(gè)數(shù)據(jù)字節(jié);
(7)接收第三個(gè)數(shù)據(jù)字節(jié)和發(fā)送第四個(gè)數(shù)據(jù)字節(jié);
(8)接收第四個(gè)數(shù)據(jù)字節(jié)和發(fā)送第五個(gè)數(shù)據(jù)字節(jié);
(9)接收第五個(gè)數(shù)據(jù)字節(jié)和發(fā)送第六個(gè)數(shù)據(jù)字節(jié);
(10)接收第六個(gè)數(shù)據(jù)字節(jié)和發(fā)送第七個(gè)數(shù)據(jù)字節(jié);
(11)接收第七個(gè)數(shù)據(jù)字節(jié)和發(fā)送第八個(gè)數(shù)據(jù)字節(jié);
(12)接收第八個(gè)數(shù)據(jù)字節(jié)和計(jì)算/發(fā)送校驗(yàn)和域;
(13)接收校驗(yàn)和域。
為了傳輸汽車智能燈控模塊中所需要的信息,定義了7個(gè)字節(jié)變量a0、a1、a2、a3、a4、a5和a6,用于存儲車燈故障狀態(tài)信息;另外還定義了兩個(gè)字節(jié)變量key_result0和key_result1,用于存儲儀表盤的車燈按鈕掃描信息。
車燈故障狀態(tài)信息的定義分為數(shù)字量診斷組和模擬量診斷組:數(shù)字量診斷組包括駐車燈、示警燈和尾燈等20盞燈;模擬量診斷組包括前照燈、霧燈等6盞燈。每盞燈的故障狀態(tài)有三種情況,用兩個(gè)“位”來表示:正常狀態(tài)(DIAG_OK),用“00”表示;斷路狀態(tài)(DIAG_OPEN_LOAD),用“01”表示;過載狀態(tài)(DIAG_OVERLOAD),用“10”表示。例如,左駐車燈用a2的低兩位表示,定義為static sbit parklightfrontleft_lowbit=a2^0、static sbit parklightfrontleft_highbit=a2^1;a2^1=0,a2^0=1,則表示駐車燈處于斷路故障狀態(tài)。如此推算,模擬量診斷組6盞車燈,故障狀態(tài)信息需要占用12位,我們用字節(jié)存儲器a0和a1表示;數(shù)字量診斷組20盞車燈,故障狀態(tài)信息需要占用40位,我們用字節(jié)存儲器a2、a3、a4、a5和a6表示。車燈故障狀態(tài)信息共計(jì)7字節(jié),采用字節(jié)數(shù)為8的報(bào)文幀格式傳輸,第8個(gè)字節(jié)用0補(bǔ)齊。
儀表盤車燈按鈕共計(jì)16個(gè)開關(guān)量,每個(gè)開關(guān)量有兩種狀態(tài),用一個(gè)“位”表示:按鈕關(guān)斷,用“1”表示;按鈕打開,用“0”表示。我們用兩個(gè)字節(jié)存儲器key_result0和key_result1存儲按鈕信息,報(bào)文幀含有兩個(gè)字節(jié)的數(shù)據(jù)量。
發(fā)送數(shù)據(jù)字節(jié)過程如圖7所示。以發(fā)送車燈故障狀態(tài)信息為例,這個(gè)狀態(tài)機(jī)制用于把數(shù)據(jù)字節(jié)發(fā)送到總線上去,ID被定義為發(fā)送ID(SEND_ID)。
子狀態(tài)及相應(yīng)的收發(fā)器狀態(tài)如下。
子狀態(tài)1~8:節(jié)點(diǎn)用于發(fā)送數(shù)據(jù)字節(jié) 接收中斷 LIN_vRxd_Interrupt;
子狀態(tài)9:節(jié)點(diǎn)用于發(fā)送數(shù)據(jù)字節(jié) 接收中斷 LIN_vRxd_Interrupt;
子狀態(tài)10:校驗(yàn)和域已經(jīng)被正確接收 接收中斷 LIN_vRxd_Interrupt。
其中,子狀態(tài)1接收中斷中調(diào)用功能函數(shù)UCB_Txd,該函數(shù)獲取用戶數(shù)據(jù)存儲的首地址。
接收數(shù)據(jù)字節(jié)過程如圖8所示。以接收儀表盤車燈按鈕信息為例,這個(gè)狀態(tài)機(jī)制用于接收來自總線的數(shù)據(jù),ID被定義為接收ID(REC_ID)。
評論