《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 其他 > 業(yè)界動(dòng)態(tài) > can總線基本概念

can總線基本概念

2015-05-08

  CAN 是Controller Area Network 的縮寫(xiě)(以下稱為CAN),是ISO國(guó)際標(biāo)準(zhǔn)化的串行通信協(xié)議。在汽車產(chǎn)業(yè)中,出于對(duì)安全性、舒適性、方便性、低公害、低成本的要求,各種各樣的電子控制系統(tǒng)被開(kāi)發(fā)了出來(lái)。由于這些系統(tǒng)之間通信所用的數(shù)據(jù)類型及對(duì)可靠性的要求不盡相同,由多條總線構(gòu)成的情況很多,線束的數(shù)量也隨之增加。為適應(yīng)“減少線束的數(shù)量”、“通過(guò)多個(gè)LAN,進(jìn)行大量數(shù)據(jù)的高速通信”的需要,1986 年德國(guó)電氣商博世公司開(kāi)發(fā)出面向汽車的CAN 通信協(xié)議。此后,CAN 通過(guò)ISO11898 及ISO11519 進(jìn)行了標(biāo)準(zhǔn)化,在歐洲已是汽車網(wǎng)絡(luò)的標(biāo)準(zhǔn)協(xié)議。
  CAN總線使用總結(jié)
  一,can總線是由德國(guó)BOSCH公司提出,目的是為了解決汽車內(nèi)部硬件信號(hào)線的復(fù)雜走線
  二,CAN:controller area area:控制器局域網(wǎng)絡(luò)
  三,can總線的特點(diǎn):
  與一般的通信總線相比,CAN總線的數(shù)據(jù)通信具有突出的可靠性、實(shí)時(shí)性和靈活性。
  1,CAN為多主方式工作,網(wǎng)絡(luò)上任一節(jié)均可在任意時(shí)刻主動(dòng)向網(wǎng)絡(luò)上其他節(jié)點(diǎn)發(fā)送信息,不分主從
 ?。玻茫粒喂?jié)節(jié)點(diǎn)只需通過(guò)對(duì)報(bào)文的標(biāo)志符進(jìn)行濾波就可以方便的實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn),點(diǎn)對(duì)多點(diǎn)及全局廣播等
  幾種傳送接收方式;
 ?。常茫粒慰偩€采用非破壞總線仲裁技術(shù)。當(dāng)發(fā)生沖突時(shí),優(yōu)先級(jí)低的節(jié)點(diǎn)自動(dòng)退出發(fā)送,而優(yōu)先級(jí)高
  的節(jié)點(diǎn)可不受影響地繼續(xù)傳輸數(shù)據(jù),從而大大節(jié)省了總線沖突仲裁時(shí)間。尤其是在負(fù)載很重的情況下,也不
  會(huì)出現(xiàn)癱瘓情況(以太網(wǎng)則可能)。
 ?。?,在報(bào)文標(biāo)識(shí)符上,CAN上的節(jié)點(diǎn)分成不同的優(yōu)先級(jí),可滿足不同的實(shí)時(shí)要求,優(yōu)先級(jí)高的數(shù)據(jù)
  最多可在134us內(nèi)得到傳輸;
  5,CAN的直接通信距離最遠(yuǎn)可達(dá)10KM(速率在5kbps以下),通信速率最高可達(dá)1Mbps,
  (此時(shí)通信距離最長(zhǎng)為40m);
  6,CAN上的節(jié)點(diǎn)數(shù)主要取決于總線驅(qū)動(dòng)電路,目前可達(dá)110個(gè);
  7,報(bào)文采用短幀結(jié)構(gòu),傳輸時(shí)間短,受干擾概率低,保證了數(shù)據(jù)出錯(cuò)率極低;
  8,CAN的每幀信息都在CRC校驗(yàn)及其他檢錯(cuò)措施,具有極好的檢錯(cuò)效果;
 ?。?,CAN的通信介質(zhì)為雙絞線、同軸電纜或光纖,選擇靈活;
 ?。保埃茫粒喂?jié)點(diǎn)在錯(cuò)誤嚴(yán)重的情況下具有自動(dòng)關(guān)閉輸出功能,以使總線上其他節(jié)點(diǎn)的操作不受影響;
 ?。保保茫粒慰偩€具有較高的性價(jià)比。
  四,can總線的系統(tǒng)構(gòu)成及數(shù)據(jù)傳輸原理
 ?。ㄒ唬到y(tǒng)構(gòu)成
  1,CAN控制器:接收來(lái)自微控制器的數(shù)據(jù),并處理發(fā)送給收發(fā)器,同時(shí),也接收來(lái)自收發(fā)器的數(shù)據(jù),處理傳給微控制器。
  2,CAN收發(fā)器:總線驅(qū)動(dòng)
  四,can總線的的通信協(xié)議
  (一),網(wǎng)絡(luò)層次結(jié)構(gòu)
  可分為三個(gè)層:目標(biāo)層,傳送層,物理層,如下圖所示
  物理層:規(guī)定了信號(hào)的傳輸過(guò)程中的電氣特性(如傳輸方式及傳輸介質(zhì))及信號(hào)特性;
  傳送層:幀組織,總線仲裁,錯(cuò)誤檢測(cè)等;
  目標(biāo)層:信息識(shí)別,為應(yīng)用層提供接口;

QQ截圖20150508135519.png

  其上述分層按iso/osi也可以分為兩層:物理層,數(shù)據(jù)鏈路層(即目標(biāo)層和傳送層)。
 ?。ǘ槐磉_(dá)
  CAN協(xié)議中有兩種邏輯位表達(dá)方式
  1. 當(dāng)總線線上發(fā)送的都是弱位時(shí),總線的狀態(tài)就是弱位(邏輯1);
  2.當(dāng)總線上有強(qiáng)位出現(xiàn)時(shí),弱位信號(hào)讓位于強(qiáng)位信號(hào),即總線上顯示強(qiáng)位信號(hào)(邏輯0);
  (三),幀類型
  1. 數(shù)據(jù)幀:傳送數(shù)據(jù),攜帶數(shù)據(jù)從一個(gè)節(jié)點(diǎn)到另一個(gè)節(jié)點(diǎn)或多個(gè)節(jié)點(diǎn),結(jié)構(gòu)如下圖(標(biāo)準(zhǔn)格式)所示。

QQ截圖20150508135534.png

  數(shù)據(jù)幀由7種不同的位域組成:起始域,仲裁域,控制域,數(shù)據(jù)據(jù)域,CRC域,應(yīng)答域,幀結(jié)束域。
  起始域:表示數(shù)據(jù)幀或遠(yuǎn)程幀的開(kāi)始,它由一個(gè)強(qiáng)位組成,主要用于接收狀態(tài)下的CAN控制器的硬同
  步。
  仲裁域:由信息標(biāo)志符及RTR位組成,當(dāng)多個(gè)CAN控制器同時(shí)發(fā)送數(shù)據(jù)時(shí),在仲裁域要進(jìn)行面向位的
  沖突仲裁。對(duì)于標(biāo)準(zhǔn)格式里,標(biāo)志符由11位組成,用于提供信息地址和優(yōu)先級(jí),其發(fā)送的順序?yàn)镮D28~ID18
 ?。ㄗⅲ焊?位不允許均為弱的現(xiàn)象);對(duì)于擴(kuò)展格式,仲裁域由11位的基本ID(ID28~ID18)和18位
  的擴(kuò)展ID(ID17~ID0)組成,格式與標(biāo)準(zhǔn)格式略有不同,詳見(jiàn)書(shū)P25。RTR為:遠(yuǎn)地請(qǐng)求發(fā)
  送位,數(shù)據(jù)幀里為顯性,遠(yuǎn)程幀里為隱性。當(dāng)can總線上接收節(jié)點(diǎn)想請(qǐng)求某節(jié)點(diǎn)發(fā)送數(shù)據(jù)時(shí),就向網(wǎng)絡(luò)上發(fā)
  送一遠(yuǎn)程幀,用標(biāo)志符指出節(jié)點(diǎn)地址,同時(shí)置RTR位為高。如果尋址節(jié)點(diǎn)立即發(fā)送數(shù)據(jù),則使用相同的標(biāo)
  志符,總線不會(huì)產(chǎn)生沖突,因?yàn)榇藭r(shí)數(shù)據(jù)幀的RTR位為低(數(shù)據(jù)強(qiáng)位)。在擴(kuò)展幀里SRR位取代了RTR
  位。
  控制域:由6個(gè)位組成,包括2個(gè)保留位(IDE,ro)用于CAN協(xié)議擴(kuò)展,4位數(shù)據(jù)長(zhǎng)度碼,允許數(shù)據(jù)的
  長(zhǎng)度值為0~8。
  數(shù)據(jù)域:發(fā)送緩沖區(qū)按照長(zhǎng)度碼指示的數(shù)據(jù)長(zhǎng)度進(jìn)行發(fā)送,接收的數(shù)據(jù)同樣如此,第一個(gè)字節(jié)的最高有
  效位第一個(gè)被發(fā)送/接收。
  循環(huán)冗余校驗(yàn)域(CRC):由CRC序列位(15位)和一個(gè)CRC邊界符(1個(gè)弱位)組成。CRC的范圍
  包括起始域、仲裁域、控制域、數(shù)據(jù)域、CRC序列。之所以選用這種幀校驗(yàn)方式,因?yàn)椋哼@種CRC碼對(duì)于
  少于127位的幀最佳。
  應(yīng)答域:應(yīng)答域由發(fā)送方發(fā)送的兩位弱位組成(應(yīng)答空隙和應(yīng)答分界位),當(dāng)接收器正確地接收到有
  效的報(bào)文時(shí),接收器就會(huì)在應(yīng)答間隙期間(發(fā)送ACK信號(hào))向發(fā)送器發(fā)送一顯性位以示應(yīng)答。因此發(fā)送節(jié)
  點(diǎn)一直監(jiān)測(cè)總線信號(hào)以確認(rèn)網(wǎng)絡(luò)中至少有一個(gè)節(jié)點(diǎn)正確接收到發(fā)信息。應(yīng)答分界位是應(yīng)答域中的第二個(gè)弱
  位,有此可見(jiàn),應(yīng)答空隙兩邊有兩個(gè)弱位:CRC分界位和應(yīng)答分界位。
  幀結(jié)束域:每一個(gè)數(shù)據(jù)幀或遠(yuǎn)程幀一串7位的弱位幀結(jié)束域結(jié)束。
  2. 遠(yuǎn)程幀:請(qǐng)求數(shù)據(jù)
  遠(yuǎn)程幀由6個(gè)域組成:起始域、仲裁域、控制域、CRC域、應(yīng)答域、幀結(jié)束域。
  遠(yuǎn)程幀與數(shù)據(jù)幀不同之處在于:RTR位為高,無(wú)數(shù)據(jù)域。
  3. 錯(cuò)誤指示幀:用于指示傳送過(guò)程中的錯(cuò)誤信息
  錯(cuò)誤指示幀由兩個(gè)不同的域組成:第一個(gè)域反映來(lái)自控制器的錯(cuò)誤標(biāo)志,第二個(gè)域?yàn)殄e(cuò)誤分界符。
  錯(cuò)誤標(biāo)志:有兩種,一個(gè)由6個(gè)強(qiáng)位組成的主動(dòng)錯(cuò)誤標(biāo)志;另一個(gè)由6個(gè)弱位組成的被動(dòng)錯(cuò)誤標(biāo)志,
  它是被其他CAN控制器強(qiáng)位改寫(xiě)。 處于主動(dòng)錯(cuò)誤狀態(tài)的CAN節(jié)點(diǎn)檢測(cè)到錯(cuò)誤發(fā)出主動(dòng)錯(cuò)誤標(biāo)志,該錯(cuò)誤標(biāo)
  志不滿足位填充規(guī)則,或者是破壞應(yīng)答域或結(jié)束域固定格式,所有其他節(jié)點(diǎn)都檢測(cè)到錯(cuò)誤狀態(tài),并發(fā)出該錯(cuò)
  誤標(biāo)志。因此,這些從總線上監(jiān)測(cè)到的強(qiáng)位串是不同節(jié)點(diǎn)發(fā)出錯(cuò)誤標(biāo)志的結(jié)果,這一標(biāo)志最短為6個(gè),最長(zhǎng)
  為12個(gè)。被動(dòng)錯(cuò)誤標(biāo)志(不太理解。。。后續(xù))
  錯(cuò)誤分界:它由8個(gè)弱位組成,與過(guò)載分界有相同的格式,當(dāng)錯(cuò)誤標(biāo)志發(fā)生后,每一個(gè)CAN節(jié)點(diǎn)監(jiān)測(cè)
  總線,直到檢測(cè)到一個(gè)強(qiáng)位出現(xiàn),這表明所有CAN節(jié)點(diǎn)已經(jīng)完成錯(cuò)誤標(biāo)志的發(fā)送,并開(kāi)始發(fā)送8個(gè)弱位的分
  界符,之后網(wǎng)絡(luò)上的主動(dòng)錯(cuò)誤節(jié)點(diǎn)便可同時(shí)開(kāi)始其他的發(fā)送。如果數(shù)據(jù)幀或遠(yuǎn)程幀在發(fā)送過(guò)程中發(fā)現(xiàn)錯(cuò)誤
  后,當(dāng)前的信息作廢,并啟動(dòng)重新發(fā)送。如果CAN節(jié)點(diǎn)發(fā)現(xiàn)錯(cuò)誤指示幀錯(cuò)誤,則重發(fā),當(dāng)連續(xù)多次出現(xiàn)此錯(cuò)
  誤時(shí),則相應(yīng)的節(jié)點(diǎn)變?yōu)楸粍?dòng)錯(cuò)誤節(jié)點(diǎn)。為正確結(jié)束錯(cuò)誤標(biāo)志,被動(dòng)態(tài)節(jié)點(diǎn)需要至少3個(gè)位周期。
  4. 過(guò)載幀:用于后續(xù)幀的延時(shí)
  過(guò)載幀由兩個(gè)域組成:過(guò)載標(biāo)志和過(guò)載分界。
  以下情況可以導(dǎo)致過(guò)載幀發(fā)送:
 ?。?). 接收未準(zhǔn)備好即接收方需要過(guò)多的時(shí)間處理當(dāng)前的數(shù)據(jù);
 ?。?).在幀間空隙的第一位或第二位發(fā)現(xiàn)顯性位信號(hào);
  過(guò)載幀發(fā)送條件:
 ?。?).在幀間空隙域的第一個(gè)位周期;
 ?。?).在幀間空隙域中檢測(cè)到強(qiáng)位信號(hào)一個(gè)位周期后,方可啟動(dòng)過(guò)載幀發(fā)送。
  過(guò)載標(biāo)志:由6個(gè)顯性位組成,與錯(cuò)誤標(biāo)志格式相同,當(dāng)超載標(biāo)志發(fā)生后,每個(gè)節(jié)點(diǎn)監(jiān)測(cè)總線狀態(tài),當(dāng)發(fā)
  現(xiàn)線上有弱位后,此時(shí)所有節(jié)點(diǎn)已完成超載標(biāo)志的發(fā)送,并開(kāi)始發(fā)8個(gè)弱位串;
  過(guò)載分界符:由8個(gè)隱性位組成,與錯(cuò)誤分界符格式相同;
  -----------------------------------------------------------------------------------------------------------------------------------
  英飛凌(infineon)單片機(jī)XC800之CAN總線
  CAN內(nèi)部硬件結(jié)構(gòu),如下圖所示

QQ截圖20150508135546.png

QQ截圖20150508135600.png


  一,CAN處理機(jī)制
  發(fā)送:根據(jù)報(bào)文緩存中的報(bào)文對(duì)象,由位流處理器產(chǎn)生的通過(guò)can總線發(fā)送的數(shù)據(jù)幀和過(guò)程幀,即從報(bào)
  文緩存中取出的報(bào)文對(duì)象,位流處理器給它加上起始域,結(jié)束域和CRC校驗(yàn)數(shù)據(jù),組成一個(gè)完整的數(shù)據(jù)幀
  和遠(yuǎn)程幀,此時(shí)位流控制器還在對(duì)總線進(jìn)行監(jiān)測(cè),當(dāng)發(fā)現(xiàn)總線空閑時(shí),就啟動(dòng)數(shù)據(jù)的傳送,傳送過(guò)程中監(jiān)測(cè)
  總線的信息,當(dāng)發(fā)現(xiàn)與傳送的信息不相符時(shí),就會(huì)產(chǎn)生一個(gè)“最近錯(cuò)誤”中斷請(qǐng)求。
  接收:數(shù)據(jù)幀或遠(yuǎn)程幀通過(guò)總結(jié)接口,到CAN節(jié)點(diǎn),位流控制器對(duì)其進(jìn)行CRC域進(jìn)行檢測(cè),驗(yàn)證數(shù)據(jù)的
  一致性,當(dāng)檢測(cè)到錯(cuò)誤時(shí),產(chǎn)生一個(gè)“最近錯(cuò)誤”中斷請(qǐng)求,并產(chǎn)生一個(gè)錯(cuò)誤幀,發(fā)送到總線上。對(duì)一個(gè)無(wú)
  錯(cuò)誤的幀,位流處理器將它分解成數(shù)據(jù)部分和標(biāo)識(shí)符部分,列表控制器將其以鏈表的形式存儲(chǔ)于報(bào)文緩存
  中,執(zhí)行遠(yuǎn)程幀或數(shù)據(jù)幀處理。
  在上述數(shù)據(jù)傳送和處理過(guò)程中,會(huì)出現(xiàn)一些狀態(tài)字,指示操作完成或出現(xiàn)錯(cuò)誤,這些狀態(tài)字或引發(fā)中
  斷,進(jìn)行中斷處理。
  二,從上述結(jié)構(gòu)框圖可以看出,主要包括:CAN節(jié)點(diǎn),報(bào)文控制器,中斷處理單元
 ?。ㄒ唬?,CAN節(jié)點(diǎn)
 ?。?),位流控制器(Bitstream Prosessor)
  主要任務(wù):處理數(shù)據(jù)幀,遠(yuǎn)程幀,錯(cuò)誤幀和過(guò)載幀,同時(shí)還進(jìn)行串行數(shù)據(jù)流與輸入/輸出寄存器之間
  轉(zhuǎn)換工作(Perdiv data frame ,remote frame ,error frame and overload,conversion thd seiral data
  stream and the input/output register)。
  詳述:位流控制器:對(duì)于發(fā)送:根據(jù)報(bào)文緩存中的報(bào)文對(duì)象,由位流處理器產(chǎn)生通過(guò)CAN總線的數(shù)據(jù)
  幀和遠(yuǎn)程幀。該的控制器控制CRC產(chǎn)生器,且給新的遠(yuǎn)程幀和數(shù)據(jù)幀加上校驗(yàn)和信息。在加入‘幀起始
  位’和‘幀
  結(jié)束域’之后,位流處理器開(kāi)始CAN總線仲裁過(guò)程,且當(dāng)發(fā)現(xiàn)總線空閑時(shí)連續(xù)進(jìn)行幀發(fā)送。進(jìn)行數(shù)據(jù)發(fā)送
  的同時(shí),位流控制器連續(xù)地監(jiān)測(cè)I/O線的的電平和發(fā)送移位寄存器當(dāng)前送出位的邏輯狀態(tài)之間檢測(cè)到失配,
  產(chǎn)生一個(gè)‘最近錯(cuò)誤’中斷請(qǐng)求,錯(cuò)誤碼由位域NSRX.LEC給出。
  對(duì)于接收:通過(guò)驗(yàn)證CRC相關(guān)域,確定接收到的幀是否有問(wèn)題,或有問(wèn)題,產(chǎn)生一個(gè)‘最近錯(cuò)
  誤’中斷請(qǐng)求,同時(shí)產(chǎn)生一個(gè)錯(cuò)誤幀,并發(fā)送到總線上。若接收的幀無(wú)錯(cuò)誤,將接收到的幀分解成標(biāo)志符和
  數(shù)據(jù)部分,并將接收到的信息傳給報(bào)文緩存,執(zhí)行遠(yuǎn)程幀或數(shù)據(jù)幀處理,中斷產(chǎn)生和狀態(tài)處理。
 ?。?),位時(shí)序單元(Bit timing unit)
  考慮到傳播延遲和相移,根據(jù)用戶設(shè)置確定采樣點(diǎn)和位時(shí)間長(zhǎng)度,同時(shí)也處理再同步操作(define a
  length of a bit time and the location of the sample point according to the user settings,takeing into
  accout propration delays and phase shift errors and re-sychronization).
 ?。?),錯(cuò)誤處理單元(error handling unit)
  對(duì)發(fā)送和接收過(guò)程中錯(cuò)誤進(jìn)行計(jì)數(shù),當(dāng)計(jì)數(shù)值達(dá)到一定時(shí),進(jìn)入不同的錯(cuò)誤指示狀態(tài):錯(cuò)誤激活,錯(cuò)
  誤認(rèn)可,關(guān)閉總線。
 ?。?),節(jié)點(diǎn)控制單元(Node control unit)
  A, 使能/禁止節(jié)點(diǎn)的傳送
  B, 使能/禁止可引發(fā)中斷的特定節(jié)點(diǎn)事件
  C 幀計(jì)數(shù)管理
 ?。?),中斷控制單元(interrupt control unit)
  控制CAN產(chǎn)生的不同類型的事件的中斷
 ?。ǘ瑘?bào)文控制器
 ?。ㄈ斜砜刂破?br/> ?。ㄋ模袛嗵幚韱卧?br/>

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。