新聞中心
PRESS CENTERCAN 控制器局域總線是 Controller Area Network 的縮寫,它的出現(xiàn)最初是為了取代汽車行業(yè)電子控制系統(tǒng)中不斷增加的信號線,后來因為它具有高可靠性、實時性和靈活性,已經(jīng)延伸使用到了工業(yè)與自動化等其他領(lǐng)域。CAN總線是一個單一的總線,所有的外圍器件都可以被掛載到該總線,大致原理如下圖:
圖中,120Ω的電阻可以匹配總線阻抗,吸收信號發(fā)射及回?fù)?,提高了?shù)據(jù)通信的抗干擾能力。每一個節(jié)點(diǎn)都對應(yīng)一個外圍器件,每個外圍器件要接入到CAN總線都需包含CAN 控制器和CAN收發(fā)器。其中,CAN控制器主要負(fù)責(zé)上層應(yīng)用層信號和邏輯電平之間的轉(zhuǎn)換,而CAN 收發(fā)主要負(fù)責(zé)邏輯電平和物理信號之間的轉(zhuǎn)換。
CAN 總線使用CAN_H 和 CAN_L兩根線來連接各個單元,CAN 控制器通過判斷這兩根線上的電位差來得到總線電平(又稱邏輯電平)。CAN 總線通過顯性電平和隱性電平的變化,將數(shù)據(jù)發(fā)送出去。當(dāng)總線上無節(jié)點(diǎn)傳輸數(shù)據(jù)時,會一直處于隱性狀態(tài)。
顯性電平(邏輯電平 0):CAN_H = 3.5 V,CAN_L = 1.5 V,電位差 = 2 V;
隱性電平(邏輯電平 1):CAN_H = CAN_L = 2 V,電位差 = 0 V。
CAN 的通信過程簡單來說,就是發(fā)送方通過使總線電平發(fā)生變化傳遞信息,接收方通過監(jiān)聽總線電平,將總線上的消息讀入自己的接收器。
1、發(fā)送過程
假設(shè)CAN總線處在隱性狀態(tài),并從節(jié)點(diǎn)1開始發(fā)送數(shù)據(jù)。上層應(yīng)用層發(fā)送信號,假設(shè)CAN控制器轉(zhuǎn)換成了邏輯電平 0,經(jīng)由 TxD 發(fā)給 CAN 收發(fā)器,然后轉(zhuǎn)換成對應(yīng)的電壓,這樣就完成了 1 bit 數(shù)據(jù)的發(fā)送。
2、接收過程
CAN是廣播式地給當(dāng)前局部網(wǎng)絡(luò)的所有節(jié)點(diǎn)發(fā)送數(shù)據(jù)幀的,這樣接收時總線上的每一個設(shè)備都會收到這一幀的數(shù)據(jù)。CAN 的幀格式是面向內(nèi)容的編址方案,可以認(rèn)為報文是通過內(nèi)容尋址,也就是說,報文的內(nèi)容隱式地確定其地址。
節(jié)點(diǎn)2:檢查了內(nèi)容發(fā)現(xiàn)不是發(fā)給自己的,直接過濾;
節(jié)點(diǎn)3:同樣發(fā)現(xiàn)不是發(fā)給自己的,直接過濾;
節(jié)點(diǎn)4:讀取這一幀數(shù)據(jù);
節(jié)點(diǎn)4 的CAN收發(fā)器將總線上的差分電平轉(zhuǎn)換成邏輯電平,隨后再由CAN控制器轉(zhuǎn)換成信號發(fā)送給上層。
接下來我們要進(jìn)一步了解每一個節(jié)點(diǎn)發(fā)送的一幀報文。其實CAN 通信幀有很多種,有用于數(shù)據(jù)傳輸?shù)?、遠(yuǎn)程控制的、錯誤通知等等。其中最為常用的就是用于傳輸數(shù)據(jù)的數(shù)據(jù)幀。
下面來聊聊數(shù)據(jù)幀,數(shù)據(jù)幀可以根據(jù)仲裁段長度不同,分為標(biāo)準(zhǔn)幀、擴(kuò)展幀。
1. 幀起始、幀結(jié)束
幀起始由一個顯性位(低電平)組成,幀結(jié)束由7個隱形位(高電平)組成。
2. 仲裁段
表示該幀優(yōu)先級的段,仲裁段的作用是解決多點(diǎn)競爭問題。每次可能有好幾個設(shè)備同時要往總線發(fā)送數(shù)據(jù),仲裁段包含幀ID,幀ID越小,優(yōu)先級越高,優(yōu)先級高擁有優(yōu)先使用總線的權(quán)利。
3.控制段
表示數(shù)據(jù)的字節(jié)數(shù)及保留位的段。
4.數(shù)據(jù)段
為0-8字節(jié),短幀結(jié)構(gòu),實時性好,適合汽車和工控領(lǐng)域。CAN-FD的數(shù)據(jù)段最高可以發(fā)送 64 字節(jié)。
5.CRC段
檢查幀的傳輸錯誤的段。
6. ACK段
表示確認(rèn)正常接收的段。任何節(jié)點(diǎn)如果準(zhǔn)確無誤地接收到幀,都要向總線上發(fā)送顯性位(邏輯電平0),該顯性位將掩蓋發(fā)送節(jié)點(diǎn)輸出的隱性位,使總線上表現(xiàn)為顯性;如果發(fā)送節(jié)點(diǎn)檢測應(yīng)答位為隱性,那么說明沒有節(jié)點(diǎn)收到有效幀。
1. 多主控制
CAN 總線沒有主從之分,每個設(shè)備都可以主動發(fā)送數(shù)據(jù),最先訪問總線的單元獲得發(fā)送權(quán),剩余總線禁止發(fā)送數(shù)據(jù)。如果多個單元同時開始發(fā)送時,高優(yōu)先級 ID(數(shù)據(jù)幀中的一個字段)的單元可獲得發(fā)送權(quán)。
2.控制通信速度
根據(jù)整個網(wǎng)絡(luò)的規(guī)模,可設(shè)定適合的通信速度。
在同一網(wǎng)絡(luò)中,所有單元必須設(shè)定成統(tǒng)一的通信速度。即使有一個單元的通信速度與其它的不一樣,此 單元也會輸出錯誤信號,妨礙整個網(wǎng)絡(luò)的通信。不同網(wǎng)絡(luò)間則可以有不同的通信速度。
3.遠(yuǎn)程數(shù)據(jù)請求
可通過發(fā)送“遙控幀” 請求其他單元發(fā)送數(shù)據(jù)。
4. 具有錯誤檢測、通知、恢復(fù)功能
所有的單元都可以檢測錯誤(錯誤檢測功能)。
檢測出錯誤的單元會立即同時通知其他所有單元(錯誤通知功能)。
正在發(fā)送消息的單元一旦檢測出錯誤,會強(qiáng)制結(jié)束當(dāng)前的發(fā)送。強(qiáng)制結(jié)束發(fā)送的單元會不斷反復(fù)地重新 發(fā)送此消息直到成功發(fā)送為止(錯誤恢復(fù)功能)。
5.系統(tǒng)的柔軟性
與總線相連的單元沒有類似于“地址”的信息。因此在總線上增加單元時,連接在總線上的其它單元的軟硬件及應(yīng)用層都不需要改變。
在實際應(yīng)用中,正確讀取這一協(xié)議的數(shù)據(jù)對于通信可靠性至關(guān)重要,通過上述內(nèi)容的詳細(xì)介紹,相信大家對CAN協(xié)議的相關(guān)知識有了更加深入的了解。
您可能感興趣485轉(zhuǎn)CAN協(xié)議?