top of page

車用 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, LIN ... 等等


二、 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),數值越小代表優先權越高,例如以下步驟:


  1. 當多個模組同時發送 ID 時,節點會一邊發送、一邊監聽匯流排的實際電位。

  2. 當 A 節點發送「1(隱性)」,卻讀取到匯流排被 B 節點拉成「0(顯性)」時,代表 B 有更高優先權的訊息正在傳輸 → B 的顯性位元 0 會覆蓋 A 的隱性位元 1

  3. A 節點會立即停止發送,轉為接收模式,等待匯流排空閒後再重新嘗試。


當沒有節點進行傳輸時,匯流排處於空閒狀態(隱性狀態)。當節點在匯流排上聲明主導狀態時,傳輸開始。傳輸以「幀起始位元(SOF)」開始,隨後立即進入「識別碼(Identifier)」段進行仲裁。



3. 非同步傳輸與位元填充(Bit Stuffing)


由於 CAN 為非同步序列通訊,接收器需依賴電位轉換邊緣來進行重新同步(Re-synchronization)。為了避免連續相同位元導致時序漂移,CAN 採用位元填充(Bit Stuffing) 機制:當資料流中出現連續 5 個相同位元時,發送端會強制插入一個相反極性的位元,接收端在解碼時會自動丟棄此填充位元(下圖紫色)。


CAN 訊號的位元填充 - 之前(上)、之後(下 / 紫色)
▲ CAN 訊號的位元填充 - 之前(上)、之後(下 / 紫色)


三、 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): 將控制器的數位訊號轉換為匯流排的差動電壓,並反向接收。

    CAN 節點的硬體三層架構


四、使用 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 訊號。


Saleae Logic 2 軟體設定步驟

配置參數:

  • Input Channel: 選擇您連接 TX/RX 訊號的通道。

  • Bit Rate: 設定與受測平台一致的Bit Rate(如 500,000 )。

  • Inverted: 若連接的是收發器的 RX/TX 腳位,通常不需勾選反相。

  • 開始採樣: 點擊 Start,軟體會自動將波形轉譯為十六進位(Hex)或十進位的封包格式。


CAN bus 在 logic analyzer 上的配置參數


3. 邏輯分析儀的優勢


  • 封包層級檢視: 不同於示波器僅能看一段短時間的波形,Saleae 可以長時間紀錄並自動標註:識別碼(ID)、資料段(Data)、CRC 以及 ACK 狀態。

  • 搜尋與過濾: 可直接搜尋特定的 ID(例如煞車訊號 ID:0x123),快速定位通訊異常發生的瞬間。

  • 資料匯出: 可將監測到的所有通訊內容匯出為 CSV 檔,用於後續的數據分析或模擬測試。

Saleae Logic Pro - 邏輯分析儀 8/16 通道
Saleae Logic Pro - 邏輯分析儀 8/16 通道

邏輯分析儀 - 規格

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 等序列匯流排分析需求,歡迎與翔宇科技聯絡,我們可協助您選擇合適的邏輯分析儀,並提供產品規劃、技術諮詢與應用支援,協助您更有效率完成嵌入式系統與乙太網路裝置的開發及除錯工作。

 MDIO、I²C、SPI、UART、CAN、USB、SMBus、SWD  Logic Analyzer


參考資料:



Eagletek 翔宇科技獨家代理 Saleae 邏輯分析儀






歡迎 訂閱翔宇科技主題式電子報 >,您將可同步掌握最新的產業新訊以及技術文章。
bottom of page