新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > LIN總線技術在汽車智能燈控系統中的應用

        LIN總線技術在汽車智能燈控系統中的應用

        作者: 時間:2012-03-29 來源:網絡 收藏

        下面對燈控模塊控制思想及在其中的做出具體分析:在啟動并進行初始化以后,子模塊1開始啟動一個定時器,實現周期性地對數字量診斷輸出的車燈和模擬電流傳感器診斷輸出的車燈進行檢測(檢測不同開關向微控制器反饋的數字和模擬故障信號),對于出現故障的車燈信息,通過傳輸到子模塊2。傳輸信息包括故障車燈的名稱、故障車燈所在的診斷組(數字量診斷組或模擬量診斷組)和故障狀態(斷路或短路等)。子模塊1同時亦接收來自于子模塊2的儀表盤的車燈按鈕掃描信息,該信息包含了駕駛員對于車燈狀態的要求(開通或關斷)。然后結合診斷結果及儀表盤的掃描結果,決定是否打開車燈或關閉車燈。子模塊2通過接收子模塊1傳輸過來的車燈的故障診斷信息,周期性的通過LCD進行顯示。同時亦周期性的掃描儀表盤的按鈕狀態,并通過LIN總線傳輸到子模塊1。

        燈光控制模塊作為車身低端網絡,傳輸數據量小,對傳輸快速性要求不高,20kBaud完全可以滿足對傳輸速率的要求。相比于具有更多優良性能而價格也更高昂的CAN總線,LIN總線成本較低,容易在UART中實現,并具有較好的容故障能力和傳輸可靠性。在綜合考慮總線的硬件與軟件成本和總線的可靠性之后,選擇LIN總線實現燈控模塊內部兩個子模塊間的數據傳輸,而CAN總線則用于燈控模塊與車身內部其他ECU之間的通信。

        3.1 LIN總線硬件接口電路

        LIN總線硬件接口電路如圖5所示,該模塊分為主節點和從節點兩個單元。供電電源電路采用英飛凌TLE4278電壓調節器實現,輸入Vi為12V,輸出Vq為5V。收發器采用英飛凌TLE 6258系列LIN總線收發器。從安全角度考慮,主節點電路在電源引腳和總線間以及總線和參考地之間分別連接1kΩ電阻和1nF電容,以保證總線信號在顯性電平和隱性電平間切換時有合適的時間延遲。

        TLE 6258是單線收發器,適用于LIN協議,與LIN規范1.2兼容,發送速率可達20kbps,功率消耗低,且具有短路保護和過溫保護等功能,特別適于作為和工業,且可用于標準的ISO9141。為了減小電流損耗,TLE 6258提供了一種空閑模式。在空閑模式下,TLE 6258退出總線活動,既不接收也不發送數據,電流降到最低,從而達到減小電流損耗的目的。TLE 6258在正常工作模式和空閑模式之間的切換過程如圖6所示,在正常工作模式下,通過對ENN置1進入空閑模式。在空閑模式下,通過在總線上發送喚醒幀,可把主機或從機從空閑模式喚醒,返回到正常工作模式。進入正常工作模式后,ENN變為0,釋放RxD為傳輸數據狀態。

        3.2 LIN總線通訊軟件設計

        LIN軟件基于幾個狀態機制和功能塊,狀態機制通過串行接口的中斷調用,在程序中用nTRANSCEIVER_STATUS表示每個狀態。主機任務發送同步間隔場(Synch Break Field)、同步場(Synch Field)和標識符場,如果從機在總線上檢測到匹配的標識符,它會接收或發送數據到總線(這里假設數據字節是8個,主機為接收數據,從機為發送數據,也可定義為主機發送數據,從機接收數據)。以下(1)~(3)為主機任務,(4)~(13)為從機任務。

        (1)發送同步間隔場;

        (2)接收同步間隔場和發送同步場;

        (3)接收同步場和產生/發送ID域;

        (4)接收ID域(報文過濾),拷貝數據到緩沖器(LIN transfer buffer) 并發送第一個數據字節;

        (5)接收第一個數據字節和發送第二個數據字節;

        (6)接收第二個數據字節和發送第三個數據字節;

        (7)接收第三個數據字節和發送第四個數據字節;

        (8)接收第四個數據字節和發送第五個數據字節;

        (9)接收第五個數據字節和發送第六個數據字節;

        (10)接收第六個數據字節和發送第七個數據字節;

        (11)接收第七個數據字節和發送第八個數據字節;

        (12)接收第八個數據字節和計算/發送校驗和域;

        (13)接收校驗和域。

        為了傳輸汽車燈控模塊中所需要的信息,定義了7個字節變量a0、a1、a2、a3、a4、a5和a6,用于存儲車燈故障狀態信息;另外還定義了兩個字節變量key_result0和key_result1,用于存儲儀表盤的車燈按鈕掃描信息。

        車燈故障狀態信息的定義分為數字量診斷組和模擬量診斷組:數字量診斷組包括駐車燈、示警燈和尾燈等20盞燈;模擬量診斷組包括前照燈、霧燈等6盞燈。每盞燈的故障狀態有三種情況,用兩個“位”來表示:正常狀態(DIAG_OK),用“00”表示;斷路狀態(DIAG_OPEN_LOAD),用“01”表示;過載狀態(DIAG_OVERLOAD),用“10”表示。例如,左駐車燈用a2的低兩位表示,定義為static sbit parklightfrontleft_lowbit=a2^0、static sbit parklightfrontleft_highbit=a2^1;a2^1=0,a2^0=1,則表示駐車燈處于斷路故障狀態。如此推算,模擬量診斷組6盞車燈,故障狀態信息需要占用12位,我們用字節存儲器a0和a1表示;數字量診斷組20盞車燈,故障狀態信息需要占用40位,我們用字節存儲器a2、a3、a4、a5和a6表示。車燈故障狀態信息共計7字節,采用字節數為8的報文幀格式傳輸,第8個字節用0補齊。

        儀表盤車燈按鈕共計16個開關量,每個開關量有兩種狀態,用一個“位”表示:按鈕關斷,用“1”表示;按鈕打開,用“0”表示。我們用兩個字節存儲器key_result0和key_result1存儲按鈕信息,報文幀含有兩個字節的數據量。

        發送數據字節過程如圖7所示。以發送車燈故障狀態信息為例,這個狀態機制用于把數據字節發送到總線上去,ID被定義為發送ID(SEND_ID)。

        子狀態及相應的收發器狀態如下。

        子狀態1~8:節點用于發送數據字節 接收中斷 LIN_vRxd_Interrupt;

        子狀態9:節點用于發送數據字節 接收中斷 LIN_vRxd_Interrupt;

        子狀態10:校驗和域已經被正確接收 接收中斷 LIN_vRxd_Interrupt。

        其中,子狀態1接收中斷中調用功能函數UCB_Txd,該函數獲取用戶數據存儲的首地址。

        接收數據字節過程如圖8所示。以接收儀表盤車燈按鈕信息為例,這個狀態機制用于接收來自總線的數據,ID被定義為接收ID(REC_ID)。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 思茅市| 雷州市| 山东省| 张家川| 西吉县| 蒙山县| 长沙市| 天气| 恩平市| 古蔺县| 崇仁县| 徐闻县| 鲁甸县| 贺兰县| 大化| 和静县| 澄江县| 从江县| 璧山县| 建德市| 江西省| 庄河市| 河东区| 阳春市| 兴化市| 资阳市| 静安区| 凤庆县| 临江市| 岚皋县| 明溪县| 融水| 杭锦后旗| 桐梓县| 锡林郭勒盟| 赤水市| 鄯善县| 民勤县| 河津市| 库伦旗| 太湖县|