CAN FD 協議深入解析
FD 資料框架
前言
在我們之前的文章 《為什麼 CAN FD 很重要:超越傳統 CAN 的一大躍進》 中, 我們探討了 CAN FD 作為傳統 CAN 的演進歷程。從最初的 CAN,到 CAN 2.0A、CAN 2.0B, 直至今日的 CAN FD,這個協議持續不斷進化。
CAN 2.0A 引入了標準 11 位元識別符,而 CAN 2.0B 則擴展至 29 位元識別符。 然而,僅有 8 位元組的負載限制,以及 1 Mbps 的資料速率,已經不足以應付現代應用。 為了應對此需求,Bosch 推出了 CAN FD,支援最高 64 位元組 的負載, 資料速率最高可達 8 Mbps 甚至更高,並支援 位元率切換 (BRS)。
在本文中,我們將深入探討 CAN FD 資料框架的結構。
協議重點
協議版本 | 重點特色 |
---|---|
CAN 2.0A | 11 位元 – 標準識別符 |
CAN 2.0B | 11/29 位元 – 標準 / 擴展識別符 |
CAN FD | 64 位元組負載,資料速率最高可達 8 Mbps 或更高 |
FD 資料框架 – FDF 位元
FDF (FD Format) 位元位於 控制欄位 (Control Field), 是確保與 CAN 2.0 向下相容的重要控制位元。
- FDF = 1 (隱性):此框架視為 CAN FD
- FDF = 0 (顯性):此框架視為傳統 CAN (CAN 2.0)
可變資料速率 (BRS)
CAN FD 框架在控制欄位中引入了 BRS (Bit Rate Switch) 標誌。
- BRS = 1 (隱性):從仲裁速率切換到更快的資料速率,直到 CRC 定界符
- BRS = 0 (顯性):傳輸維持在仲裁速率
注意:即使 BRS=0,該框架仍是 CAN FD,但不會提升傳輸速度。
錯誤狀態指示器 – ESI 位元
CAN FD 在控制欄位中新增了一個 ESI (Error State Indicator) 標誌。 它反映了發送節點的錯誤狀態:
ESI | 錯誤狀態 |
---|---|
0 (顯性) | 錯誤-主動 (Error-Active) |
1 (隱性) | 錯誤-被動 (Error-Passive) |
擴展的最大負載
CAN 2.0 僅支援最大 8 位元組 負載, 而 CAN FD 將此限制擴展至 64 位元組。
DLC (資料長度碼) 解讀
在 CAN 2.0 中,4 位元 DLC 欄位支援 0–8 位元組。 在 CAN FD 中,當 DLC 大於 8 時,對應至固定的負載長度。
資料位元組數 | DLC (二進位) |
---|---|
0 | 0000 |
1 | 0001 |
2 | 0010 |
3 | 0011 |
4 | 0100 |
5 | 0101 |
6 | 0110 |
7 | 0111 |
8 | 1000 |
12 | 1001 |
16 | 1010 |
20 | 1011 |
24 | 1100 |
32 | 1101 |
48 | 1110 |
64 | 1111 |
範例
若傳輸資料長度 = 9 → DLC = 1001。 為了符合 12 位元組的需求,將會自動補齊 3 個填充位元組 (0x00)。
CAN FD 協議深入解析
FD 資料框架
前言
在我們之前的文章 《為什麼 CAN FD 很重要:超越傳統 CAN 的一大躍進》 中, 我們探討了 CAN FD 作為傳統 CAN 的演進歷程。從最初的 CAN,到 CAN 2.0A、CAN 2.0B, 直至今日的 CAN FD,這個協議持續不斷進化。
CAN 2.0A 引入了標準 11 位元識別符,而 CAN 2.0B 則擴展至 29 位元識別符。 然而,僅有 8 位元組的負載限制,以及 1 Mbps 的資料速率,已經不足以應付現代應用。 為了應對此需求,Bosch 推出了 CAN FD,支援最高 64 位元組 的負載, 資料速率最高可達 8 Mbps 甚至更高,並支援 位元率切換 (BRS)。
在本文中,我們將深入探討 CAN FD 資料框架的結構。
協議重點
協議版本 | 重點特色 |
---|---|
CAN 2.0A | 11 位元 – 標準識別符 |
CAN 2.0B | 11/29 位元 – 標準 / 擴展識別符 |
CAN FD | 64 位元組負載,資料速率最高可達 8 Mbps 或更高 |
FD 資料框架 – FDF 位元
FDF (FD Format) 位元位於 控制欄位 (Control Field), 是確保與 CAN 2.0 向下相容的重要控制位元。
- FDF = 1 (隱性):此框架視為 CAN FD
- FDF = 0 (顯性):此框架視為傳統 CAN (CAN 2.0)
可變資料速率 (BRS)
CAN FD 框架在控制欄位中引入了 BRS (Bit Rate Switch) 標誌。
- BRS = 1 (隱性):從仲裁速率切換到更快的資料速率,直到 CRC 定界符
- BRS = 0 (顯性):傳輸維持在仲裁速率
注意:即使 BRS=0,該框架仍是 CAN FD,但不會提升傳輸速度。
錯誤狀態指示器 – ESI 位元
CAN FD 在控制欄位中新增了一個 ESI (Error State Indicator) 標誌。 它反映了發送節點的錯誤狀態:
ESI | 錯誤狀態 |
---|---|
0 (顯性) | 錯誤-主動 (Error-Active) |
1 (隱性) | 錯誤-被動 (Error-Passive) |
擴展的最大負載
CAN 2.0 僅支援最大 8 位元組 負載, 而 CAN FD 將此限制擴展至 64 位元組。
DLC (資料長度碼) 解讀
在 CAN 2.0 中,4 位元 DLC 欄位支援 0–8 位元組。 在 CAN FD 中,當 DLC 大於 8 時,對應至固定的負載長度。
資料位元組數 | DLC (二進位) |
---|---|
0 | 0000 |
1 | 0001 |
2 | 0010 |
3 | 0011 |
4 | 0100 |
5 | 0101 |
6 | 0110 |
7 | 0111 |
8 | 1000 |
12 | 1001 |
16 | 1010 |
20 | 1011 |
24 | 1100 |
32 | 1101 |
48 | 1110 |
64 | 1111 |
範例
若傳輸資料長度 = 9 → DLC = 1001。 為了符合 12 位元組的需求,將會自動補齊 3 個填充位元組 (0x00)。
CAN FD 協議深入解析
FD 資料框架
前言
在我們之前的文章 《為什麼 CAN FD 很重要:超越傳統 CAN 的一大躍進》 中, 我們探討了 CAN FD 作為傳統 CAN 的演進歷程。從最初的 CAN,到 CAN 2.0A、CAN 2.0B, 直至今日的 CAN FD,這個協議持續不斷進化。
CAN 2.0A 引入了標準 11 位元識別符,而 CAN 2.0B 則擴展至 29 位元識別符。 然而,僅有 8 位元組的負載限制,以及 1 Mbps 的資料速率,已經不足以應付現代應用。 為了應對此需求,Bosch 推出了 CAN FD,支援最高 64 位元組 的負載, 資料速率最高可達 8 Mbps 甚至更高,並支援 位元率切換 (BRS)。
在本文中,我們將深入探討 CAN FD 資料框架的結構。
協議重點
協議版本 | 重點特色 |
---|---|
CAN 2.0A | 11 位元 – 標準識別符 |
CAN 2.0B | 11/29 位元 – 標準 / 擴展識別符 |
CAN FD | 64 位元組負載,資料速率最高可達 8 Mbps 或更高 |
FD 資料框架 – FDF 位元
FDF (FD Format) 位元位於 控制欄位 (Control Field), 是確保與 CAN 2.0 向下相容的重要控制位元。
- FDF = 1 (隱性):此框架視為 CAN FD
- FDF = 0 (顯性):此框架視為傳統 CAN (CAN 2.0)
可變資料速率 (BRS)
CAN FD 框架在控制欄位中引入了 BRS (Bit Rate Switch) 標誌。
- BRS = 1 (隱性):從仲裁速率切換到更快的資料速率,直到 CRC 定界符
- BRS = 0 (顯性):傳輸維持在仲裁速率
注意:即使 BRS=0,該框架仍是 CAN FD,但不會提升傳輸速度。
錯誤狀態指示器 – ESI 位元
CAN FD 在控制欄位中新增了一個 ESI (Error State Indicator) 標誌。 它反映了發送節點的錯誤狀態:
ESI | 錯誤狀態 |
---|---|
0 (顯性) | 錯誤-主動 (Error-Active) |
1 (隱性) | 錯誤-被動 (Error-Passive) |
擴展的最大負載
CAN 2.0 僅支援最大 8 位元組 負載, 而 CAN FD 將此限制擴展至 64 位元組。
DLC (資料長度碼) 解讀
在 CAN 2.0 中,4 位元 DLC 欄位支援 0–8 位元組。 在 CAN FD 中,當 DLC 大於 8 時,對應至固定的負載長度。
資料位元組數 | DLC (二進位) |
---|---|
0 | 0000 |
1 | 0001 |
2 | 0010 |
3 | 0011 |
4 | 0100 |
5 | 0101 |
6 | 0110 |
7 | 0111 |
8 | 1000 |
12 | 1001 |
16 | 1010 |
20 | 1011 |
24 | 1100 |
32 | 1101 |
48 | 1110 |
64 | 1111 |
範例
若傳輸資料長度 = 9 → DLC = 1001。 為了符合 12 位元組的需求,將會自動補齊 3 個填充位元組 (0x00)。
CAN FD 協議深入解析
FD 資料框架
前言
在我們之前的文章 《為什麼 CAN FD 很重要:超越傳統 CAN 的一大躍進》 中, 我們探討了 CAN FD 作為傳統 CAN 的演進歷程。從最初的 CAN,到 CAN 2.0A、CAN 2.0B, 直至今日的 CAN FD,這個協議持續不斷進化。
CAN 2.0A 引入了標準 11 位元識別符,而 CAN 2.0B 則擴展至 29 位元識別符。 然而,僅有 8 位元組的負載限制,以及 1 Mbps 的資料速率,已經不足以應付現代應用。 為了應對此需求,Bosch 推出了 CAN FD,支援最高 64 位元組 的負載, 資料速率最高可達 8 Mbps 甚至更高,並支援 位元率切換 (BRS)。
在本文中,我們將深入探討 CAN FD 資料框架的結構。
協議重點
協議版本 | 重點特色 |
---|---|
CAN 2.0A | 11 位元 – 標準識別符 |
CAN 2.0B | 11/29 位元 – 標準 / 擴展識別符 |
CAN FD | 64 位元組負載,資料速率最高可達 8 Mbps 或更高 |
FD 資料框架 – FDF 位元
FDF (FD Format) 位元位於 控制欄位 (Control Field), 是確保與 CAN 2.0 向下相容的重要控制位元。
- FDF = 1 (隱性):此框架視為 CAN FD
- FDF = 0 (顯性):此框架視為傳統 CAN (CAN 2.0)
可變資料速率 (BRS)
CAN FD 框架在控制欄位中引入了 BRS (Bit Rate Switch) 標誌。
- BRS = 1 (隱性):從仲裁速率切換到更快的資料速率,直到 CRC 定界符
- BRS = 0 (顯性):傳輸維持在仲裁速率
注意:即使 BRS=0,該框架仍是 CAN FD,但不會提升傳輸速度。
錯誤狀態指示器 – ESI 位元
CAN FD 在控制欄位中新增了一個 ESI (Error State Indicator) 標誌。 它反映了發送節點的錯誤狀態:
ESI | 錯誤狀態 |
---|---|
0 (顯性) | 錯誤-主動 (Error-Active) |
1 (隱性) | 錯誤-被動 (Error-Passive) |
擴展的最大負載
CAN 2.0 僅支援最大 8 位元組 負載, 而 CAN FD 將此限制擴展至 64 位元組。
DLC (資料長度碼) 解讀
在 CAN 2.0 中,4 位元 DLC 欄位支援 0–8 位元組。 在 CAN FD 中,當 DLC 大於 8 時,對應至固定的負載長度。
資料位元組數 | DLC (二進位) |
---|---|
0 | 0000 |
1 | 0001 |
2 | 0010 |
3 | 0011 |
4 | 0100 |
5 | 0101 |
6 | 0110 |
7 | 0111 |
8 | 1000 |
12 | 1001 |
16 | 1010 |
20 | 1011 |
24 | 1100 |
32 | 1101 |
48 | 1110 |
64 | 1111 |
範例
若傳輸資料長度 = 9 → DLC = 1001。 為了符合 12 位元組的需求,將會自動補齊 3 個填充位元組 (0x00)。