LIN 筆記

LIN 使用了 1 根線來進行通訊,可是,它必需要參考 VBat 和 GND。離開這兩個參考電平,並無辦法來判斷線上的 bit 狀態。node

另外,根據經典的 LIN 驅動電路(一個 OC 門),RX 接收到的高電平,就是由 Vbat 經過上拉電阻提供;當 TX 爲 1 時,下面的三極管打開,RX 電平被拉低。接收到的高電平就是下面提到的隱性位,總線上電平被拉低接收到的就是所謂顯性位網絡

     

實際的要比這個複雜,可是,這個很好的說明了 LIN 的通訊原理。右側圖中,就是 LIN BUS 鏈接的一個示例。這個網絡中,Master 的上拉電阻一般選 1 KOhm, Slave 的上拉電阻一般 30 KOhms.app

爲了解決傳輸的衝突問題,這個網絡中定義了,必須由 Master 來調度通訊;Master 管理網絡中的 時間片,Master 把時間片給誰,誰就能往 BUS 上發送數據工具

 因此,這個通訊過程,Master 保持有一個 Schedule_tables ,來指定每個 node 的傳輸動做。編碼

 

Framespa

LIN 通訊的最小單元是 Frame。 LIN 是基於 UART/SCI  實現的,因此它每一個 Byte 的傳輸基本是和 UART 同樣;網上有人使用有限狀態機+UART 來完成 LIN 通訊,有興趣能夠了解下。設計

如圖下面是 LIN 的幀結構,能夠回憶 UART 幀結構來理解。3d

LIN 的一個 Frame 由 5個部分組成,分別是:間隔段、同步段、ID段、數據段、校驗字。blog

1) 間隔段至關於 UART 發送數據 0x00。這是一個 Frame 的第1個 Byte。圖片

2) 同步段至關於 UART 發送數據 0x55。這是一個 Frame 的第2個 Byte。

3) ID 段一樣也是 8bit,可是,前兩個 bit 用做 paritybit,實際上只有 6bit 做爲 ID 段。便可用的幀 ID 只有 64 個。事先設計時,一般會根據 ID 的不一樣,來定義幀的類型,常見幀類型有如下幾種(ID分配不必定是和下面表格一致,看具體設計)

4) 數據部分的長度,並無在幀裏面攜帶,而是在設計網絡時事先定義好的。可是必須是 1-8 個 Bytes。數據段內容,根據幀類型的不一樣,有可能攜帶 singal 或者 statistic messages

5) 校驗和也沒有特殊約定,具體的設計可能有不一樣方案。

另外,由於幀的 ID 部分必須是由 Master 發送的,而 Data 根據設計不一樣,由不一樣的 Publisher(Slave Node) 來發送。因此,BUS 上的情形多是下面這種的:

 

LDF 文件

LDF 是 LIN Description File 的縮寫。根據咱們上面的描述,這個網絡裏面的諸多特性,都是能夠靈活配置的,因此,便有了 LDF 這樣一個統一的對網絡的描述方式(LIN Spe. 指定了 LDF 的格式,因此是通用的)。

基本上,LDF 文件,描述了下面這幾個方面的內容:

1. 總線上都有哪些節點?

2. 總線上都有哪些數據幀會被傳輸(幀ID、數據長度、數據由誰發佈)?

3. 某一幀上面攜帶了哪些 Signals(Mapping)?

4. BUS 上的幀以怎樣一個順序發佈(schedule table) ?

5. 幀數據的解析方式,用的什麼編碼 ?

 下面對 LDF 文件的幾個重要內容做一一解釋(圖片來自microchip)。

 最後,再上傳一個好用的 LDF 編輯工具:LDFTool

相關文章
相關標籤/搜索