低成本LIN總線(xiàn)協(xié)議在汽車(chē)網(wǎng)絡(luò )中的應用
圖1顯示了LIN在汽車(chē)中的典型應用??偩€(xiàn)上的地電位信號為顯性狀態(tài),只要任何節點(diǎn)將總線(xiàn)電壓拉低,就會(huì )出現這一狀態(tài)。當總線(xiàn)處于電池電壓且所有節點(diǎn)都使總線(xiàn)處于懸空狀態(tài)時(shí),會(huì )出現隱性狀態(tài)。在空閑狀態(tài)下,總線(xiàn)通過(guò)上拉電阻懸空為高電平。
LIN總線(xiàn)的工作電壓范圍為9~18V,但總線(xiàn)上所有部件都必須能夠承受40V電壓。通常,單片機通過(guò)線(xiàn)路驅動(dòng)器/接收器與總線(xiàn)隔離,這種方案下總線(xiàn)每個(gè)節點(diǎn)都端接為VBAT電平,主節點(diǎn)通過(guò)1kΩ電阻端接,從節點(diǎn)則通過(guò)20-47kΩ的電阻端接??偩€(xiàn)最大設計長(cháng)度為40米。
每個(gè)字節都利用起始位和停止位作為頭尾標志位。起始位與空閑狀態(tài)相反,為0,而停止位則等同空閑狀態(tài)(即1)。在每個(gè)字節內,數據從最低位(LSB)開(kāi)始傳送。
報文協(xié)議
主節點(diǎn)用于控制LIN總線(xiàn),它通過(guò)對從節點(diǎn)進(jìn)行查詢(xún),將數據發(fā)布到總線(xiàn)上。從節點(diǎn)僅在主節點(diǎn)的命令下發(fā)送數據,從而在無(wú)需仲裁的情況下實(shí)現雙向通訊。報文的傳送是在主節點(diǎn)發(fā)出一個(gè)同步間隔脈沖后開(kāi)始的,然后跟隨的是同步字段和報文字段。主節點(diǎn)通過(guò)在每個(gè)報文的開(kāi)始處發(fā)送同步字段可設定整個(gè)總線(xiàn)時(shí)鐘。
每條報文的第二字節是一個(gè)標識符字節,它告訴LIN總線(xiàn)隨后將發(fā)送的是什么數據,并指明哪個(gè)節點(diǎn)應該應答及應答的長(cháng)度是多少。對于給定的命令,只有一個(gè)從節點(diǎn)可以應答。
從節點(diǎn)僅在主節點(diǎn)的控制下在LIN總線(xiàn)上發(fā)送數據。一旦數據發(fā)布到總線(xiàn)上,任何節點(diǎn)都可以接收該數據。因此,一個(gè)從節點(diǎn)向其它從節點(diǎn)發(fā)送數據無(wú)需主節點(diǎn)干預。
由于LIN協(xié)議使用低成本RC振蕩器,因此從節點(diǎn)必須檢測主節點(diǎn)每次發(fā)送的波特率,并調整為當前速率,所以每次通訊都以同步字段開(kāi)始,它是一個(gè)0、1交替出現的字節。
同步字段之后是標識符字段,它告訴LIN總線(xiàn)接著(zhù)出現的內容。該字段進(jìn)一步分為三個(gè)子字段:4位(0-3)用于對總線(xiàn)上的設備進(jìn)行尋址;2位(4-5)指明此后報文的長(cháng)度,最后2位(6-7)用于奇偶校驗。
除休眠命令之外,LIN協(xié)議沒(méi)有定義任何報文的內容,其它命令是在具體應用中定義的。
錯誤檢測
以下錯誤必須在每一節點(diǎn)處進(jìn)行檢測和計數,一旦出現錯誤,該命令就要被丟棄,并記錄這一錯誤事件。位錯誤——正在發(fā)送的節點(diǎn)應該對希望發(fā)送的數據與總線(xiàn)上實(shí)際出現的數據進(jìn)行比較,控制器必須等待足夠時(shí)間以確??偩€(xiàn)對發(fā)出的數據做出反應,然后才可測試這一數據。假定總線(xiàn)響應信號的最小邊沿變化速率為1V/μs,最大總線(xiàn)電壓為18V,那么發(fā)送器應等待18μs后才可進(jìn)行測試。校驗和錯誤——每條報文的數據內容都受到校驗和字節的保護,該字節是數據字節相加后取256模的余數再取反的結果。奇偶校驗——命令字節使用2個(gè)奇偶位來(lái)保護其它6個(gè)數位,這兩個(gè)數位在接收后要重新計算,再與接收結果進(jìn)行比較。
評論