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