CAN總線是什么
CAN是控制器局域網絡(Controller Area Network, CAN)的簡稱,ISO國際標準化的串行通信協議(ISO 11898),具有實時性強、傳輸距離遠、抗電磁干擾能力強、成本低等特點。CAN總線協議已經成為汽車計算機控制系統和嵌入式工業控制局域網的標準總線,廣泛應用于汽車電控制系統、電梯控制系統、安全監測系統、醫療儀器、紡織機械、船舶運輸等領域。
英創主流工控主板ESMARC系列(目前包括4個大型號:ESM6802,ESM6800,ESM335x,ESM928x)均板載兩路CAN總線,用戶可以直接使用板載CAN總線進行功能評估使用。英創ESMARC底板上面的CAN部分如下圖:
英創ESMARC開發評估底板上的CAN電路部分
CAN總線的工作原理
CAN總線使用串行數據傳輸方式,可以以1Mb/s的速度在40m的雙絞線上運行,也可以使用光纜連接。CAN控制器通過組成總線的兩條線(CAN-H和CAN-L)的電位差來確定總線的電平。在任一時刻,總線上都有兩種電平:顯性電平和隱性電平。只要有一個單元輸出顯性電平,總線上即為顯性電平,只有所有的單元都輸出隱性電平,總線上才為隱性電平。
連接在總線上的所有節點都能夠發送信息,如果有超過一個節點在同一時刻發送信息,有最高優先級的節點獲得發送的資格,所有其它節點執行接收操作。
CAN總線工作原理
當CAN總線上的一個節點發送數據時,它以報文形式廣播給網絡中所有節點。發送節點將要發送的數據和自己的標識符傳送給本節點的CAN芯片,并處于準備狀態,然后在收到總線分配以后,轉為發送報文狀態。CAN芯片將數據根據協議組織成一定的報文格式發出,這時網上的其它節點處于接收狀態。每個處于接收狀態的節點對接收到的報文進行檢測,判斷這些報文是否發給自己,以確定是否接收。每組報文開頭的11位字符為標識符,定義了報文的優先級,這種報文格式稱為面向內容的編址方案。在同一系統中標識符是唯一的,不能有兩個節點發送具有相同標識符的報文。
CAN模塊支持以下幀類型:數據幀,遠程幀,錯誤幀,超載幀,空閑幀。
典型的CAN幀結構
數據幀:用于各節點之間傳送數據消息,由7個不同的位場組成:幀起始、仲裁場、控制場、數據場、CRC場、應答場和幀結束。
遠程幀:用于一個節點請求其他節點所擁有的數據信息。遠程幀的標識符標識了所需數據的類型,而被送回的數據信息的標識符和遠程幀的標識符完全一致。數據源節點在接收到遠程幀后,根據遠程幀的標識符判斷所需數據信息類型,并在總線空閑時將相應數據送出。
遠程幀由6個位場組成:幀起始、仲裁場、控制場、CRC場、應答場和幀結束。
錯誤幀:為進行錯誤界定,每個CAN控制器均設有兩個錯誤計數器:發送錯誤計數器(TEC)和接收錯誤計數器(REC)。CAN總線上的所有節點,按其錯誤計數器數值情況,可分為3個狀態:錯誤活動狀態、錯誤認可狀態和總線關閉狀態。
上電復位后,兩個錯誤計數器的數值都為0,節點處于錯誤活動狀態,可正常參與總線通信。檢測到錯誤時,節點發送活動錯誤標志,當錯誤計數器任一數值超過127時,節點進入錯誤認可狀態。處于錯誤狀態的節點可以參與總線通信,但出錯后會發送認可錯誤標志,并在開始進一步發送數據之前等待一段附加時間(暫停發送場)。當發送錯誤計數器和接收計數器均小于或等于127時,節點從錯誤認可狀態再次變為錯誤活動狀態。若發送錯誤計數器數值超過255,則節點進入總線關閉狀態,無法收發數據。當軟件執行操作模式請求命令,并等待128次總線釋放(BusˉFree)序列(11位連續隱性位)后,節點從總線脫離狀態重新回到錯誤活動狀態。
錯誤幀由兩個不同的位場組成,第一個場由來自不同的節點的錯誤標志疊加而成,第二個場為錯誤界定符。
超載幀:超載幀由超載標志和超載界定符組成。超載標志由6個顯性位組成,其格式與活動錯誤標志相同。超載界定符由8個隱性位組成,其格式與錯誤界定符相同。導致發送超載幀的兩個條件為:
(1)一個接收節點內部接收條件未準備好,要求延遲下一個數據幀或遠程幀發送;
(2)在間歇場(3位)檢測到顯性位。
當超載標志發出后,每個節點監視總線狀態,直至檢測到從顯性至隱性位的跳變,此時,所有的節點均己完成了超載標志的發送,隨后所有節點開始發送8個隱性位組成的超載界定符。
空閑幀:數據幀及遠程幀與前幀消息之間的間隔被稱為空閑幀的場隔開,空閑幀由間歇場和總線空閑場組成,前面已經發送過報文的錯誤節點還包括暫停發送場。間歇場由3個隱性位組成,在此期間,CAN節點不進行幀發送。間歇場的存在使CAN控制器在下次消息發送前有時間進行內部處理操作。總線空閑場可以為任意長度,此時總線處于空閑狀態,允許任何節點開始報文發送。等待報文發送的節點緊隨間歇場后啟動報文發送,即在空閑場第一位期間就啟動報文發送。
錯誤認可節點完成一個報文發送后,在開始另一次報文發送或進入總線空閑狀態之前,緊隨間歇場發送8個隱性位的暫停發送場。發送暫停發送場期間,若其他節點開始發送報文,則本節點停止送出暫停發送場,并變為報文接收器。
CAN總線電路特點
下圖是一個典型的CAN總線擴展電路(英創ETA704 CAN總線擴展模塊):
典型的CAN接口電路
由圖中可以看出,CAN總線收發管腳通過磁耦器件ADuM1201隔離后,和CAN驅動芯片TJA1050連接,就組成了一個典型的CAN總線通訊電路。帶隔離CAN總線通訊模塊的CAN收發器端的所有信號和電源與其它部分完全隔離,有效保護了電路的安全。需要注意的是如果扁平帶線過長,會影響高速信號的完整性,所以在評估時使用的連接線盡量短一些,避免出現問題。
CAN總線在英創主板平臺上的應用
英創EM335x工控主板套件 + ETA704 CAN擴展模塊擴展4路CAN
英創主板可以通過主板自帶和外擴功能模塊,支持和管理多路CAN通信。英創工控主板作為核心控制平臺,管理和控制CAN接口與下位設備進行通訊,從而實現實時數據處理監控等應用。歷年來,大量用戶使用英創主板進行CAN通信相關應用,英創也累積了豐富的工程經驗。下面整理出了英創網站發表的相關技術文檔供用戶參考。雖然有一些方案文檔中提到的英創主板是較老的型號,用戶在新產品開發的時候未必會使用這些老主板產品,但是文中的軟硬件使用技巧、編程技巧和方法等技術細節,是值得用戶參考或者直接使用的。
應用方案
WinCE系統雙CAN構建方案低成本嵌入式Linux CAN應用方案
使用方法與技巧
CAN接口COM組件在WinCE平臺上的實現CAN接口COM組件在C#語言中的使用
基于SJA1000的CAN通訊接口函數使用說明EM9170嵌入式主板CAN通訊接口使用說明
SJA1000的CAN通訊接口函數擴展應用說明工控主板EM9170的CAN通訊應用說明
EM9287 Linux Socket CAN驅動簡介C/C#開發基于WEC7的CAN通訊應用
EM335x工控主板多路CAN總線擴展方案介紹英創WinCE主板CAN接口數據接收性能測試
英創WinCE主板新CAN驅動使用說明英創新CAN驅動接口調用方法及說明
關于新CAN驅動的錯誤幀定義ESM6802 Android版支持雙CAN通信
-
嵌入式主板
+關注
關注
7文章
6086瀏覽量
35524 -
安卓
+關注
關注
5文章
2136瀏覽量
57464
發布評論請先 登錄
相關推薦
評論