瞭解CAN收發器及如何驗證多節點CAN系統的性能
瞭解CAN收發器及如何驗證多節點CAN系統的性能
作者:ADI 主任工程師Madhura Tapse
摘要
本文介紹評估控制區域網路(CAN)收發器的正確系統級測試方法。透過展示在多CAN節點系統中,執行不同CAN節點之間的數據傳輸時如何避免實際數據傳輸問題,解釋了此種測試方法的優越之處。閱讀本文後,讀者將對CAN系統有更好的瞭解,並能夠為特定的多節點CAN系統選擇合適的CAN收發器。
引言
CAN是一種穩健的通訊標準,用於支援不同的感測器、機器或控制器進行相互通訊。相較於一般介面,CAN介面更穩定可靠,能夠有效處理匯流排爭用,因此被廣泛應用於工業自動化、家庭自動化和汽車應用中。
舊版CAN2.0提供8位元組有效載荷,最多支援2 Mbps的數據速率。有些情況下,2 Mbps的數據速率不足以因應危急通訊事件,因此CAN.org提出了新的通訊協定CAN-FD,支援數據速率高達10 Mbps的通訊。
CAN-FD彈性的數據速率
舊版CAN和CAN-FD之間的主要區別在於彈性的數據速率(FD)。在CAN-FD中,數據速率(即每秒傳輸的位數)比經典CAN(10 Mbps僅用於數據有效載荷;為了相容,仲裁位元速率仍限制在1 Mbps)快5倍。CAN-FD中的消息有效載荷大小從舊版CAN的8位元組增加到64位元組。
使用CAN-FD時,感測器可以改變數據速率,並增加或減少有效載荷。相較於目前工廠中的舊版CAN,更快的數據速度和更大的有效載荷容量帶來了許多系統級操作優勢。
CAN通訊—基礎知識
CAN通訊包括兩個主要組件:(a) CAN控制器和(b) CAN收發器,如圖1所示。
CAN控制器處理CAN通訊的資料連結層,而CAN收發器則處理實體層。我們來簡要介紹一下CAN收發器的實體層。
在CAN協定中,邏輯0被稱為顯性位元,邏輯1被稱為隱性位。由於CAN是一種差分協議,CANH和CANL之間的電壓差決定了發射和接收訊號的邏輯位準。如果CANH-CANL電壓大於1.5 V,則CAN接收器將該位元識別為邏輯0。而如果CANH-CANL電壓小於200 mV,則CAN接收器將該位元識別為邏輯1。圖2所示為CAN收發器TXD接腳上數位邏輯1和邏輯0位元的連續傳輸,以及CANH和CANL接腳上的等效CAN匯流排位準。根據CANH和CANL電壓之間的差異,接收器在RXD接腳上回送訊號。
現在我們來看看CAN資料連結層,其制定了數據幀以便進行位元流的受控傳輸,而且有助於解決錯誤檢測和匯流排爭用問題。圖3所示為標準的CAN框架格式。
每個節點以幀起始符(SOF)開始數據幀,SOF是第一個顯性位。11位識別字是每個節點的唯一位址。IDE表示框架格式。該位元域中的邏輯0表示標準的CAN格式,而邏輯1表示擴展的CAN格式。r0是一個保留位。DLC欄位表示要傳輸的資料位元組數。在標準CAN2.0幀中,最多可以傳輸8個位元組。接收節點透過在匯流排上發送顯性位元來確認該數據幀。最後,幀結束符(EOF)是一個隱性位元,標誌著一個數據幀的結束。
大多數情況下,在選擇CAN收發器時,客戶透過函數產生器在CAN收發器的TXD接腳上發送位元流,以此來評估CAN收發器。儘管此種方法非常適合用於評估單節點CAN,但在開發多節點、遠距離CAN系統時似乎存在缺陷。因此,要為系統選擇合適的CAN收發器,必須採用新的CAN控制器和收發器測試方法。使用此種方法背後的原因是什麼?
仲裁方法
使用此種系統級測試方法的主要原因是CAN協議的仲裁特性。如果兩個節點試圖同時佔用匯流排,則使用非破壞性逐位仲裁進行存取。將第一個識別字位作為0(顯性)發送的節點將保留對CAN匯流排的控制, 並繼續完成其消息傳送,而其他節點發送的是1(隱性)。圖4所示為兩個節點之間的仲裁方案。
在此圖中,節點1和節點2通過CAN匯流排相互連接。因此,CANH和CANL訊號對於兩個節點是共用的。TXD1和RXD1是用於節點1的訊號,而TXD2和RXD2是用於節點2的訊號。可以看到節點1和節點2的前三位是相同的:分別為1、0、1。節點2的第四位是1,而節點1是0。由於節點1有一個顯性位,因此贏得了仲裁並繼續發送完整的消息。此消息由節點2確認。一旦節點1完成傳輸,節點2就開始發送消息。節點1確認此消息。
每個節點都有唯一的識別字ID。因此,這個11位元的識別字ID被用於仲裁過程。這些比特將由控制器讀回,以識別消息傳輸的優先順序。在CAN-FD中,仲裁位元速率可以與數據位元速率相同或不同。在CAN2.0中,仲裁位元速率和數據位元速率相同。
在舊版CAN2.0系統中,有時位元速率會較標準CAN2.0推薦的1 Mbps有所增加,以加快數據傳輸。在CAN-FD系統中,仲裁位元速率被限制為1 Mbps的資料速率,而數據位元速率可高達10 Mbps。在包括11位元識別字和SOF位元的仲裁階段,每個傳輸的位元都被讀回以進行同步。
CAN節點在CAN匯流排邊緣上同步,但匯流排上的訊號傳輸時間會在節點之間引入相位差。CAN的非破壞性仲裁機制要求任意兩個節點之間的相位差小於半個位元時間。該標準位元時間的下限定義了標稱位元速率以及匯流排長度的上限。因此,RXD的上升時間和下降時間、CAN收發器的迴路延遲以及電纜都需要考慮在內。在更高的位元速率下(例如10 Mbps),傳輸延遲和上升時間/下降時間需要小於50 ns。
因此,CAN-FD中的仲裁位元速率被限制為1 Mbps,允許更高的餘量用於同步多個可能的節點。然而,CAN-FD是一個新協議,尚未應用於所有CAN系統。在某些情況下,CAN-FD控制器不可用或者被認為是代價高昂的附加元件,因此客戶繼續使用標準CAN控制器。在這些系統中,由於涉及關鍵感測器資訊且節點之間的線纜長度可能更短,CAN節點需要以更高的位元速率(>2 Mbps)進行通訊。在此種情況下,收發器的上升時間/下降時間對稱性和傳輸延遲可能會對允許的資料通訊上限造成限制。
CAN收發器需要系統級測試
以CAN收發器MAX33012E為例,該收發器已經過20m線纜測試,速率最高可達13.3 Mbps。可以看到,在圖5中,TXD2位寬為75 ns(對應於13.3 Mbps),RXD2位寬為72 ns。當控制器以80%的TXD位寬進行採樣時,包括所需RXD的上升時間/下降時間和迴路延遲在內的最小RXD位寬為60 ns。在圖5中,可以看到接收到的位寬為72 ns。因此,MAX33012E滿足條件,並且足夠穩健,能夠在更高的位元速率下工作。在如此情況下,CAN控制器不會檢測到任何錯誤,並且會繼續執行資料通訊。
圖6所示為同樣在13.3 Mbps速度下進行測試的競品的範圍。對於該部分,傳輸位元寬為75 ns(對應於13.3 Mbps),並且接收位寬小於傳輸位寬(48 ns)的80%。因此,仲裁階段位元傳輸失敗,導致通訊錯誤,最終系統停止工作。
這些類型的數據傳輸錯誤只能透過執行完整的系統級測試來發現,其中包括多個CAN控制器、CAN收發器和一根長線纜。
結論
對CAN收發器進行系統級測試有助於揭示系統中未來可能出現的數據傳輸問題。可使用滿足所需時序和電壓規格的CAN控制器和線纜來評估CAN收發器,進而避免這些問題。CAN系統的穩健性取決於CAN系統中每個元件性能的累積結果。僅評估一個元件或CAN收發器並不能準確測量系統功能。對系統進行預先驗證比等到發生故障後才更換系統更加經濟高效。因此,我們強烈建議在選擇CAN控制器之前進行系統級測試。