1、簡介
CAN是控製器局域網絡(Controller Area Network, CAN)的簡稱,是一種能夠實現分布式實時控製的串行通信網絡。
優(you) 點:
傳(chuan) 輸速度最高到1Mbps,通信距離最遠到10km,無損位仲裁機製,多主結構。近些年來,CAN控製器價(jia) 格越來越低。
Ø 低成本:ECUs通過單個(ge) CAN接口進行通信,布線成本低。
Ø 高集成:CAN總線係統允許在所有ECUs上進行集中錯誤診斷和配置。
Ø 可靠性:該係統對子係統的故障和電磁幹擾具有很強的魯棒性,是汽車控製係統的理想選擇。
Ø 高效率:可以通過id對消息進行優(you) 先級排序,以便最高優(you) 先級的id不被中斷。
Ø 靈活性:每個(ge) ECU包含一個(ge) 用於(yu) CAN總線收發芯片,隨意添加CAN總線節點。
2、CAN總線網絡
CAN總線網絡主要掛在CAN_H和CAN_L,各個(ge) 節點通過這兩(liang) 條線實現信號的串行差分傳(chuan) 輸,為(wei) 了避免信號的反射和幹擾,還需要在CAN_H和CAN_L之間接上120歐姆的終端電阻。為(wei) 什麽(me) 是120Ω,因為(wei) 電纜的特性阻抗為(wei) 120Ω,為(wei) 了模擬無限遠的傳(chuan) 輸線。
3、CAN收發器
CAN收發器的作用是負責邏輯電平和信號電平之間的轉換。
即從(cong) CAN控製芯片輸出邏輯電平到CAN收發器,然後經過CAN收發器內(nei) 部轉換將邏輯電平轉換為(wei) 差分信號輸出到CAN總線上,CAN總線上的節點都可以決(jue) 定自己是否需要總線上的數據。具體(ti) 的引腳定義(yi) 如下:
4、CAN信號表示
CAN總線采用不歸零碼位填充技術,也就是說CAN總線上的信號有兩(liang) 種不同的信號狀態,分別是顯性的(Dominant)邏輯0和隱形的(recessive)邏輯1,信號每一次傳(chuan) 輸完後不需要返回到邏輯0(顯性)的電平。
顯性與(yu) 隱性電平的解釋:
CAN的數據總線有兩(liang) 條,一條是黃色的CAN_High,一條是綠色的CAN_Low。當沒有數據發送時,兩(liang) 條線的電平一樣都為(wei) 2.5V,稱為(wei) 靜電平,也就是隱性電平。當有信號發送時,CAN_High的電平升高1V,即3.5V,CAN_Low的電平降低1V,即1.5V。
按照定義(yi) 的:
-
CAN_H-CAN_L < 0.5V 時候為(wei) 隱性的,邏輯信號表現為(wei) "邏輯1"- 高電平。
-
CAN_H-CAN_L > 0.9V 時候為(wei) 顯性的,邏輯信號表現為(wei) "邏輯0"- 低電平。
5、CAN信號傳(chuan) 輸
發送過程: CAN控製器將CPU傳(chuan) 來的信號轉換為(wei) 邏輯電平(即邏輯0-顯性電平或者邏輯1-隱性電平)。CAN發射器接收邏輯電平之後,再將其轉換為(wei) 差分電平輸出到CAN總線上。
接收過程: CAN接收器將CAN_H 和 CAN_L 線上傳(chuan) 來的差分電平轉換為(wei) 邏輯電平輸出到CAN控製器,CAN控製器再把該邏輯電平轉化為(wei) 相應的信號發送到CPU上。
5、CAN數據傳(chuan) 輸
CAN總線傳(chuan) 輸的是CAN幀,CAN的通信幀分成五種,分別為(wei) 數據幀、遠程幀、錯誤幀、過載幀和幀間隔。
數據幀根據仲裁段長度不同分為(wei) 標準幀(2.0A)和擴展幀(2.0B)
幀起始
由一個(ge) 顯性位(低電平)組成,發送節點發送幀起始,其他節點同步於(yu) 幀起始;
幀結束
由7個(ge) 隱形位(高電平)組成。
仲裁段
隻要總線空閑,總線上任何節點都可以發送報文,如果有兩(liang) 個(ge) 或兩(liang) 個(ge) 以上的節點開始傳(chuan) 送報文,那麽(me) 就會(hui) 存在總線訪問衝(chong) 突的可能。但是CAN使用了標識符的逐位仲裁方法可以解決(jue) 這個(ge) 問題。
CAN總線控製器在發送數據的同時監控總線電平,如果電平不同,則停止發送並做其他處理。如果該位位於(yu) 仲裁段,則退出總線競爭(zheng) ;如果位於(yu) 其他段,則產(chan) 生錯誤事件。
幀ID越小,優(you) 先級越高。由於(yu) 數據幀的RTR位為(wei) 顯性電平,遠程幀為(wei) 隱性電平,所以幀格式和幀ID相同的情況下,數據幀優(you) 先於(yu) 遠程幀;由於(yu) 標準幀的IDE位為(wei) 顯性電平,擴展幀的IDE位為(wei) 隱形電平,對於(yu) 前11位ID相同的標準幀和擴展幀,標準幀優(you) 先級比擴展幀高。
數據段
一個(ge) 數據幀傳(chuan) 輸的數據量為(wei) 0~8個(ge) 字節,這種短幀結構使得CAN-bus實時性很高,非常適合汽車和工控應用場合如圖27所示。
數據量小,發送和接收時間短,實時性高,被幹擾的概率小,抗幹擾能力強。