LIN

**LIN**（Local Interconnect Network 的簡稱，中譯是區域網際網路路），是應用在汽車內零組件之間通訊的串列網絡傳輸協議。由於汽車上的技術及設備漸漸增加，需要低價的串列網路，而控制器區域網路（CAN）的成本太高，無法在車上的每一個設備中都裝設。歐洲汽車製造商開始使用不同的串列通訊技術，因此出現彼此無法相容的問題。

在 1990 年代末期，由 BMW、大眾集團、奧迪、富豪汽車及梅賽德斯 - 賓士這五家車廠開始了 LIN Consortium，也有從 Volcano 汽車集團及摩托羅拉而來的軟體及硬體協助。第一個完全實現的新 LIN 協定（LIN version 1.3）是在 2002 年 11 月發佈。在 2003 年 9 月發佈了 2.0 版，增加了額外的診斷功能。若是配合特製的 LIN over DC power line（DC-LIN）收發器，LIN 也可以用在汽車車池的電力線通信。

LIN over DC power line（DC-LIN）的相關標準是 ISO/AWI 17987-8.。

ISO 技術管理委員會（ISO Technical Management Board，ISO TMB）已指定 CAN in Automation 為依照 ISO 17987 的 LIN 供應商 ID 的註冊機構。

## 網路拓樸

LIN 是廣播串行網路，其中包括 16 個設備（一台主站，15 台從站）

所有的訊息都是由主站開始，最多會有一台從站回覆有特定識別碼的訊息。主站節點也可能當作一個從站，回應自己發出的訊息。因為所有的通訊都是由主站開始，不需要有碰撞偵測的方案。

主站和從站一般都是用單片機實現，不過為了節省成本、空間或是電源，也可以用特殊的硬體或是特殊應用積體電路來實現。

目前的應用會結合低價的 LIN 網路及小型感測器來建構小型網路。這些子系統之間可以用骨幹網路（在汽車中可能是 CAN）。

## 簡介

LIN 是低成本的串列通訊協定，可以有效支援車內網路的遠程應用。LIN 特別適用在分散在汽車不同位置的機械式節點，也適用於工業應用。LIN 設計時是和 CAN 網路互補，組成車內的階層式網路。

LIN Consortium 是在 1990 代末期組成的，組成成員是五家歐洲車廠，以及明導國際（以前的 Volcano 車輛集團）及飛思卡爾（之前的摩托羅拉，現在已併入恩智浦半導體）。新的 LIN 規範中，第一個完全實現的版本是在 2002 年 11 月發佈的 LIN 1.3 版。在 2003 年 9 月提出了 2.0 版，擴充了組態能力，以及額外的診斷機能以及工具介面。

協定的主要特點如下：

* 單一主站，最多 16 個從站（沒有總線仲裁的過程）。這是 LIN Consortium 強調的特點，以達到確定性的時間反應。
  * 從站節點位置偵測（Slave Node Position Detection、SNPD），可以在送電後才指定節點的位址。
* 單線通訊，在長度 40 公尺時，可以到 19.2 kbit/s。在 LIN 規範 2.2 中，速率最高可到 20 kbit/s。
* 可確保的延遲時間。
* 可變長度的資料頁框（2, 4 及 8 位元組）。
* 可變動的組態。
* 多播接收的時間同步。設備電路的時脈不需非常準確。不需要晶振（crystal）或是陶瓷振盪器。
* 資料檢查碼以及錯誤檢測。.
* 可以檢測故障的節點。
* 以標準 UART/SCI（串列通訊介面）為基礎的電路，低成本的方案。
* 可以建立階層式的網路
* 工作電壓為 12 V。

資料是透過可變長度，固定格式的訊息來在網路上傳播。主站會送出標頭（header）資料，其中包括同步間隔（Synchronization break）信號，之後是同步欄位以及識別符（ID）欄位。從站回應資料頁框（frame），其中包括 2 個、4 個或 8 個位元組的資料，再加上 3 個位元組的控制資訊。

## LIN 訊息頁框

訊息包括以下的欄位：

* 同步間隔（Synchronization break）
* 同步位元組
* 識別符（ID）位元組
* 資料位元組
* 檢查碼位元組

### 頁框種類

1. **無條件頁框**（Unconditional frame）：會帶有訊號，其識別符會在 0 到 59 之內。所有無條件頁框的收聽節點都要接收此頁框，若沒有錯誤的話，其應用程式需處理對應的內容。
2. **事件驅動頁框**（Event-triggered frame）：其目的是增加 LIN 節點的反應能力，不需要為了偶爾出現的訊號而用輪詢的方式向各節點確認，消耗網路的頻寬。無條件頁框的第一個位元組需和某個事件驅動頁框的保護識別符 (PID) 相同。從站只有在其數值變化時才需要回應對應的無條件頁框。若沒有節點回應，該頁框的剩餘時間沒有信號，會忽略該標頭資料。若不止一個節點回覆，此頁框時間會出現資料碰撞，主站需處理碰撞的情形，在下一次提出事件驅動頁框前需要先請求所有相關的無條件頁框。
3. **偶發頁框**（Sporadic frame）：此頁框是在主站有需要時，由主站發出，因此不會有碰撞。只有在主站知道某頁框的資料有變化時，才會在對應的頁框時間區間內送出偶發頁框的標頭。偶發頁框的發送者需要回應標頭的資料。
4. **診斷頁框**（Diagnostic frame）：其中包括診斷或是組態的資訊，長度 8 位元組，識別符是 60（主站請求頁框）或 61（從站回應頁框）。主站在產生診斷頁框的標頭之前，需要先問診斷模組是否應送診斷資料，以及網路上是否應有資訊。從站也會接收這些資料，依照其診斷模組的訊息回應資訊，
5. **自定頁框**（User-defined frame）：可以包括任何資訊。其識別符是 62。當處理了指定給該頁框的頁框時間區間時，會送出指定頁框的標頭。
6. **保留頁框**（Reserved frame）：LIN 2.0 cluster 不會使用，其識別符是 63。

## LIN 硬體

LIN 規範就是為了設計在網路中很低價的硬體節點所開發。LIN 設備是以 ISO 9191 為基礎的低成本、單線網路。以現今的汽車網架構來看，會使用有 UART 能力，或是有專門 LIN 硬體的微控制器。

微控制器會產生通訊協定、同位元等 LIN 通訊需要的所有資料，透過 LIN 收發器（可能只是電壓轉換，再加上一些機能）

LIN 的從站節點越便宜越好，因此其時脈可能不是用石英晶體諧振器或陶瓷諧振器，而是用 RC 振盪器產生時脈。為了確保 LIN 頁框內波特率的穩定性，頁框中會有 SYNC（同步）的欄位。

## LIN 通訊協定

LIN 主站會依照一個或是幾個事先定義的排程表，在 LIN 網路上開始傳送或是接收訊息。排程表中至少會包括各訊息開始發送的相對時序。
LIN 頁面由兩部份組成：標頭（header）及回應（response）。標頭是由 LIN 主站送出，回應可能由特定的 LIN 從站送出，或是由 LIN 主站本身送出。

LIN 是用串列的方式傳送資料，一個位元組中有八個位元，一個啟始位元，一個結束位元，無同位元檢查（break 欄位沒有啟始位元及停止位元)。位元率的範圍最慢到 1 kbit/s，最快到 20 kbit/s。
在網路上的資料可以分為隱性 (recessive，邏輯上的高準位) 及顯性 (dominant，邏輯上的低準位)
其時間基礎是由 LIN 主站的穩定時脈來源來決定，最小的單位是 1 位元時間（52 µs @ 19.2 kbit/s）。

LIN 協定上，有列出兩種網路上的狀態：睡眠狀態及活躍狀態。在 LIN 網路上有資料時，所有的 LIN 節點都進入活躍狀態。在一定時間的逾時時間後，節點會進入睡眠狀態，若有喚醒頁框 (WAKEUP frame) 時才會回到活躍狀態。
喚醒頁框可以由網路上任何一個節點發起，可以是 LIN 主站依照其內部時程發起。也可以是 LIN 從站由其韌體所產生。
在所有節點都活躍之後，主站會繼續下一個識別符的排程。

### 標頭

標頭（header）包括五部份：

**間隔（BREAK）**
: 間隔欄位會活化所有的 LIN 從站，預備接收後續標頭的內容。其欄位包括一個啟始位元以及數個顯性位元，長度至少是 11 個位元時間，目前使用的標準，其長度是 13 個位元時間，和基本的資料格式不同。間隔欄位是在主時脈可以和各 LIN 節點時脈不同時（但差異在一定範圍內時），確保所有接收的 LIN 節點可以偵測到表示開始通訊的間隔欄位，這不是標準的資料格式，其數值均為 0。

**同步（SYNC）**
: 同步欄位是標準的資料格式位元組，數值是十六進制的 0x55（高位元及低位元輪流變化） 。使用 RC 振盪器的 LIN 從站可以用一定數量上昇緣及下降緣的時間差，計算網站上的位元時間（主站的 time normal），並且重新計算內部的位元率。

**位元組間隔（INTER BYTE SPACE）**
: 位元組間隔是用來調整網路上的 jitter，是 LIN 規範中可選擇的項目。若啟動的話，所有 LIN 模組都要支援此一機能。位元組間隔出現在間隔欄位和同步欄位之間、同步欄位和識別符欄位之間、同步欄位和識別符欄位之間、酬載（不考慮通訊協定，實際要傳輸的資料）欄位和檢查碼欄位之間。在酬載欄位的每一個位元組之間也要有位元組間隔。

**識別符（IDENTIFIER）**
: 識別符定義一個到多個 LIN 從站節點要進行的動作。網路設計者需在設計階段實現故障樹的機能（在一個頁框時間內，只允許一個從站傳送資料）。在標題中的識別符會再加上二位元的檢查位元，即為受保護的識別符（PID）。若識別符讓一個實體的 LIN 從站傳送回應資訊，此識別符稱為 Rx 識別符。若識別符讓 LIN 主站的從站任務送出資訊，此識別符稱為 Tx 識別符。

**回應間隔（RESPONSE SPACE）**
: 是識別符欄位和 LIN 回應訊息中第一個位元組之間的間隔時間。當特定的 LIN 頁框 (標頭及回應) 由 LIN 主站傳送完畢，LIN 主站會用完整的回應間隔間來計算何時要再送出回應資料。若回應是由另外一個 LIN 從站送出，主站及從站點會在其逾時時間的計算上，各自處理 50% 的回應間隔。

### 回應

回應是由 LIN 從站任務產生（可能是實體從站，也可能是主站的從站任務），分為資料及校驗和。

**資料**
: 回應的從站可以送零個到八個位元組到網路上，資料數量由應用程式設計者決定，對應 LIN 從站應用程式中相關的資料。

**檢查碼（CHECKSUM）**
: LIN 有二種檢查碼模式，一種檢查碼只包括資料欄位（V1.3 之前的規範），另一種也包括識別符（V2.0 之後的規範)。由應用程式的設計者事先定義要用的檢查碼模式。

## 從站節點位置偵測試（SNPD）或自動定址

從站節點位置偵測試（Slave node position detection, SNPD）或自動定址（autoaddressing）的技術可以偵測 LIN 網路上各從站節點的位置順序，並給予節點不重覆的節點位址（unique node address、NAD），好處是可以讓同一類或是類似的設備可以直接連接到網路，不需要另外修改程式

限制：

* 所有需要自動定址的從站，需要在同一條網路線上（若是不需要自動定址的標準從站，接線就不受限制）。

### 外部接線菊花鏈

外部接線菊花鏈（Extra wire daisy chain，XWDC）的方案中，每一個從站設備需要多提供一個輸入腳 D1，以及一個輸出腳 D2。

* 第一個 SNPD 節點的輸入腳 D1 接到 GND，或是接到主站的輸出腳。
* 第一個 SNPD 節點的輸出腳 D2，接到第二個 SNPD 節點的輸入腳 D1，以及類推。

每一個組態腳 Dx（x=1-2）有以下額外的機能來進行位置偵測：

1. 可以切換的上拉電阻，電阻另一端連接 Vbat
2. 下拉到 GND
3. 有比較器，電壓準位是 Vbat/2

### 總線分流法

總線分流法（Bus shunt method，BSM）的從站設備中，有二個 LIN 節點

1. bus\_in
2. bus\_out

每一個節點需增加以下電路，進行位置偵測的機能。

1. 可以切換的上拉電阻。
2. 可以切換的，從 Vbat 提供的 2 mA 電流源。
3. 分流電阻
4. 差動放大器
5. 類比 — 數位轉換器

在 EP 1490772 B1 及 US 7091876 的專利中，有提到 BSM 的自動定址技術。

## LIN 的優點

* 方便使用
* 元件容易取得
* 比 CAN 或其他的通訊網路要便宜
* 減少線束
* 可以讓車輛更可靠
* 網路延伸很容易
* 不需通訊協定的權利金

LIN 的目的不是為了完全取代 CAN 網路。不過若價格是主要考量，較沒有速度及頻寬上的需求時，LIN 是很適合的替代方案。一般來說，LIN 會用在車輛中對性能或安全性較不要求的子系統，以下是一些例子。

## 應用

## 位址

LIN 網路中的位址是透過 NAD（Node ADdress、節點位址）來實現，NAD 是 PID（protected identifier、受保護識別碼）的一部份。NAD 的值有 7 位元，其範圍從 1 到 127 (0x7F)

## 開發工具

在開發 LIN 網路或是除錯時，硬體訊號的檢查格外的重要。邏輯分析儀及通訊分析儀可以搜集、分析、解碼通訊訊號並加以儲存，方便開發及除錯使用。

## 相關條目

* 網路串列協定列表
* SAE J3068（LIN-CP）

## 參考資料

## 外部連結

* LIN Consortium（頁面存檔備份，存於網際網路檔案館） it is not longer available, because the latest LIN specification (2.2A) is being transcribed to the ISO (International Organization for Standardization) as part of the process to be accepted as ISO standard ISO 17987 Part 1-7.
* LIN Supplier ID Registration Authority Registration Authority for the LIN Supplier ID standardized in the ISO 17987 series
* Deep dive LIN training course with hands-on examples（頁面存檔備份，存於網際網路檔案館）
* CAN/LIN Training
* Brief CAN/LIN Background Information (Chinese)
* Article about a free open hardware/software implementation of the LIN protocol
* An open source Arduino based LIN protocol analyzer（頁面存檔備份，存於網際網路檔案館）
* Open source Arduino based platform with LIN connectivity（頁面存檔備份，存於網際網路檔案館）
* A free online LIN checksum calculator（頁面存檔備份，存於網際網路檔案館）