車用 CAN bus 通訊架構&訊號監測方法
- 5天前
- 讀畢需時 7 分鐘
《 快速進入本文重點 - 使用 Saleae Logic Analyzer 監測 CAN bus 》
在現代汽車與工業自動化系統中,內部電子控制單元(ECU)數量動輒數十甚至上百個。從電動車的電池管理系統(BMS)、馬達控制器,到車窗升降與煞車控制,這些模組能順暢地彼此對話,全賴車載網路技術。
在眾多車載通訊協定中,CAN bus(Controller Area Network,控制器區域網路) 扮演著最核心的「數位神經骨幹」角色。本文將從車載網路拓撲切入,簡介 CAN bus 的工作原理、封包結構,及 CAN bus 的訊號監控方法。
一、 現代車載網路拓撲:為何汽車需要多種匯流排?
以汽車為例,一台車中涵蓋因應各種功能的不同車用模組,每個模組對資料傳輸的要求皆不同,在工程設計中,無法同時兼顧高速傳輸、穩定性與低成本。例如:
車窗、座椅:資料量小且非安全關鍵,需要極低成本的方案。
引擎、煞車控制:高度要求穩定性、即時速度快(優先傳輸)。
高畫質影音與自動駕駛感測器:需要極高的頻寬。
因此,車用網路採用分工合作的「網路中的網路(Network of Networks)」架構,主要通訊協定如下:
通訊協定 | 主要應用場景 | 最高傳輸速率 | 架構與物理層特性 | 存取控制方式 |
LIN | 車門、車窗、雨刷、座椅控制 | ~20 kbps | 單主控(Single Master)、單線傳輸 | 主控輪詢(Polling) |
引擎、變速箱、電池管理、車身主控 | 1 Mbps(CAN) / 8+ Mbps(CAN FD) | 多主控(Multi-Master)、雙線差動訊號 | 位元仲裁 (Bitwise Arbitration) | |
FlexRay | 線控轉向(Steer-by-Wire)、主動懸吊 | ~10 Mbps | 雙通道備援、雙線或光纖 | 時分多址(TDMA 時間觸發) |
Automotive Ethernet | ADAS 多鏡頭、影像傳輸、OTA 更新 | 100 Mbps ~ 1 Gbps+ | 全雙工傳輸、單對雙絞線 | 點對點封包交換 |
以上這些不同的網路會在車內的 Gateway 進行訊號匯集與翻譯,將資料轉發給需要的模組。

二、 CAN 核心工作原理剖析
CAN 協定屬於共享匯流排拓撲(Shared Bus Topology)。在匯流排上沒有節點位址,而是基於訊息內容進行廣播,每個節點均可發送與接收資料。
1. 雙絞差動訊號與抗干擾機制
CAN bus 物理層(Physical Layer)採用 CAN High(CAN_H) 與 CAN Low(CAN_L) 兩條雙絞線傳輸。當車輛行駛或工廠環境產生電磁干擾(EMI)時,干擾會同時影響 CAN_H 與 CAN_L,使其電壓同步上升或下降。接收端透過計算兩線的壓差,來還原邏輯訊號,並抵銷共同雜訊。
顯性電位(Dominant State, 邏輯 0):CAN_H 升至約 3.5V,CAN_L 降至約 1.5V,電壓差約 2V。
隱性電位(Recessive State, 邏輯 1):CAN_H 與 CAN_L 電壓均維持在約 2.5V,電壓差趨近 0V。
※ 在 CAN 邏輯中,顯性位元(0)永遠會覆蓋隱性位元(1)。
2. 位元仲裁(Bitwise Arbitration)
由於多個 ECU 可能同時想在匯流排上發言,CAN bus 採用了基於訊息 ID 的仲裁機制;此機制保證緊急訊號(如煞車警示)的優先權,不會因訊號碰撞而延遲。
每個 CAN 封包都帶有一個識別碼(ID),數值越小代表優先權越高,例如以下步驟:
當多個模組同時發送 ID 時,節點會一邊發送、一邊監聽匯流排的實際電位。
當 A 節點發送「1(隱性)」,卻讀取到匯流排被 B 節點拉成「0(顯性)」時,代表 B 有更高優先權的訊息正在傳輸 → B 的顯性位元 0 會覆蓋 A 的隱性位元 1 。
A 節點會立即停止發送,轉為接收模式,等待匯流排空閒後再重新嘗試。
當沒有節點進行傳輸時,匯流排處於空閒狀態(隱性狀態)。當節點在匯流排上聲明主導狀態時,傳輸開始。傳輸以「幀起始位元(SOF)」開始,隨後立即進入「識別碼(Identifier)」段進行仲裁。
3. 非同步傳輸與位元填充(Bit Stuffing)
由於 CAN 為非同步序列通訊,接收器需依賴電位轉換邊緣來進行重新同步(Re-synchronization)。為了避免連續相同位元導致時序漂移,CAN 採用位元填充(Bit Stuffing) 機制:當資料流中出現連續 5 個相同位元時,發送端會強制插入一個相反極性的位元,接收端在解碼時會自動丟棄此填充位元(下圖紫色)。

三、 CAN 封包結構與硬體架構
1. 數據幀(Data Frame)結構解析
一個標準的 CAN 數據幀(Layer 2 Data Link Layer)包含以下核心區段:
SOF(Start of Frame):1 位元的顯性電位,宣告封包開始。
Arbitration Field(仲裁段):包含 11 位元(Standard CAN)或 29 位元(Extended CAN)的識別碼 ID,決定訊息優先權。
DLC(Data Length Code):指示後續資料段包含多少 Bytes(最高支持 8 Bytes;CAN FD 則最高支援 64 Bytes)。
Data Field(資料段):實際傳輸的控制數據(CAN 為 0 至 8 Bytes;CAN FD 為 0 至 64 Bytes)。
CRC Field:循環冗餘校驗,接收端藉此驗證傳輸過程是否產生位元錯誤。
ACK Bit:接收端確認位元,若接收成功,接收端會在該時隙主動發送顯性電位拉低匯流排。
2. CAN 節點的硬體三層架構
一個完整的 CAN 模組包含三個組件:
微控制器: 執行應用程式,決定要傳送或接收的資料內容。
CAN 控制器 (CAN Controller): 負責協定層處理,包括封包組裝、仲裁、位元填充及錯誤偵測。
CAN 收發器 (CAN Transceiver): 將控制器的數位訊號轉換為匯流排的差動電壓,並反向接收。

四、使用 Saleae Logic Analyzer 監測 CAN bus
〈Saleae Logic Analyzer Pro〉邏輯分析儀具有 8 通道、16 通道兩種規格,並內建 500 MS/s 數位取樣率。適合用於進行 CAN bus 通訊內容分析、執行協定逆向工程或長期追蹤特定 ID 訊息。
1. 硬體準備與連接方式
根據裝置規格,Saleae Logic Pro 支援數位與類比訊號採樣,輸入電壓範圍可達 −10V 至 +10V,足以應對大多數 CAN 邏輯準位。可以用兩種方法進行連接:
方法 A:直接連接 CAN 控制器(邏輯側) 這是最推薦的方式。將邏輯分析儀的通道直接接在 CAN 控制器與 CAN 收發器之間 的 TX 或 RX 引腳上。此處的訊號為標準 TTL 準位(通常為 0V/5V 或 0V/3.3V),不需經過差動轉換即可精準解碼。
方法 B:連接 CAN 匯流排(Bus 側) 若無法接觸到電路板內部,需監測匯流排上的 CAN_H 與 CAN_L。由於邏輯分析儀主要處理邏輯電位,建議在分析儀前加裝一個 CAN 收發器模組,將匯流排的差動訊號轉換回邏輯訊號後再輸入分析儀。
※ 共同接地(GND): 須將邏輯分析儀的接地端與待測系統的 GND 連接,以確保電位基準一致。
2. Saleae Logic 2 軟體設定步驟
開啟軟體並選擇通道: 開啟 Saleae Logic 2 軟體,確認裝置已識別。
加入分析插件(Analyzer): 在右側面板選單點擊「+」,選擇 「CAN」,設定在通道 0 上擷取 CAN 訊號。

配置參數:
Input Channel: 選擇您連接 TX/RX 訊號的通道。
Bit Rate: 設定與受測平台一致的Bit Rate(如 500,000 )。
Inverted: 若連接的是收發器的 RX/TX 腳位,通常不需勾選反相。
開始採樣: 點擊 Start,軟體會自動將波形轉譯為十六進位(Hex)或十進位的封包格式。

3. 邏輯分析儀的優勢
封包層級檢視: 不同於示波器僅能看一段短時間的波形,Saleae 可以長時間紀錄並自動標註:識別碼(ID)、資料段(Data)、CRC 以及 ACK 狀態。
搜尋與過濾: 可直接搜尋特定的 ID(例如煞車訊號 ID:0x123),快速定位通訊異常發生的瞬間。
資料匯出: 可將監測到的所有通訊內容匯出為 CSV 檔,用於後續的數據分析或模擬測試。

邏輯分析儀 - 規格 | Saleae Logic Pro 8 | Saleae Logic Pro 16 |
輸入 | ||
多用途(A/0/Both) | 8 | 16 |
混合訊號輸入可錄製為數位、類比 、或兩者皆有。 | ||
輸入阻抗 | 2MΩ | 2MΩ |
輸入電容 | 10pF | 10pF |
輸入保護 | 土25V | 土25V |
數位訊號 | ||
取樣率(最大) | 500MS/s | 500MS/s |
所有資料即時透過 USB 傳輸,最大取樣率取決於使用的數位和類比通道數。 | ||
最快數位訊號 | 100MHz | 100MHz |
僅數位,所有資料即時透過 USB 傳輸,最大取樣率取決於使用的數位和類比通道數。 | ||
取樣深度(典型) | 10+Billion | 10+Billion |
支援邏輯電平 | 1.2V- 5.5V | 1.2V- 5.5V |
使用 RS-232、422/3、485 | 是,直接 | 是,直接 |
閾值電壓 | 可供選擇 0.6V/0.9V/1.65V | 可供選擇 0.6V/0.9V/1.65V |
類比訊號 | ||
取樣率(最大) | 50MS/s | 50MS/s |
所有資料即時透過 USB 傳輸,最大取樣率取決於使用的數位和類比通道數。 | ||
頻寬(-3dB) | 5MHz | 5MHz |
Pro 8 和 Pro 16 的最大頻寬取決於使用的通道數和類型;較低的頻寬以相同的速率取樣.但會進行降採樣(過濾/降低取樣率)。 | ||
位元數/ ADC的位元數。 | 12bit | 12bit |
輸入電壓範圍 | -10V to 10V | -10V to 10V |
在實際應用中.可用範圍略寬,每個 Logic 都經過 DC 校準 INL 和 DNL 經過測試。 | ||
Nyquist時的衰減 | -50dB 或更好 | -50dB 或更好 |
Nyquist 時的衰減是「抗混淆濾波器效果」的度量;在 Nyquist 頻率以上的訊號,會以何種程度顯示為 FFT 中的混淆訊號。 | ||
通道間串擾 | -50dB 或更好 | -50dB 或更好 |
通道間串擾,衡量「一個通道上的訊號,會影饗另一個通道的程度」的方法,通常根據被測通道的接地情況測得。 | ||
設備包含 | ||
Test Lead Set 測試引導套裝 | X2 | X4 |
引導套裝包含 8 條線.其中 4 條用於傳輸訊號.另外 4 條是地線;每條線都有特定的顏色編碼和編號;引導套裝的線材採用 22AWG 65/40規格.不容易扭曲;9英寸(23 cm)畏,端口可連接測試夾或 0.1 英寸 IDE 樣式標頭引腳。 | ||
翔宇科技代理 Saleae Logic Analyzer 系列產品,若您有 MDIO、I2C、I3C、SPI、UART、CAN、USB、SMBus、SWD 等序列匯流排分析需求,歡迎與翔宇科技聯絡,我們可協助您選擇合適的邏輯分析儀,並提供產品規劃、技術諮詢與應用支援,協助您更有效率完成嵌入式系統與乙太網路裝置的開發及除錯工作。

參考資料:






