全面了解CAN總線協(xié)議
提及總線,總是讓人聯(lián)想到那些交錯(cuò)在一起的計(jì)算機(jī)電線。那么這些電線如何發(fā)揮功效呢?這還得配合總線協(xié)議的管理來(lái)使用。那么今天我們介紹的就是CAN總線協(xié)議??纯催@個(gè)協(xié)議的含義和應(yīng)用吧。
本文引用地址:http://m.butianyuan.cn/article/201606/292911.htm1,CAN總線協(xié)議基本概念:
(1),報(bào)文:總線上的信息以不同格式的報(bào)文發(fā)送,但長(zhǎng)度有限?當(dāng)總線開(kāi)放時(shí),任何連接的單元均可開(kāi)始發(fā)送一個(gè)新報(bào)文?
(2),信息路由:在CAN系統(tǒng)中,一個(gè)CAN節(jié)點(diǎn)不使用有關(guān)系統(tǒng)結(jié)構(gòu)的任何信息,這里包含一些重要的概念:系統(tǒng)靈活性——節(jié)點(diǎn)可以在不要求所有節(jié)點(diǎn)及其應(yīng)用層改變?nèi)魏诬浖蛴布那闆r下,被接于CAN網(wǎng)絡(luò)?報(bào)文通信——一個(gè)報(bào)文的內(nèi)容由其標(biāo)示符ID命名,ID并不指出報(bào)文的目的,但描述數(shù)據(jù)的含義,以便網(wǎng)絡(luò)中的所有節(jié)點(diǎn)有可能借助報(bào)文濾波決定該數(shù)據(jù)是否使它們激活?成組——由于采用了報(bào)文濾波,所有節(jié)點(diǎn)均可接受報(bào)文,并同時(shí)被相同的報(bào)文激活?數(shù)據(jù)相容性——在CAN網(wǎng)絡(luò)中,可以確保報(bào)文同時(shí)被所有的節(jié)點(diǎn)或者沒(méi)有節(jié)點(diǎn)接受,因此,系統(tǒng)的數(shù)據(jù)相容性是借助于成組和出錯(cuò)處理達(dá)到的?
(3),位速率:CAN的數(shù)據(jù)傳輸率在不同的系統(tǒng)中是不同的,而在一個(gè)系統(tǒng)中是固定的速率?
(4),優(yōu)先權(quán):在總線訪問(wèn)期間,標(biāo)示符定義了一個(gè)報(bào)文靜態(tài)的優(yōu)先權(quán)?
(5),遠(yuǎn)程數(shù)據(jù)請(qǐng)求:通過(guò)發(fā)送一個(gè)遠(yuǎn)程幀,需要數(shù)據(jù)的節(jié)點(diǎn)可以請(qǐng)求另一個(gè)節(jié)點(diǎn)發(fā)送相應(yīng)的數(shù)據(jù)幀,該數(shù)據(jù)幀與對(duì)應(yīng)的遠(yuǎn)程幀以相同的標(biāo)示符ID命名?
(6),多主站:當(dāng)總線開(kāi)放時(shí),任何單元均可以開(kāi)始發(fā)送報(bào)文,發(fā)送具有最高優(yōu)先權(quán)報(bào)文的單元會(huì)贏得總線的訪問(wèn)權(quán)?
(7),仲裁:當(dāng)總線開(kāi)放時(shí),任何單元均可以開(kāi)始發(fā)送報(bào)文,若同時(shí)有兩個(gè)或者更多的單元開(kāi)始發(fā)送,總線訪問(wèn)沖突運(yùn)用逐位仲裁規(guī)則,借助標(biāo)示符ID解決,這種仲裁規(guī)則可以使信息和時(shí)間均無(wú)損失,若具有相同標(biāo)示符的一個(gè)數(shù)據(jù)幀和一個(gè)遠(yuǎn)程幀同時(shí)發(fā)送,數(shù)據(jù)幀優(yōu)先于遠(yuǎn)程幀,仲裁期間,每個(gè)發(fā)送器都對(duì)發(fā)送位電平與總線上檢測(cè)到的電平進(jìn)行比較,若相同則該單元可以繼續(xù)發(fā)送,當(dāng)發(fā)送一個(gè)隱性電平,而在總線上檢測(cè)為顯性電平時(shí),該單元退出仲裁,并不再傳送后繼位了?
(8),安全性:CAN總線協(xié)議為了獲得盡可能高的數(shù)據(jù)傳輸安全性,在每個(gè)CAN節(jié)點(diǎn)中均設(shè)有錯(cuò)誤檢測(cè),標(biāo)定和自檢的強(qiáng)有力措施?檢測(cè)措施包括:發(fā)送自檢,循環(huán)冗余校驗(yàn),位填充,和報(bào)文格式檢查?
(9),出錯(cuò)標(biāo)注和恢復(fù)時(shí)間:已損壞的報(bào)文由檢驗(yàn)出錯(cuò)的節(jié)點(diǎn)進(jìn)行標(biāo)注?這樣的報(bào)文將失效,并自動(dòng)進(jìn)行重發(fā)送?如果不存在新的錯(cuò)誤,從檢出錯(cuò)誤到下一個(gè)報(bào)文開(kāi)始發(fā)送的恢復(fù)實(shí)踐最多為29個(gè)位時(shí)間?
(10),故障界定:CAN節(jié)點(diǎn)又能力識(shí)別永久性的故障和暫時(shí)擾動(dòng),可自動(dòng)關(guān)閉故障節(jié)點(diǎn)?
(11),連接:CAN串行通信鏈路是一條眾多單元均可被連接的總線,理論上單元數(shù)目是無(wú)限的,實(shí)際上,單元總數(shù)受限于延遲時(shí)間和總線的電器負(fù)載?
(12),應(yīng)答:所有接收器均對(duì)接收?qǐng)?bào)文的相容性進(jìn)行檢查,回答一個(gè)相容的報(bào)文,并標(biāo)注一個(gè)不相容的報(bào)文?
2,CAN的特點(diǎn):屬于串行通信網(wǎng)絡(luò)
(1),通信方式靈活?多主從方式工作,網(wǎng)絡(luò)上任何節(jié)點(diǎn)均可以在任何時(shí)刻主動(dòng)的向其他節(jié)點(diǎn)發(fā)送信息,不分主從?無(wú)需站地址等節(jié)點(diǎn)信息?可以構(gòu)成多機(jī)備份系統(tǒng)?
(2),CAN網(wǎng)絡(luò)上的節(jié)點(diǎn)信息分成不同的優(yōu)先級(jí),可以滿足不同的實(shí)時(shí)要求?
(3),CAN采取非破壞性的總線仲裁技術(shù),多個(gè)節(jié)點(diǎn)同時(shí)發(fā)送信息時(shí),優(yōu)先級(jí)低的節(jié)點(diǎn)會(huì)主動(dòng)退出發(fā)送?
(4),CAN只需通過(guò)報(bào)文濾波就可以實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn),1點(diǎn)對(duì)多點(diǎn)及全局廣播等幾種方式傳送接收,無(wú)需調(diào)度?
(5),CAN的直接通信距離最遠(yuǎn)可達(dá)10KM(5Kb/s),通信速率最高可達(dá)1Mb/s(40M)?
(6),CAN上的節(jié)點(diǎn)數(shù)目前可達(dá)110個(gè);報(bào)文標(biāo)示符可達(dá)2032種(CAN2.0A ),而CAN2.0B報(bào)文標(biāo)示符幾乎不受限制?
(7),CAN通信采用短幀格式,傳輸時(shí)間短,抗干擾強(qiáng),極好的驗(yàn)錯(cuò)效果,每幀最多8B足以滿足控制要求,不會(huì)占用過(guò)長(zhǎng)總線時(shí)間,實(shí)時(shí)性強(qiáng)?
(8),CAN每幀都有CRC校驗(yàn)及其他驗(yàn)錯(cuò)措施?
(9),接口中集成了CAN總線協(xié)議的物理層和數(shù)據(jù)鏈路層?
(10),CAN的通信介質(zhì)可為雙絞線或同軸電纜,光纖?
(11),CAN節(jié)點(diǎn)在錯(cuò)誤嚴(yán)重情況下具有自動(dòng)關(guān)閉輸出功能?
3,CAN總線協(xié)議基本規(guī)則:
(1),總線訪問(wèn):采用載波監(jiān)聽(tīng)多路訪問(wèn),CAN控制器之恩能夠在總線空閑時(shí),就是節(jié)點(diǎn)偵聽(tīng)到網(wǎng)絡(luò)上至少存在3個(gè)空閑位(隱性位)時(shí)開(kāi)始發(fā)送,采用硬同步,所有的控制器同步都為與幀的起始的前沿?過(guò)了一定時(shí)間,并在一定條件后,重同步?
(2),仲裁:各節(jié)點(diǎn)向總線發(fā)電平時(shí),也對(duì)總線上電平進(jìn)行讀取,并于自身發(fā)送的電平進(jìn)行比較,相同則發(fā)下一位,直至全部發(fā)完?不同則說(shuō)明網(wǎng)絡(luò)上有更高優(yōu)先級(jí)的信息幀正在發(fā)送,即停止發(fā)送,退出競(jìng)爭(zhēng)?
(3),編碼/解碼:幀起始域,仲裁域,控制域,數(shù)據(jù)域和CRC序列均使用位填充技術(shù)進(jìn)行編碼,就是5個(gè)連續(xù)的同狀態(tài)電平插入一位與它相補(bǔ)的電平,還原時(shí)每5個(gè)同狀態(tài)的電平后的相補(bǔ)電平被刪除?
(4),出錯(cuò)標(biāo)注:當(dāng)檢測(cè)到位錯(cuò)誤,填充錯(cuò)誤,形式錯(cuò)誤或應(yīng)答錯(cuò)誤時(shí),檢測(cè)出錯(cuò)條件的CAN控制器將發(fā)送一個(gè)出錯(cuò)標(biāo)志?
(5),超載標(biāo)注,一些控制器會(huì)發(fā)送一個(gè)或多個(gè)超載幀以延遲下一個(gè)數(shù)據(jù)幀或遠(yuǎn)程幀的發(fā)送?
評(píng)論