車載網絡CAN(四):CAN控制器的分類和工作原理
摘要
該專題連載共分為“五”篇,這是第四篇。在上一篇文章中,我們詳細解釋了 CAN(控制器局域網)協議,但這次我們將重點關注物理層,并介紹 CAN 中的通信線路機制。
與之前的控制說明不同,本文將主要側重于硬件相關的主題,但如果您正確理解了這里的內容,那么在實際實施和測試 CAN 時肯定會有所幫助。
點擊閱讀:車載網絡CAN(一):CAN協議基礎知識
點擊閱讀:車載網絡CAN(二):CAN通信的數據傳輸機制
點擊閱讀:車載網絡CAN(三):“幀”的結構、用法和錯誤處理方法
連接到CAN總線
首先,我們來看看每個節點(CAN 控制器)是如何連接到 CAN 總線(通信線路)的。
下面是一個高速 CAN 連接到 CAN 總線的示例(圖 1)。

圖1、連接至CAN總線
·微控制器
處理發送和接收的數據,以及節點處理。
·CAN協議控制器:
實現CAN協議功能(位填充、通信仲裁、錯誤處理、CRC校驗等)。包含一個濾波器。
·生成和調節CAN 收發器
總線傳輸電壓,確保工作電流,并保護線路。
它用于抑制終端電阻器的反射電壓并調節母線電平。
如圖1所示,CAN控制器通過CAN收發器連接到CAN總線。物理層標準(例如高速CAN和低速CAN)的差異由CAN收發器吸收。這意味著CAN控制器不受任何物理層的影響,CAN協議機制可以通用。
CAN控制器分類
接下來,我們將介紹 CAN 控制器的分類,如下圖所示(圖 2)。

圖2、CAN 控制器分類
因安裝類型而異
有兩種模式:“微控制器外部(獨立式) ”和“微控制器內置”,但目前大多數都是內置于(安裝在)微控制器中的。
協議版本之間的差異
CAN協議有兩種標準: “標準格式(2.0A) ”和“擴展格式(2.0B) ”。這兩者之間的主要區別在于消息ID的長度。
信息管理至關重要
根據處理消息發送和接收的方法,CAN 可分為“基本 CAN ”和“完整 CAN ”。
因安裝類型而異
半導體制造商銷售各種產品,包括用于不具備CAN控制器功能的微控制器的獨立CAN控制器,以及內置CAN控制器功能的微控制器,使用戶能夠選擇最適合其需求的產品。由于目前市場上大多數汽車微控制器都內置了CAN控制器功能,因此采用CAN對成本等方面的影響不大。
協議版本之間的差異
接下來,我們來看一下 CAN 協議版本之間的差異(圖 3)。

圖3、不同協議版本之間的差異
所有協議版本均可發送和接收標準格式 (2.0A)。擴展格式 (2.0B) 無法使用協議版本 2.0A 發送或接收,接收時會發送錯誤幀。因此,如果將協議版本 2.0A 的節點混用在承載擴展格式的 CAN 總線上,即使是正常的通信也會因來自協議版本 2.0A 節點的錯誤幀而中斷。
協議版本 2.0B 被動模式與協議版本 2.0A 相同,都無法發送或接收擴展格式數據,但它在接收時會忽略擴展格式數據,并且不會發送錯誤幀。協議版本 2.0B 主動模式允許發送和接收擴展格式數據。
因此,在配置使用擴展格式的 CAN 網絡時,每個節點的 CAN 控制器必須僅配置為啟用協議版本 2.0B。如果同時處理擴展格式和標準格式,則不處理擴展格式的節點使用被動協議版本 2.0B,而處理擴展格式的節點使用主動協議版本 2.0B,就不會出現通信問題。
信息管理至關重要
接下來,讓我們用圖表來比較消息管理方面的差異。
基本 CAN 的發送和接收緩沖區比全 CAN 少,用于中低速通信(圖 4)。
另一方面,Full-CAN 比 Basic-CAN 具有更多的發送和接收緩沖區,用于高速通信(圖 5)。

圖4、基本型CAN

5、Full-CAN
高速CAN和低速CAN
高速 CAN
高速CAN總線通信速度最高可達1 Mbit/s,因此主要用于需要高速數據交換的動力總成系統。通信采用雙線制,電壓差決定顯性/隱性通道,使其不易受外部噪聲干擾(雙線差分電壓法)。CAN_H和CAN_L之間的電壓差設定為1.8 V,CAN收發器由兩個120 Ω終端電阻提供30 mA的電流驅動(圖6)。

圖6、低速CAN
CAN位定時-段類型
接下來,我們將解釋向 CAN 總線發送信號時必須考慮的要點。
首先,構成發送到 CAN 總線的信息的 1 位信號中的每個段都有其類型。段類型的結構如圖7所示。

圖7、線段類型
根據 ISO 11898 和 ISO 11519-2 標準,CAN 位時間被分為四個互不重疊的段:
“SYNC_SEG(同步段)”
執行位同步時,該段用作起始位置(CAN 控制器通過延長或縮短位時間來同步)。
“PROP_SEG(傳播時間段)”
該段補償由各種因素(輸出緩沖區、CAN 總線、輸入緩沖區)引起的延遲時間(傳播延遲)。
“PHASE_SEG1(相位緩沖段 1)”
“PHASE_SEG2(相位緩沖段 2)”
振蕩器振蕩誤差由下一次重新同步時序進行補償。如果使用誤差較大的振蕩器,則必須設置較大的相位緩沖段(在這種情況下,通信速度會降低)。
CAN 位時序 - 傳輸延遲時間
CAN 總線通過通信線路發送電信號進行通信。在這種情況下,由于各種因素,會產生處理延遲。例如,這些延遲包括“CAN 控制器中的處理時間”、“CAN 收發器中的信號轉換時間”以及“CAN 總線上的延遲時間”。由于 CAN 總線是雙向通信系統,因此必須考慮這些傳輸延遲。
使用“PROP_SEG(傳播時間段)”對該傳輸延遲進行補償,計算方法如圖8所示。

圖8、傳輸延遲時間
·CAN 控制器中的延遲時間:tCAN
·收發器接收延遲時間:tRX
·收發器傳輸延遲時間:tTX
·Bus延誤時間:tBus
·Bus長度:lBus
·信號傳輸速率:vBus
CAN位時序-用于通信仲裁和識別的時序控制
接下來,我們將解釋傳輸延遲時間如何影響通信。通過考慮確認(ACK)部分,這一點可以很容易地理解。
發送方發送一個確認時隙(實際上處于隱性狀態),接收方識別到該確認時隙,并發送一個確認時隙(假設接收正常且處于顯性狀態)。如果發送方能夠在確認時隙的采樣點識別到接收方發送的確認時隙,則可以進行正常的通信(圖9)。

圖9、通信仲裁和識別的時序控制
節點 (1)到節點 (2)的信號延遲是由以下因素造成的:
1. 輸出驅動器延遲時間 (tCAN + tTX);
2. 總線延遲時間 tBus;
3. 輸入驅動器(比較器等)延遲時間 (tCAN + tRX)。
如果節點(2)與節點(1)同步,并且兩個節點都在仲裁中,則節點(1)必須先從節點(2)接收信息,然后才能對總線進行采樣。
為確保正常運行,必須滿足以下條件:
![]()
為簡單起見,必須滿足 (tACAN + tATX) = (tBCAN + tBTX) 且 (tACAN + tARX) = (tBCAN + tBRX)。
CAN位定時-同步
我們已經解釋了數據段的類型和傳輸延遲時間,但它們的主要用途是時序控制(同步)。當發送節點發送數據時,如果該數據的起始位置落在接收節點的“SYNC_SEG(同步段)”內,則發送節點和接收節點可以被認為是同步的。然而,在某些情況下,由于某些原因,發送節點和接收節點可能會失去同步。
當發送節點發送數據時,如果接收節點的“SYNC_SEG(同步段)”比該數據的起始時間快,則接收節點的“TSEG_1”將增加 CAN 控制器中設置的“SJW”,以便從下次開始啟用同步。
如果發送節點發送數據,并且該數據的開始時間晚于接收節點的“SYNC_SEG”,則接收節點將從發送節點數據的開頭開始發送下一個比特(導致前一個比特的長度變短),從而實現同步。
該時序控制按圖所示執行。

圖10、同步
圖 10 中總線上三個節點的行為如下:
·節點(1)完全同步,其邊位于“tSYNC”槽內。
·節點 (2) 的觸發時間過早。當隱性基因轉顯性基因的事件發生時,“tTSEG_1”的第二個周期處于激活狀態。為了糾正這種錯誤的同步,需要將“tTSEG_1”延長兩個周期。圖 10顯示,下一個事件按預期落在了“tSYNC”周期內。
·節點 (3)為時已晚。當隱性基因向顯性基因轉變時,“tTSEG_2”的最后一個循環仍然處于激活狀態。由于“tTSEG_2”的縮短,該片段被設置為“tSYNC”。
規則
·僅使用隱性到顯性邊緣進行重新同步。
·采樣點之前的邊緣導致“tTSEG_1”的擴展。
·采樣點之后的邊緣導致“tTSEG_2”縮短。
·延長或縮短位時間的最大周期必須等于或小于 CAN 控制器設定的重新同步跳變寬度 (SJW)。
通信速度和距離
通信速度和通信距離如圖 11所示。

圖11、通信速度和通信距離
雖然通信距離會因延遲時間略有不同,但通常來說,通信速度越慢,通信距離越長。隨著通信速度的降低,單個比特的長度也會增加,因此在考慮確認時隙部分時,需要預留更多時間用于確認時隙和確認信息的發送和接收,從而可以延長通信距離。采用CAN總線時,應根據應用場景和通信距離選擇合適的通信速度。
與之前的文章不同,這次我們不僅講解了控制機制,還講解了實際的通信線路機制(物理層)。至此,我們對CAN總線的概述以及CAN協議的內容就介紹完畢了。然而,僅憑這些概述,很難掌握具體的應用方法,例如在實際應用中“如何使用它?”。
下一篇文章,我們將講解一些在實踐中真正有用的“實用內容”。更多內容,關注牛喀網,學習更多汽車科技。有興趣的朋友,可以添加牛小喀微信:NewCarRen,加入專家社群參與討論。

(添加微信號NewCarRen咨詢)
