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

英創(chuàng)信息技術(shù)ISA總線的CE設(shè)備驅(qū)動程序介紹
英創(chuàng)信息技術(shù)CAN接口COM組件在C#語言領(lǐng)域應(yīng)用

英創(chuàng)信息技術(shù)SJA1000的CAN通訊接口函數(shù)介紹
英創(chuàng)信息技術(shù)EM335x工控主板多路CAN總線擴(kuò)展方案介紹
英創(chuàng)信息技術(shù)新CAN驅(qū)動接口調(diào)用方法及說明

英創(chuàng)信息技術(shù)ESM6802 Android版支持雙CAN通信簡介

英創(chuàng)信息技術(shù)JAVA操作英創(chuàng)主板SPI接口簡介

英創(chuàng)信息技術(shù)JAVA操作英創(chuàng)主板I2C接口簡介

英創(chuàng)信息技術(shù)主板在Windows CE環(huán)境中的串口配置

英創(chuàng)信息技術(shù)工控主板產(chǎn)品選型指南介紹
英創(chuàng)信息技術(shù)精簡ISA總線WinCE編程簡介

英創(chuàng)信息技術(shù)6路獨(dú)立CAN總線的實(shí)現(xiàn)方案簡介

評論