透過系統級測試,避免 CAN 收發器資料傳輸問題
資料提供者:DigiKey 北美編輯群
2023-10-11
控制器區域網路 (CAN) 是一種經過驗證且可靠的通訊標準,用於工業自動化和汽車等領域。此技術有兩個版本:CAN2.0 和較新的版本 CAN-Flexible Data (FD)。傳統 CAN2.0 系統可以透過增加 CAN-FD 節點強化功能,以達到更高的酬載傳輸量,支援關鍵通訊事件。
一般而言,這些技術相容,但隨著系統的複雜性提高及匯流排長度增加,在混合系統中,CAN-FD 的較高速度可能會造成同步的問題,導致傳輸失敗。
對於簡單的系統而言,使用以單一短匯流排連接兩個控制器/收發器對的 CAN 系統測試即可。不過,此測試通常無法偵測到結合 CAN2.0 和 CAN-FD 組件、較複雜的多節點系統中可能出現的問題。使用相似的生產系統,針對所有潛在使用情境進行專門測試,可以偵測到現場可能發生的所有問題。
本文簡要介紹 CAN2.0 和 CAN-FD,並解釋其傳輸挑戰。然後說明一些測試技術,如何確保使用這些網路的系統有最少現場故障。本文將以 Analog Devices 具有故障偵測和報告功能的元件為例,並展示此類元件如何加速已部署系統的測試階段和故障排除,也特別說明相關評估板。
什麼是 CAN2.0 和 CAN-FD?
CAN 是內建故障處理能力的分散式通訊標準。實體層 (PHY) 和資料鏈路層 (DLL) 以 ISO-118981 標準定義。
CAN 的特點包括:
- 允許在單一匯流排上發出多個主動訊息
- 訊息固有優先等級
- 依訊息優先等級進行匯流排仲裁
- 多重級別的錯誤偵測和復原
- 使用獨立時脈來源,跨節點進行同步資料計時
CAN 使用差動電壓資料傳輸機制,具有兩種匯流排電壓狀態:「隱性 (recessive)」(驅動器輸出為高阻抗) 和「顯性 (dominant)」,閾值如表 1 所示。
|
表 1:與 RS-485 相比的 CAN 隱性和顯性電壓位準。請注意,顯性 (較高) 電壓對應於邏輯「0」。(圖片來源:Analog Devices)
節點邏輯「0」傳輸顯性狀態 (在此狀態下,一條匯流排 (CANH) 為高位,另一條 (CANL) 為低位) 和邏輯「1」傳輸隱性狀態。在標準訊框或錯誤訊框結束後,偵測到多個隱性位元,可區分出隱性位元傳輸模式的閒置 CAN 匯流排 (圖 1)。
圖 1:CAN 傳輸機制。閒置模式有多個隱性位元。(圖片來源:Analog Devices)
CAN 收發器提供 DLL、CAN 控制器 (通常嵌入到另一個元件,例如微控制器內) 以及 CAN 匯流排實體接線之間的差動 PHY 介面。圖 2 顯示實作 CAN 應用所需的各種要素,以及它們與開放系統互連 (OSI) 層的關係及其特點。
圖 2:CAN 收發器構成 CAN 控制器與 CAN 匯流排之間的差動 PHY 介面。(圖片來源:Analog Devices)
CAN2.0 於 1991 年推出,標稱傳輸量為 500 Kbits/s。此資料傳輸率有時不足以滿足關鍵通訊事件的需求,因此於 2012 年推出 CAN-FD。CAN-FD 在正常操作條件下提供高達 2 Mbits/s 的標稱傳輸量,在診斷或編程時提供高達 5 Mbits/s 的標稱傳輸量。請注意,更高速的通訊僅適用於訊息酬載;訊息之外的其他元素,例如 11 位元識別碼、循環冗餘檢查 (CRC) 和確認 (ACK),會以 500 Kbits/s 的 CAN2.0 速率傳送。
CAN2.0 和 CAN-FD 的另一項區別在於標準資料訊框酬載,從 CAN2.0 的 8 B 增加到 CAN-FD 的 64 B。酬載的增加可提高開銷/資料比,讓 CAN-FD 通訊效率更高。此外,由於 CAN2.0 具有 8 B 酬載限制,原先必須拆開的訊息,現在可以使用 CAN-FD 合併為同一則。也由於資料速率更高且酬載增加,因此可以透過 CAN-FD 訊息加密,增強安全性。
CAN-FD 控制器同時支援 CAN2.0 和 CAN-FD 協定,因此常在同一網路中混合使用 CAN2.0 和 CAN-FD 節點。混合節點能讓傳統網路較長時間轉移到更快的協定,因此廣受歡迎。混合系統的缺點之一是會有額外的成本和複雜性,因為收發器必須要能支援 CAN2.0 節點上的 CAN-FD 濾波方式,以確保在 CAN-FD 通訊期間不會建立錯誤訊框。
CAN 的仲裁與錯誤機制
任何連接的 CAN 節點都可以將資料傳輸到匯流排上。為了避免通訊衝突,節點將對匯流排的使用進行仲裁,以便訊息根據其優先權依序傳輸。CAN 採用非破壞性、透明的仲裁;仲裁成功後的節點將繼續傳輸其較高優先權的訊息,不會受到任何其他節點干擾或破壞。顯性位元的傳輸會覆寫隱性匯流排狀態,促使完成仲裁。
標準資料訊框包括訊息識別碼和幾個旗標位元,此資訊被稱為「仲裁區」,不僅規定仲裁,也規定了訊息優先權。較低識別碼 (開頭較多「0」) 的訊息具有較高優先權 (圖 3)。
圖 3:CAN 標準資料訊框包括訊息識別碼以及 RTR 和 IDE 旗標位元。此仲裁區規定仲裁和訊息優先權。(圖片來源:Analog Devices)
即使有仲裁機制,也有可能出錯。為了解決問題,CAN 協定提供錯誤檢查和處理的機制。這些機制包括:
- 傳輸位元驗證
- CRC 檢查
- 固定格式位元區檢查
- 強制訊息 ACK
使用以下機制處理的錯誤包括:
- 錯誤訊框
- 錯誤計數器
- 節點錯誤狀態
任何 CAN 控制器都可以偵測錯誤,並且透過觸發錯誤訊框和錯誤節點計數器回應。錯誤訊框使用六個連續顯性或隱性位元進行區分。這樣的序列與正常傳輸規則不一致,使其可以由其他節點偵測到。傳送錯誤訊框的節點隨後傳送隱性位元,直到偵測到匯流排處於隱性狀態。進一步傳輸七個隱性位元後,節點可以嘗試傳輸正常 CAN 訊框 (圖 4)。
圖 4:在這個錯誤傳輸範例中 (由於額外位元 [1] 導致 CRC 位元錯誤),最右側顯示六個連續位元錯誤訊框。(圖片來源:Analog Devices)
每個 CAN 節點除了錯誤訊框傳輸之外,還可傳送和接收錯誤計數器。發生錯誤會讓計數器加一,而成功傳送或接收訊息則讓計數器減一。根據錯誤計數器,一個節點可能處於「主動反應錯誤」、「被動反應錯誤」、「匯流排離線」狀態。在「主動反應錯誤」狀態下,節點可以在匯流排上進行通訊,並在偵測到錯誤時傳送主動錯誤旗標。當計數器超過 127 時,將出現「被動反應錯誤」狀態,此時,節點只能傳送被動錯誤旗標。一旦計數器低於 127,節點將再次變為「主動反應錯誤」狀態。如果計數器超過 256,則節點進入「匯流排離線」狀態,且無法在匯流排上通訊。節點計數器在接收到 11 個連續隱性位元的 128 個序列後,可以重置為 0。
全面測試的重要性
CAN 的仲裁和錯誤機制有助於在發生故障時讓系統保持現場運作。然而,透過設計系統,減少傳送和接收故障,可以讓操作效率更高。測試多種操作情境下所提議的系統,可在部署前識別和修復弱點。
一種常見的技術是透過使用函數產生器,將典型的操作標準資料訊框傳輸到收發器的 TxD 引腳,並檢查是否發生任何錯誤,以便測試所選的 CAN 收發器。這是對單一節點的合理測試,但卻不能良好地代表具有長匯流排的多節點系統在現場的運作情況。例如,複雜的系統可能出現的問題包括高頻操作期間電路殘段產生的反射和其他偽影,會在位元之間引入相移。
CAN 的仲裁機制僅在位元同步時才能運作。如果位元到位元的相移超過單一位元傳輸時間的二分之一,則同步失敗,且不可能進行仲裁。
在以 500 Kbits/s 至 1 Mbit/s 運作的 CAN2.0 傳統系統中,單一位元傳輸時間夠長,導致相移很少成為問題。然而,由於 CAN-FD 的傳輸速度較快,位元傳輸時間縮短,相移很容易變得明顯。
為了緩解此類挑戰,若要驗證設計,需要從簡單地測試單一節點轉向複製完整的終端系統,並在各種操作條件下進行測試。雖然這比基本測試更耗時、更昂貴,但也比處理現場故障和不滿的客戶具有較低成本。
實際範例
若要瞭解相移測試在實務上的工作原理,請參考表列供應商提供以 CAN 收發器和 CAN 控制器設計的系統。此節點連接到 20 m 匯流排,該匯流排也支援許多其他節點,包括 CAN2.0 和 CAN-FD 組件。用於測試,此節點的傳輸速度為 13.3 Mbits/s,相當於 75 ns 的位元寬度。用於同步和仲裁,控制器以 TxD 位元寬度的 80% 進行取樣,因此需要 0.8 x 75 = 60 ns 的最小 RxD 位元寬度,包括上升時間、下降時間和迴路延遲。測試組件產生 48 ns 的 TxD 位元寬度,導致系統故障。
Analog Devices 在替代 CAN 收發器 MAX33012EASA+ 上執行相同的測試。此測試在 75 ns 時測量 TxD 位元寬度,在 72 ns 時測量 RxD 位元寬度。72 ns 位元寬度超出 60 ns 的 80% 採樣時間要求,因此,此系統的同步和仲裁運作令人滿意。13.3 Mbits/s 的傳輸量比系統在目標應用中的傳輸量要快,這表示其能力夠強,可以在所有預期的操作條件下運作 (圖 5)。
圖 5:在 20 m 匯流排上以 13.3 Mbits/s (75 ns TxD 位元寬度) 執行 MAX33012EASA+ CAN 收發器的測試結果。RxD 位元寬度為 72 ns,足以確保滿足控制器的 80% 取樣時間 (60 ns) 並達到同步。(圖片來源:Analog Devices)
內建故障排除
使用涵蓋故障偵測和報告功能的組件,可以讓測試週期更容易且成本更低。MAX33012EASA+ CAN 收發器等元件不僅可以快速顯現原型和預生產 CAN 電路的問題,而且也非常適合用於在即時控制系統部署中,重視快速故障排除的應用。
MAX33012EASA+ 是 +5 V CAN 收發器,可解決過電流、過壓、傳輸故障等常見問題。具有高達 ±65 V 的故障保護,因此適合需要過壓保護的應用。±25 V 的共模電壓範圍可在有雜訊的環境 (例如重型機械環境) 中進行通訊。CANH 和 CANL 輸出具有短路電流限制,並透過熱關斷電路,將驅動器輸出置於高阻抗狀態,防止功耗過高。
MAX33012EASA+ 的工作速率高達5 Mbits/s,並可選擇將迴轉率降低至 8 V/μs,以便將電磁干擾 (EMI) 降至最低,並允許使用非屏蔽雙絞線或平行纜線 (圖 6)。
圖 6:在多模系統中的 MAX33012EASA+ 應用電路。在此範例中,微控制器包括一個嵌入式 CAN 控制器。(圖片來源:Analog Devices)
CAN 收發器的故障偵測在通電時透過 TxD 傳輸 100 個由低到高的轉換 (通常是一、兩個標準資料訊框,取決於使用的協定) 來啟用。啟用故障偵測後,如果偵測到故障,則需要 TxD 上另外 16 個低到高的轉換來傳輸故障碼。最後,還需要 10 個脈衝才能清除故障。
連續 10 個週期 RxD 上的訊號與 TxD 不匹配時,將觸發「傳輸故障偵測」。例如,缺少兩個終端電阻時,或 CANH 與接地之間或 CANL 與 VDD 之間短路時,就會發生這種情況,導致差動訊號不符合規格。
Analog Devices 提供 CANbus 介面 Arduino 平台 MAX33012E 評估板,可展示 MAX33012E 的功能。雖然該裝置具有 Arduino 擴充板的外形尺寸,但可用作獨立的評估板。
結論
要確保多模 CAN2.0 和 CAN-FD 混合系統能在現場可靠運作,必須全面測試整體設計。然而,在偵測故障時,簡單的單節點測試是不足的;這些故障隨後可能會因同步問題而導致現場故障,進而破壞技術的仲裁機制。透過選擇內建故障偵測和報告功能的 CAN 收發器,簡化混合多節點 CAN 系統的初始測試和後續現場故障排除。
聲明:各作者及/或論壇參與者於本網站所發表之意見、理念和觀點,概不反映 DigiKey 的意見、理念和觀點,亦非 DigiKey 的正式原則。



