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