LIN2.1協(xié)議在車(chē)窗控制系統中的應用
引言
LIN協(xié)會(huì )于1999年發(fā)布了第一版LIN協(xié)議,至今已有十幾年了,在這十幾年中,LIN總線(xiàn)不斷發(fā)展,已經(jīng)在以車(chē)身控制為主的許多場(chǎng)合得到了應用。LIN總線(xiàn)至今一共有7個(gè)版本,其中,LIN2.1協(xié)議于2006年11月發(fā)布,是目前較新的一個(gè)版本。它與最新的LIN2.2協(xié)議幾乎沒(méi)有區別,卻比它的前身LIN2.0協(xié)議有明顯的改進(jìn),主要體現在加入了事件觸發(fā)幀的競爭處理、完善了節點(diǎn)配置功能和進(jìn)行了診斷分級三個(gè)方面。這些改進(jìn)使用戶(hù)可以更加方便和快速地組織LIN網(wǎng)絡(luò ),可以根據自己的需求重新設置LIN網(wǎng)絡(luò ),既保證了產(chǎn)品的穩定性,又滿(mǎn)足了用戶(hù)的個(gè)性化需求,是LIN總線(xiàn)自身發(fā)展過(guò)程中很有意義的一步。
1 LIN2.1協(xié)議的新特點(diǎn)
1.1 事件觸發(fā)幀的競爭處理
如果有多于一個(gè)的從節點(diǎn)在同一個(gè)幀時(shí)隙里響應幀頭,就會(huì )導致競爭,競爭處理都是由主節點(diǎn)完成的。LIN2.0的事件觸發(fā)幀競爭處理機制如圖1所示。某主節點(diǎn)的進(jìn)度表中有無(wú)條件幀A、事件觸發(fā)幀和無(wú)條件幀B。當競爭發(fā)生后,主節點(diǎn)會(huì )繼續按照之前的進(jìn)度表,在接收完所有與事件觸發(fā)幀相關(guān)的無(wú)條件幀后,再發(fā)送事件觸發(fā)幀幀頭。LIN2.1對此作出了改進(jìn),它引入了競爭處理進(jìn)度表,LIN2.1的事件觸發(fā)幀競爭處理機制如圖2所示。每個(gè)事件觸發(fā)幀都有與之相對應的競爭處理進(jìn)度表,主節點(diǎn)在競爭處理進(jìn)度表里處理完競爭后,再返回執行普通的進(jìn)度表。顯然,LIN2.1的競爭處理機制需要花費的時(shí)間較短。
圖1 LIN2.0的事件觸發(fā)幀競爭處理機制 圖2 LIN2.1的事件觸發(fā)幀競爭處理機制
1.2 節點(diǎn)配置功能的完善
1.2.1 新增分配一系列幀ID的功能
將配置功能分配幀ID改為分配一系列幀ID。LIN2.0和LIN2.1協(xié)議中分配幀ID的格式如圖3所示。在LIN2.0中,只有NAD和Supplier ID都匹配的情況下,分配才能成功,但每次只能分配一個(gè)幀ID。而在LIN2.1中,只需要NAD匹配就可以了,每次可以分配最多4個(gè)幀ID,而LIN2.0中的Message ID在LIN2.1中已經(jīng)被取消了。這種改進(jìn)的目的是提高LIN網(wǎng)絡(luò )配置的效率,更改后分配幀ID的速度最快可達到原來(lái)的4倍。
圖3 LIN2.0和LIN2.1協(xié)議中分配幀ID的格式
1.2.2 新增保存配置的功能
LIN2.1協(xié)議新增了保存從節點(diǎn)配置信息的功能,將從節點(diǎn)的配置信息存入到掉電不易失的存儲空間中。這樣,主節點(diǎn)對從節點(diǎn)的配置在復位后也不會(huì )丟失。
1.3 診斷分級
LIN2.1的另一大新特點(diǎn)是根據診斷功能將從節點(diǎn)分為3個(gè)級別。
(1) 診斷一級
診斷一級一般應用于智能傳感器或執行器等一些不需要或只需要很少診斷功能的器件。診斷一級支持所有節點(diǎn)配置功能,并且只需要單幀傳輸。
(2) 診斷二級
與診斷一級相比,診斷二級的節點(diǎn)增加了節點(diǎn)辨識的功能。例如,用戶(hù)可以獲得產(chǎn)品的軟、硬件版本號等。此外,診斷二級還支持讀寫(xiě)軟件內部的參數,比如溫度、車(chē)速等。診斷二級支持多幀傳輸。
(3) 診斷三級
診斷三級的節點(diǎn)不僅包含了前面兩級的所有功能,還支持內部Flash的擦寫(xiě),用戶(hù)可以通過(guò)LIN總線(xiàn)燒寫(xiě)程序。診斷三級支持多幀傳輸。
2 LIN2.1協(xié)議的節點(diǎn)配置功能
(1) 分配N(xiāo)AD
為了避免某個(gè)NAD被重復使用,用戶(hù)可能需要為從節點(diǎn)分配新的NAD。
(2) 有條件分配N(xiāo)AD
當用戶(hù)替換或增加從節點(diǎn)時(shí),可能會(huì )出現兩種情況:
① 一種是用戶(hù)不知道新增從節點(diǎn)的初始NAD,因此,必須以“廣播”的方式尋找所有的從節點(diǎn)并分配有效的NAD(“廣播”指的是給網(wǎng)絡(luò )中的所有從節點(diǎn)發(fā)送請求,它有一個(gè)專(zhuān)用的NAD為0x7F)。但如果直接這樣做,會(huì )導致所有的從節點(diǎn)獲得同一個(gè)NAD,這顯然是不允許的。為了避免這個(gè)情況,可以加入限制條件。
② 另一種是用戶(hù)知道新增節點(diǎn)的初始NAD,但其和LIN網(wǎng)絡(luò )中已有從節點(diǎn)的NAD重復了。如果用戶(hù)只按照原始NAD分配新的NAD,則會(huì )導致兩個(gè)從節點(diǎn)的NAD都被修改。因此,必須加入限制條件。
當從節點(diǎn)獲得有條件分配N(xiāo)AD的請求后,將根據下面的步驟判斷是否要修改NAD:
① 根據ID讀取從節點(diǎn)的相關(guān)信息。
② 根據Byte提取相關(guān)信息中一個(gè)8位數據,例如Byte=1,則提取D1。
③ 與Invert進(jìn)行異或運算。
④ 與Mask進(jìn)行與運算。
⑤ 如果結果為0,則修改NAD。
例如:本產(chǎn)品被新增到一個(gè)LIN網(wǎng)絡(luò )中,初始NAD為0x06,但網(wǎng)絡(luò )中已有了一個(gè)NAD為0x06的從節點(diǎn)。于是,用戶(hù)可以利用本產(chǎn)品的Function ID,假設為0x0000,分配新的NAD為0x08。這里假設已存在的從節點(diǎn)的Function ID不為0x0000。這樣,只有新增節點(diǎn)的NAD會(huì )被修改,而已存在從節點(diǎn)的NAD維持為0x06不變。
(3) 保存配置
保存配置是LIN2.1添加的新功能,用來(lái)將從節點(diǎn)的當前配置存入非易失的存儲空間中,下次上電時(shí)可以讀出配置數據,這里主要是保存NAD和幀ID。
(4) 分配一系列幀ID
這一功能可以配置最多4個(gè)幀ID,注意診斷幀ID和保留幀ID是不能配置的。
主節點(diǎn)的請求幀在D1中給出需要分配幀ID的第一個(gè)幀在幀數組中的序號,一般來(lái)說(shuō),從節點(diǎn)所用到的所有幀的ID會(huì )被排列成一個(gè)幀數組。如果要分配幀ID,則通過(guò)D2到D5給出新的幀ID;如果要禁止某個(gè)幀,則將這個(gè)幀對應的PID設為0x00;如果要繼續使用現在的幀ID,則將這個(gè)幀對應的PID設為0xFF。
(5) 讀取從節點(diǎn)信息
讀取節點(diǎn)信息根據D1中ID的值,可以讀取不同的從節點(diǎn)信息。目前,只規定了ID為0和ID為1的情況,其他可保留或由用戶(hù)自己確定。
3 LIN通信的實(shí)現
3.1 TLE9832的LIN模塊
TLE9832是一款由英飛凌公司生產(chǎn)的8位功率級單片機,專(zhuān)門(mén)用于車(chē)窗控制。其中的LIN總線(xiàn)模塊支持LIN2.1和LIN2.0,并向下兼容LIN1.3。該模塊可以工作在普通模式、接收模式和禁止模式下。各個(gè)模式的特點(diǎn)如表1所列。
表1 TLE9832 LIN模塊各個(gè)模式的特點(diǎn)
其中,普通模式又可根據傳輸速率的大小分為低速模式、中速模式、高速模式和Flash模式。低速模式的最大傳輸速率為10.4 kbps;中速模式是普通的LIN傳輸模式,最大傳輸速率為20 kbps;高速模式的最大傳輸速率為40 kbps;Flash模式的最大傳輸速率為115 kbps。為了避免打斷傳輸過(guò)程,在普通模式下禁止改變傳輸速率。正確的做法是先禁止發(fā)送功能,再改變傳輸速率,最后允許發(fā)送功能。
LIN模塊在普通模式下還建立了一種自動(dòng)省電機制。當發(fā)送隊列中沒(méi)有數據時(shí),將自動(dòng)禁止發(fā)送功能;當有發(fā)送請求時(shí),將自動(dòng)開(kāi)啟發(fā)送功能。
3.2 基于TLE9832的車(chē)窗防夾控制系統
基于TLE9832的防夾車(chē)窗控制系統是英飛凌同濟微控制器與嵌入式系統實(shí)驗室的最新研究成果。用戶(hù)可以通過(guò)按鍵或者LIN總線(xiàn)控制車(chē)窗的上升和下降?;赥LE9832的防夾車(chē)窗系統原理圖如圖4所示??赏ㄟ^(guò)控制PWM信號控制電機的轉速,而霍爾傳感器TLE4966又會(huì )采集電機的轉速并傳送給TLE9832,這樣就構成了閉環(huán)控制。此外,電機的電樞電流在轉化為電壓信號后,被傳送給TLE9832的ADC模塊。如果車(chē)窗在上升過(guò)程中遇到不正常的阻力,電樞電流和電機轉速都會(huì )發(fā)生異常的變化,TLE9832可以根據這種變化判斷是否執行防夾算法,避免傷害乘客。
圖4 基于TLE9832的防夾車(chē)窗系統原理圖
3.3 LIN通信部分的軟件設計
LIN通信部分的程序流程如圖5所示??蓪?a class="contentlabel" href="http://dyxdggzs.com/news/listbylabel/label/車(chē)窗控制">車(chē)窗控制器中LIN通信部分的程序分為兩個(gè)部分:
圖5 LIN通信部分程序流程
① 第一部分為初始化,在每次重新上電后,程序都會(huì )首先讀取Flash中的數據,若0x8000中的數據為0x78,則判斷產(chǎn)品在出廠(chǎng)后執行過(guò)保存配置的功能。所以程序會(huì )將存儲在Flash中的NAD和幀ID讀出來(lái),作為當前的NAD和幀ID。接著(zhù)是初始化LIN模塊,包括設置與LIN通信相關(guān)的定時(shí)器和UART等外設,設置從節點(diǎn)的各個(gè)參數、波特率等。
② 第二部分則放在定時(shí)器中斷里面,在每次中斷時(shí)進(jìn)行節點(diǎn)配置、數據的發(fā)送和接收。首先是根據幀ID判斷有無(wú)節點(diǎn)配置任務(wù),若有則根據SID執行各種節點(diǎn)配置任務(wù);接著(zhù)根據收到的數據幀內容控制車(chē)窗的自動(dòng)上升和自動(dòng)下降;最后將車(chē)窗信息,包括電樞電流、車(chē)窗位置等發(fā)給主節點(diǎn)。
4 LIN通信的測試結果
本測試借助Kvaser公司出品的LIN通信測試工具Leaf Professional LIN及其配套軟件CANLab完成。測試時(shí)測試工具設置為主節點(diǎn),TLE9832單片機設置為從節點(diǎn),比特率設置為19 200 bps。初始NAD設置為0x06,初始幀ID為無(wú)條件幀0x00、0x01和診斷配置幀0x3C、0x3D,SupplierID和Function ID都為0x0000。
首先測試節點(diǎn)配置的各個(gè)功能:先測試分配N(xiāo)AD功能,將NAD修改為0x03;接著(zhù)測試有條件分配N(xiāo)AD功能,將NAD修改為0x08;然后測試分配一系列幀ID功能,并保存設置;最后重新上電,并讀取從節點(diǎn)信息。節點(diǎn)配置功能的測試結果如圖6所示。
圖6 節點(diǎn)配置功能的測試結果
然后通過(guò)LIN總線(xiàn)控制車(chē)窗自動(dòng)上升和下降,測試結果如圖7所示。
圖7 車(chē)窗自動(dòng)上升下降功能的測試結果
最后通過(guò)LIN總線(xiàn)獲得車(chē)窗上升過(guò)程中電樞電流的數據,并轉換成圖形,如圖8所示。其中電流值為經(jīng)過(guò)A/D轉換后的結果。
圖8 車(chē)窗上升過(guò)程中的電樞電流值
結語(yǔ)
本文基于LIN2.1協(xié)議設計了防夾車(chē)窗控制系統中的通信模塊??梢钥闯?,該模塊可以很好地滿(mǎn)足用戶(hù)在數據傳輸和診斷等方面的需求。LIN總線(xiàn)自身的發(fā)展必將推動(dòng)車(chē)身控制領(lǐng)域的進(jìn)一步發(fā)展。
評論