1 前言
CAN 是 Controller Area Network 的縮寫,它是一種 ISO 國際標準化的串行通信協議。在汽車產業中,由於對安全性、舒適性、方便性、低公害、低成本的要求,各種各樣的電子控制系統被開發了出來。由於這些系統之間通信所用的數據類型及對可靠性的要求不盡相同,由多條總線構成的情況很多,線束的數量也隨之增加。為適應“減少線束的數量”、“通過多個LAN,進行大量數據的高速通信”的需要,1986 年德國電氣商博世公司開發出面向汽車的 CAN 通信協議。此後,CAN 通過 ISO11898 及 ISO11519 進行了標準化,在歐洲已是汽車網絡的標準協議。
高速 CAN 收發器是汽車和其他系統中使用的關鍵元件,主要用於 CAN 協議控制器和物理總線接口之間的連接。NXP 的各種收發器是目前世界上使用最廣泛的設備之一。
本文的 E3110 開發板就使用了 CAN_TJA1044GT/3 晶片,本文旨在通過 E3110 開發板所需的 CAN 外設做一個簡單的介紹。
2 CAN 概述
CAN 是控制器局域網,它是一種串行異步數據通信協議。最初出現在 80 年代末的汽車工業中,由德國 Bosch 公司最先提出。
CAN 總線可以多主方式工作,網絡上任意一個節點均可以在任意時刻主動地向網絡上的其他節點發送信息,而不分主從,通信方式靈活。其具有非破壞性位仲裁總線機制,當兩個節點同時向網絡上傳送信息時,優先級低的節點主動停止數據發送,而優先級高的節點可不受影響地繼續傳輸數據。
此外,CAN 總線的數據傳送方式可以點對點、一點對多點(成組)及全局廣播幾種傳送方式接收數據。其通信速率最高可達 1MB/s,節點數實際可達 110 個,採用短幀結構,每一幀的有效字節數為 8byte,並具有錯誤檢測功能。
在實際使用中,比如在汽車中,CAN 總線可以用於傳輸各種傳感器數據和控制信號,實現汽車電子控制系統之間的通信。
2.1 CAN 工作原理
CAN(Controller Area Network)是一種控制器局域網,被廣泛應用於汽車、工業自動化、醫療設備等領域。CAN 總線是一種串行通信網絡,可以實現分布式控制和信息傳輸。以下是一些關於 CAN 總線工作原理的介紹:
1)通信協議:CAN 總線採用通信協議,其物理層和數據鏈路層由國際標準化組織 ISO 制定,應用層由各個廠商或組織自行制定。
2)報文傳輸:CAN 總線上的每個節點都可以發送和接收報文。報文以幀的形式傳輸,每幀由標識符、數據欄位和幀檢查序列組成。標識符用於指示報文的優先級,數據欄位包含實際傳輸的數據,幀檢查序列用於保證報文的完整性。
3)總線仲裁:當多個節點同時發送報文時,CAN 總線使用標識符的逐位仲裁機制來解決碰撞。在仲裁期間,每個節點都對發送位的電平與被監控的總線電平進行比較。如果電平相同,則這個節點可以繼續發送,如果發送的是“隱性”電平而監視到的是“顯性”電平,那麼這個節點就失去了仲裁,必須退出發送狀態。
4)錯誤檢測和恢復:CAN 總線具有強大的錯誤檢測和恢復機制。當檢測到錯誤時,錯誤計數器將會對錯誤進行計數並報告給相關的節點。如果錯誤計數器達到了一定的值,節點將會被隔離並停止發送報文。同時,其他節點會嘗試重新建立連接,以保證總線的正常運行。
5)網絡拓撲結構:CAN 總線可以使用多種網絡拓撲結構,如星型、樹型、環型等。其中,星型結構是最常用的結構,它使用一個主節點作為中心節點,其他節點作為從節點。主節點負責管理和調度總線的通信,從節點則負責接收和發送報文。
總之,CAN 總線以其高可靠性、實時性、靈活性和可擴展性等特點,被廣泛應用於各種領域。
2.2 CAN 通信機制
電信號的傳輸在物理層面都是靠電壓高低區分來實現的,CAN 通信也不例外。CAN 總線使用雙絞線進行差分電壓傳輸,兩條信號線被稱為 CAN 高(CAN_H) 和 CAN 低 (CAN_L)。
兩條線靜態時均為 2.5V 左右,此時狀態表示為邏輯 1,也被稱作隱性。當兩條線電壓值出現差異時,通常 CAN_H=3.5V 和 CAN_L=1.5V,此時狀態表示為邏輯 0,也稱作顯性。即:
差分電壓 CAN_diff = 0V,表示邏輯“1”,為隱性;
差分電壓 CAN_diff = 2V,表示邏輯“0”,為顯性;
註:實際開發中兩條線的電壓都會在標準值上下附近波動,這也是用差分傳輸的好處,減少誤差和噪聲帶來的干擾。
2.3 CAN 幀格式
CAN 總線定義四種幀類型,分別為數據幀、遠程幀、錯誤幀和過載幀。
1)數據幀就是總線上傳輸用戶數據的幀,其最高有效載荷是 8 Byte,結構上由 7 個段組成,其中根據仲裁段 ID 碼長度的不同,分為標準幀(CAN2.0A)和擴展幀(CAN2.0B)。
圖2-1 數據幀結構圖
2)遠程幀是用來向總線上其它節點請求數據的幀,它的幀結構與數據幀相似,只不過遠程幀結構上無數據段,由6個段組成。
圖2-2 遠程幀結構圖
3)錯誤幀是表示通信出錯的幀。錯誤針分為主動錯誤和被動錯誤。
主動錯誤幀由 6 個連續的顯性位和 6 個連續的隱性位組成,其中顯性位標誌為錯誤標誌,隱性位標誌為錯誤界定符。當節點檢測到錯誤時,會發送主動錯誤幀。
被動錯誤幀由 6 個連續的隱性位和 8 個連續的隱性位組成,其中隱性位標誌為錯誤標誌和錯誤界定符。當其他節點接收到主動錯誤幀後,會發送被動錯誤幀。
圖2-3 錯誤幀結構圖
4)過載幀是用於接收單元通知其尚未完成接收準備的幀。過載幀由過載標誌和過載界定符構成。
(1)過載標誌 6 個位的顯性位,過載標誌的構成與主動錯誤標誌的構成相同。
(2)過載界定符 8 個位的隱性位,過載界定符的構成與錯誤界定符的構成相同。
6個連續顯性電平位 8個連續隱性電平位
圖2-4 過載幀結構圖
2.4 CAN 數據位時序與同步
CAN 通過一種稱為“非歸零(Non-Return-to-Zero)”的編碼方式來實現數據位時序和同步。具體實現方式如下:
非歸零編碼:CAN 使用非歸零編碼來表示數據位。在 CAN 總線上傳輸的信號中,每一個位(0 或 1)都被編碼成兩個相對相反的電平,分別是“高”和“低”。這種編碼方式使得信號的平均值始終保持為 0,從而提高了抗干擾能力。
位時間:CAN 總線通信的時間被分成了許多等長的時間段,每個時間段稱為“位時間(Bit Time)”。每一個位都占用一個或多個位時間。
同步位:CAN 幀的開始由一個特定的同步位標誌,稱為“幀起始位(Start of Frame, SOF)”,表示一個幀的開始。這個同步位的作用是用來同步接收方的時鐘。
相位段:每個位時間被分成了三個部分:傳輸時段(TSEG1)、同步跳轉時段(TSEG2)和位同步時段(TSEG3)。相位段的長度可以根據通信速率進行調整,以適應不同的環境和設備。
TSEG1:用於確定位的傳輸時間。
TSEG2:用於在 TSEG1 的中間位置提供同步跳轉。
TSEG3:用於在 TSEG2 結束時繼續保持總線穩定。
通過這種方式,CAN 總線可以確保發送方和接收方之間的時鐘同步,以保證數據的可靠傳輸。同時,非歸零編碼也使得 CAN 總線對噪聲和干擾有很強的抵抗能力。這些技術共同確保了 CAN 總線的高效穩定通信。
3 E3110 開發板的 CAN 方案設計
TJA1044GT/3 提供了針對 12 V 汽車應用優化的特性,相比 NXP 的第一代和第二代 CAN 收發器(如 TJA1040 和 TJA1042)有顯著改進,並具有出色的電磁兼容性 (EMC) 性能。所以在 E3110 開發板的設計上,我選擇使用了 NXP 公司的 CAN_TJA1044GT/3 這顆晶片。
3.1 CAN_TJA1044GT/3 簡介及特性
TJA1044GT/3 是高速 CAN 收發器的一部分。它提供了控制器局域網 (CAN) 協議控制器與物理兩線 CAN 總線之間的接口。收發器為汽車行業的高速 CAN 應用而設計,為帶有 CAN 協議控制器的微控制器提供差分發送和接收功能。此外,TJA1044GT/3 還具有以下特性:
1)當電源電壓斷開時,對 CAN 總線的理想無源行為;
2)具有非常低的待機模式電流和總線喚醒能力;
3)在高達 500kbit/s 的速度下具有出色的 EMC 性能,甚至無需共模扼流圈;
4)TJA1044GT/3GT/3 和 TJA1044GT/3GTK/3 可直接接口到採用 3V 至 5V 電源電壓的微控制器;
這些特性使成為所有類型的高速 CAN 網絡的優秀選擇,在需要低功耗模式及具備喚醒能力通過 CAN 總線的節點上,尤為適合。

圖3-1 CAN_TJA1044GT/3 5V 系統應用框圖
3.2 CAN_TJA1044GT/3 工作模式
TJA1044 支持兩種操作模式,正常和待機。操作模式為通過引腳 STB 選擇。正常情況下的操作模式見下表:
模式 |
輸入 |
輸出 |
||
STB引腳 |
TXD引腳 |
CAN驅動器 |
RXD引腳 |
|
正常模式 |
低電平 |
低電平 |
顯性 |
低電平 |
高電平 |
隱性 |
CAN總線顯性時為低電平 |
||
CAN總線隱性時為高電平 |
||||
待機模式 |
高電平 |
X[忽略] |
對地偏置 |
當檢測到喚醒時跟隨CAN總線 |
沒有喚醒時為高電平 |
圖3-2 TJA1044 正常情況下的操作模式
- 正常模式:
引腳 STB 上出現低電平選擇正常模式。在此模式下,收發器可以通過總線線路 CANH 和 CANL 傳輸和接收數據(參見圖 1 的框圖)。差分接收器將總線線路上的模擬數據轉換成數字數據,並從引腳 RXD 上輸出。總線線路上的輸出信號的斜率由內部進行控制,並經優化以確保實現最低的電磁輻射(EME)。
- 待機模式:
引腳 STB 上出現高電平選擇待機模式。在待機模式下,收發器無法通過總線線路傳輸或正確接收數據。發射機和正常模式接收器塊被關閉以降低電流消耗,只有低功耗差分接收器對總線線路進行活動監測。
在待機模式下,總線線路被偏置為接地狀態,以最小化系統供電電流。低功耗接收器由 VIO(非 VIO 變種中的 VCC)供電,即使 VIO 是唯一可用的電源電壓,也可以檢測到 CAN 總線活動。在檢測到喚醒請求後,引腳 RXD 會跟蹤總線。當 STB 被強制置為低電平時,將觸發轉換到正常模式。
- 遠程喚醒(通過 CAN 總線)
當在總線上檢測到專用的喚醒模式(在 ISO11898-2:2016 中指定)時,TJA1044 從待機模式喚醒。這種過濾機制有助於避免產生錯誤的喚醒事件。錯誤的喚醒序列可由諸如帶有時鐘夾斷的主動總線或者因總線上的噪聲或干擾產生的主動相位而觸發。
圖3-3 Wake-up timing
3.3 CAN_TJA1044GT/3 管腳解析
E3110 開發板的 CAN_TJA1044GT/3 選用的是 SO8 的一個封裝,晶片共有 8 個管腳及相對應的管腳功能。
圖3-4 CAN_TJA1044GT/3 封裝圖
引腳號 |
引腳名稱 |
功能說明 |
1 |
TXD |
傳輸數據輸入,從MCU輸入給CAN總線 |
2 |
GND |
接地引腳 |
3 |
VCC |
電源供電引腳 |
4 |
RXD |
傳輸數據輸出,從CAN總線輸出給MCU |
5 |
VIO |
TJA1044GT/3、TJA1044GTK/3型號該引腳才會連接,為IO口提供電壓 |
6 |
CANL |
低電平CAN總線 |
7 |
CANH |
高電平CAN總線 |
8 |
STB |
待機模式(Standby)控制輸入 |
表3-5 CAN_TJA1044GT/3 管腳解析
3.4 E3110 開發板的 CAN 原理圖
基於 E3110 開發板的 CAN 設計原理圖,根據 TJA1044GT/3 的工作原理和各管腳定義,繪製了如下原理圖,VCC_5V 都是從 SBC FS5600 的 BUCK 電壓給到 CAN 進行供電,TXD/RXD 上拉 VCC_3V3 並同時鏈接到 E3110 晶片的 GPIO 復用接口。
圖3-6 CAN_TJA1044GT/3 原理圖
如對此有更多需求,敬請聯繫世平集團 ATU 部門,atu.cn@wpi-group.com。
4 參考文獻
[1] 杜尚豐,曹曉鍾,徐津.CAN 總線測控技術及其應用[M].電子工業出版社,2007.
[2] 董珂,李克強,馮能蓮等. CAN 總線技術及其在混合動力電動車上的應用[J].清華大學學報(自然科學版),2003 (8) :100-102.
[3]《汽車 CAN 總線系統原理、設計與應用》 羅峰 孫澤昌 著.
[4] 參考【TJA1044GT/3 Product data sheet】.
歡迎在博文下方留言評論,我們會及時回復您的問題。如有更多需求,歡迎聯繫大聯大世平集團 ATU 部門:atu.sh@wpi-group.com
作者:Sandy Yang / 楊羽潔
更多資訊,請掃碼關注我們!