久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

細(xì)說(shuō)汽車電子通信總線之CAN 2.0 總線協(xié)議詳解

 懶人海馬 2022-03-16

引言

1. CAN總線發(fā)展歷史與ISO規(guī)范

2. CAN總線主要功能特性

3. CAN 2.0總線協(xié)議的物理層電氣特性

4. CAN 2.0總線協(xié)議消息報(bào)文詳解

4.1 CAN2.0總線的通信報(bào)文幀格式(Message Frame Format)

4.2 CAN2.0總線的通信報(bào)文幀類型(Message Frame Type)

4.3 CAN2.0總線的通信報(bào)文之標(biāo)準(zhǔn)/擴(kuò)展數(shù)據(jù)幀

4.4 CAN2.0總線的通信報(bào)文之標(biāo)準(zhǔn)/擴(kuò)展遠(yuǎn)程幀

4.5 CAN2.0總線的通信報(bào)文之錯(cuò)誤幀

4.6 CAN2.0總線的通信報(bào)文之過(guò)載幀

4.7 CAN2.0總線的通信報(bào)文之幀間空間

5. CAN 2.0總線協(xié)議的總線仲裁(Bus Arbitration)

6. CAN 2.0總線協(xié)議的位流編碼(Bit Coding)與位填充(Bit Stuffing)

7. CAN 2.0總線協(xié)議的錯(cuò)誤檢測(cè)機(jī)制

7.1 CAN 2.0 總線節(jié)點(diǎn)的錯(cuò)誤類型

7.2 CAN 2.0 總線節(jié)點(diǎn)的故障界定

7.3 CAN 2.0 總線節(jié)點(diǎn)的狀態(tài)

8. CAN 2.0總線協(xié)議的位定時(shí)與同步

8.1 CAN 2.0 總線協(xié)議的位時(shí)間定義與采用

8.2 CAN 2.0 總線協(xié)議的同步機(jī)制

總結(jié)

引言

CAN 是Controller Area Network 的縮寫(以下稱為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ó)汽車電子巨頭--博世(BOSCH)公司開(kāi)發(fā)出面向汽車的CAN 通信協(xié)議。此后,,CAN 通過(guò)ISO11898 及ISO11519進(jìn)行了標(biāo)準(zhǔn)化,,在歐洲乃至全球已成為汽車網(wǎng)絡(luò)的標(biāo)準(zhǔn)協(xié)議,也是目前汽車電子應(yīng)用中使用最廣泛的通信協(xié)議,。

CAN 經(jīng)過(guò)30多年的發(fā)展,,其高性能和可靠性早已被市場(chǎng)所驗(yàn)證和認(rèn)可,除汽車電子外,,還被廣泛地應(yīng)用于工業(yè)自動(dòng)化,、船舶、醫(yī)療設(shè)備,、工業(yè)設(shè)備等方面,。

但是,很多汽車電子ECU的開(kāi)發(fā)工程師卻并不真正清楚CAN總線協(xié)議本身,,這讓很多工程師,,在實(shí)際ECU項(xiàng)目的CAN總線硬件設(shè)計(jì)和軟件開(kāi)發(fā)過(guò)程中遇到CAN總線相關(guān)的問(wèn)題時(shí)無(wú)從下手,事倍功半,。

本文就為大家詳細(xì)梳理一下CAN總線中,,目前使用最為廣泛的CAN 2.0 A/B協(xié)議,該版本也被稱作傳統(tǒng)CAN(Classic CAN)協(xié)議,,希望能夠讓大家對(duì)CAN總線協(xié)議有一個(gè)比較全面深入的了解,,從而厚積薄發(fā)、讓CAN總線開(kāi)發(fā)變得更easy,,事倍功半,!

1. CAN總線發(fā)展歷史與ISO規(guī)范

控制器局域網(wǎng)CAN(Controller Area Network),最初是由德國(guó)Bosch公司設(shè)計(jì)的,,應(yīng)用于汽車的監(jiān)測(cè)和控制,。

作為一種技術(shù)先進(jìn)、可靠性高,、功能完善,、成本合理的遠(yuǎn)程網(wǎng)絡(luò)通訊控制方式,,CAN總線被廣泛應(yīng)用到各種電磁輻射強(qiáng)和振動(dòng)大的工業(yè)環(huán)境和控制領(lǐng)域,。

1991年9月,Philips半導(dǎo)體公司制定并發(fā)布CAN技術(shù)規(guī)范:CAN 2.0 A/B,。CAN 協(xié)議經(jīng) ISO 標(biāo)準(zhǔn)化后有 ISO11898 標(biāo)準(zhǔn)和 ISO11519-2 標(biāo)準(zhǔn)兩種,。ISO11898 和 ISO11519-2標(biāo)準(zhǔn)對(duì)于數(shù)據(jù)鏈路層的定義相同,但物理層不同,。

CAN總線是唯一成為國(guó)際標(biāo)準(zhǔn)的現(xiàn)場(chǎng)總線,,也是國(guó)際上應(yīng)用最廣泛的現(xiàn)場(chǎng)總線之一。

CAN總線 規(guī)范( Version 2.0 )

  • CAN2.0A :CAN標(biāo)準(zhǔn)報(bào)文格式

  • CAN2.0B:CAN標(biāo)準(zhǔn)報(bào)文格式和擴(kuò)展報(bào)文格式

CAN總線 技術(shù)規(guī)范的目的

  • 定義數(shù)據(jù)鏈路層

  • 定義CAN協(xié)議在周圍各層中所發(fā)揮的作用

2. CAN總線主要功能特性

CAN總線控制器中集成了CAN協(xié)議的物理層和數(shù)據(jù)鏈路層功能,可完成對(duì)通信數(shù)據(jù)的成幀處理,,包括位填充,、數(shù)據(jù)塊編碼、循環(huán)冗余檢驗(yàn),、優(yōu)先級(jí)判別等項(xiàng)工作,。

CAN總線網(wǎng)絡(luò)中通信節(jié)點(diǎn)個(gè)數(shù)在理論上不受限制

CAN協(xié)議的一個(gè)最大特點(diǎn)是廢除了傳統(tǒng)的站地址編碼,而代之以對(duì)通信數(shù)據(jù)塊進(jìn)行編碼,。采用這種方法的優(yōu)點(diǎn)可使網(wǎng)絡(luò)內(nèi)的節(jié)點(diǎn)個(gè)數(shù)在理論上不受限制,,數(shù)據(jù)塊的標(biāo)識(shí)符可由11位或29位二進(jìn)制數(shù)組成,因此可以定義2或2個(gè)以上不同的數(shù)據(jù)塊,,這種按數(shù)據(jù)塊編碼的方式,,還可使不同的節(jié)點(diǎn)同時(shí)接收到相同的數(shù)據(jù),這一點(diǎn)在分布式控制系統(tǒng)中非常有用,。數(shù)據(jù)段長(zhǎng)度最多為8個(gè)字節(jié),,可滿足通常工業(yè)領(lǐng)域中控制命令、工作狀態(tài)及測(cè)試數(shù)據(jù)的一般要求,。同時(shí),,8個(gè)字節(jié)不會(huì)占用總線時(shí)間過(guò)長(zhǎng),從而保證了通信的實(shí)時(shí)性,。CAN協(xié)議采用CRC檢驗(yàn)并可提供相應(yīng)的錯(cuò)誤處理功能,,保證了數(shù)據(jù)通信的可靠性。CAN卓越的特性,、極高的可靠性和獨(dú)特的設(shè)計(jì),,特別適合工業(yè)過(guò)程監(jiān)控設(shè)備的互連,因此,,越來(lái)越受到工業(yè)界的重視,,并已公認(rèn)為最有前途的現(xiàn)場(chǎng)總線之一。

各節(jié)點(diǎn)之間可實(shí)現(xiàn)自由通信

CAN總線采用了多主競(jìng)爭(zhēng)式總線結(jié)構(gòu),,具有多主站運(yùn)行和分散仲裁的串行總線以及廣播通信的特點(diǎn),。CAN總線上任意節(jié)點(diǎn)可在任意時(shí)刻主動(dòng)地向網(wǎng)絡(luò)上其它節(jié)點(diǎn)發(fā)送信息而不分主次,因此可在各節(jié)點(diǎn)之間實(shí)現(xiàn)自由通信,。CAN總線協(xié)議已被國(guó)際標(biāo)準(zhǔn)化組織認(rèn)證,,技術(shù)比較成熟,控制的芯片已經(jīng)商品化,,性價(jià)比高,,特別適用于分布式測(cè)控系統(tǒng)之間的數(shù)據(jù)通訊。CAN總線插卡可以任意插在PC AT XT兼容機(jī)上,,方便地構(gòu)成分布式監(jiān)控系統(tǒng),。

CAN 2.0 總線具有如下顯著功能特性

  • 多主(master)架構(gòu)依據(jù)優(yōu)先權(quán)進(jìn)行總線訪問(wèn)

  • 無(wú)破壞性的基于優(yōu)先權(quán)的逐位仲裁

  • 借助驗(yàn)收濾波器的多地址幀傳遞

  • 遠(yuǎn)程數(shù)據(jù)請(qǐng)求

  • 全系統(tǒng)數(shù)據(jù)相容性

  • 錯(cuò)誤檢測(cè)和出錯(cuò)信令

  • 很遠(yuǎn)的數(shù)據(jù)傳輸距離(長(zhǎng)達(dá)10Km@5Kbps)

  • 高速的數(shù)據(jù)傳輸速率(高達(dá)1Mbps)

  • 高度實(shí)時(shí)性:每幀報(bào)文允許傳輸最高8個(gè)字節(jié)的數(shù)據(jù)

  • 發(fā)送期間丟失仲裁或出錯(cuò)而遭到破壞的幀可自動(dòng)重發(fā)

  • 暫時(shí)錯(cuò)誤和永久性故障節(jié)點(diǎn)的判別以及故障節(jié)點(diǎn)的自動(dòng)脫離

  • 脫離總線的節(jié)點(diǎn)不影響總線的正常工作

3. CAN 2.0總線協(xié)議的物理層電氣特性

MCU硬件只能提供3.3V/5V的TTL/CMOS電平信號(hào),而CAN總線上傳輸?shù)氖遣罘中盘?hào)。因此CAN2.0總線規(guī)范的物理層規(guī)定了CAN總線通信的物理層(Physical Layer, CAN收發(fā)器)實(shí)現(xiàn)要求:

  • 使用雙絞線通信,,一根為CAN_H,另一根為CAN_L.

  • 總線上的電平有顯性電平和隱性電平兩種,。

  • 總線上執(zhí)行邏輯上的線“與”時(shí),顯性電平的邏輯值為“0”,,隱性電平為“1”,。

“顯性”具有“優(yōu)先”的意味,只要有一個(gè)單元輸出顯性電平,,總線上即為顯性電平,。并且,“隱性”具有“包容”的意味,,只有所有的單元都輸出隱性電平,,總線上才為隱性電平。(顯性電平比隱性電平更強(qiáng))

在一個(gè)CAN網(wǎng)絡(luò)的最遠(yuǎn)兩個(gè)節(jié)點(diǎn)需要端接120Ω的匹配電阻,,才能保證信號(hào)傳輸,,進(jìn)行正常通信;

ISO11898和ISO-11519-2兩個(gè)不同的CAN總線標(biāo)準(zhǔn)在物理層上規(guī)范的通信電平對(duì)比如下:

常用的SO11898規(guī)范規(guī)定:

  • 邏輯“1” 時(shí),,總線呈現(xiàn)“隱性”狀態(tài),。VCAN-H和VCAN-L固定在平均電壓2.5V,即Vdiff近似為0,。

  • 邏輯“0” 時(shí),,總線呈現(xiàn)“顯性”狀態(tài)。VCAN-H為3.5V,VCAN-L為1.5V,,即Vdiff為2V

Tips:ISO11898和ISO-11519-2兩個(gè)不同的CAN總線標(biāo)準(zhǔn)的差別還包括:

  • ISO11898 是通信速度為 5kbps-1Mbps  的 CAN 高速通信標(biāo)準(zhǔn),。

  • ISO11519 是通信速度為 125kbps以下的 CAN 低速通信標(biāo)準(zhǔn),也就是容錯(cuò)CAN(LSFT CAN),。提供從5 Kbit/s到125 Kbits/s的波特率,。該標(biāo)準(zhǔn)允許在CAN總線連線失敗時(shí)CAN總線通信得以繼續(xù)進(jìn)行。在低速/容錯(cuò)CAN網(wǎng)絡(luò),,每種設(shè)備都有它自己的終端,。

  • 電平不同,匹配電阻不同,。由于終端的類型不同,,因此高速和低速/容錯(cuò)CAN設(shè)備不能在同一個(gè)網(wǎng)絡(luò)中使用。

Tips:不僅是 ISO,,SAE(Society of Automotive Engineers)等其它的組織,、團(tuán)體,、企業(yè)也對(duì) CAN 協(xié)議進(jìn)行了標(biāo)準(zhǔn)化,。其他標(biāo)準(zhǔn)介紹下:

Tips:通常使用CAN收發(fā)器都是符合ISO11898規(guī)范的,比如NXP的TJA1040/2/3/4/5/6以及TJA1050/1/2等;而符合ISO1111519-2規(guī)范的CAN收發(fā)器使用介紹,,只有NXP的TJA1055T,;

Tips:兩個(gè)CAN節(jié)點(diǎn)即使時(shí)同一個(gè)MCU中的兩個(gè)CAN控制器)間(通信必須使用CAN收發(fā)器,并連接匹配的端接電阻,,否則無(wú)法完成CAN報(bào)文傳輸,;

4. CAN 2.0總線協(xié)議消息報(bào)文詳解

4.1 CAN2.0總線的通信報(bào)文幀格式(Message Frame Format)

CAN2.0總線有兩種不同的CAN幀格式

  • 具有11位標(biāo)識(shí)符的CAN幀稱為:標(biāo)準(zhǔn)幀(Stand Frame)

  • 具有29位標(biāo)識(shí)符的CAN幀稱為:擴(kuò)展幀(Extend Frame)

CAN規(guī)范2.0B中引入了第二種報(bào)文格式--擴(kuò)展幀,同時(shí)兼容CAN規(guī)范2.0A的標(biāo)準(zhǔn)幀:

  • CAN控制器必須完全支持標(biāo)準(zhǔn)幀(收/發(fā)),,半雙工通信

  • CAN控制器必須支持接收擴(kuò)展幀

4.2 CAN2.0總線的通信報(bào)文幀類型(Message Frame Type)

CAN2.0總線規(guī)定了4種不同的通信報(bào)文幀類型,,用于不同的通信目的:

幀類型

用途

數(shù)據(jù)幀

從發(fā)送節(jié)點(diǎn)向其它節(jié)點(diǎn)發(fā)送數(shù)據(jù)

遠(yuǎn)程幀

向其它節(jié)點(diǎn)請(qǐng)求發(fā)送具有同一識(shí)別符的數(shù)據(jù)幀

錯(cuò)誤幀

當(dāng)檢測(cè)出錯(cuò)誤時(shí)向其它節(jié)點(diǎn)指明其已檢測(cè)到總線錯(cuò)誤

過(guò)載幀

接收單元通知其尚未做好接收準(zhǔn)備

4.3 CAN2.0總線的通信報(bào)文之標(biāo)準(zhǔn)/擴(kuò)展數(shù)據(jù)幀

CAN2.0總線的通信報(bào)文的數(shù)據(jù)幀是使用最大的幀類型,一幀完整的CAN 2.0總線數(shù)據(jù)幀報(bào)文包含如下7個(gè)場(chǎng)(Field,,也有譯作域):

  • 幀起始(Start Of Frame)

  • 仲裁場(chǎng)(Arbitration Field)

  • 控制場(chǎng)(Control Field )

  • 數(shù)據(jù)場(chǎng)(Data Field )

  • CRC場(chǎng)(CRC Filed)

  • 應(yīng)答場(chǎng)(ACK Field)

  • 幀結(jié)尾(End Of Frame)

CAN 2.0總線標(biāo)準(zhǔn)數(shù)據(jù)幀(Standard Data Frame)結(jié)構(gòu)如下:

  • 幀起始 :標(biāo)志數(shù)據(jù)幀和遠(yuǎn)程幀的起始,,它僅由一個(gè)“顯性”位構(gòu)成。

  • 仲裁場(chǎng):由標(biāo)識(shí)符(ID)和遠(yuǎn)程發(fā)送請(qǐng)求(RTR)位組成,。

    標(biāo)識(shí)符(Identifier)的長(zhǎng)度為11位,。這些位以ID-10至ID-0的順序發(fā)送,最低位為ID-0,,其中最高7位(ID-10 ~ID-4)必須不是全“隱性”,。

RTR位(Remote Transmission Request Bit)在數(shù)據(jù)幀中,必須是“顯性”的,,而在遠(yuǎn)程幀中,,RTR位必須是“隱性”的。

  • 控制場(chǎng):由6位組成,,包括兩個(gè)用于將來(lái)擴(kuò)展的保留位和4位數(shù)據(jù)長(zhǎng)度碼

  • 數(shù)據(jù)場(chǎng):由數(shù)據(jù)幀中被發(fā)送的數(shù)據(jù)組成,,它可包括0至8個(gè)字節(jié),每個(gè)字節(jié)包括8位,,其中首先發(fā)送最高有效位(MSB),。

  • CRC場(chǎng):包括CRC序列、CRC界定符,。

參加CRC校驗(yàn)的位場(chǎng)包括幀起始,、仲裁場(chǎng)、控制場(chǎng),、數(shù)據(jù)場(chǎng)(假若存在)在內(nèi)的無(wú)填充位流,。CRC序列后隨CRC界定符,它只包括一個(gè)“隱性”位,。

  • 應(yīng)答場(chǎng):為兩位長(zhǎng)度,,包括應(yīng)答間隙和應(yīng)答界定符。

在應(yīng)答場(chǎng)中發(fā)送站送出兩個(gè)“隱性”位,。一個(gè)正確地接收到有效報(bào)文的接收器,,在應(yīng)答間隙期間,,通過(guò)傳送一個(gè)“顯性”位將此信息報(bào)告給發(fā)送器(接收器發(fā)送“應(yīng)答”)。所有接收到匹配CRC序列的站,,在應(yīng)答間隙期間通過(guò)把“顯性”位寫入發(fā)送器的“隱性”位來(lái)報(bào)告此信息,。應(yīng)答界定符是應(yīng)答場(chǎng)的第二位,并且必須是“隱性”位,。因此,,應(yīng)答間隙被兩個(gè)“隱性”位(CRC界定符和應(yīng)答界定符)包圍。

  • 幀結(jié)束:每個(gè)數(shù)據(jù)幀和遠(yuǎn)程幀均是由7個(gè)“隱性”位組成的標(biāo)志序列界定的,。

CAN 2.0總線擴(kuò)展數(shù)據(jù)幀(Extend Data Frame)結(jié)構(gòu)如下:

相比標(biāo)準(zhǔn)數(shù)據(jù)幀,,擴(kuò)展數(shù)據(jù)幀的ID為29-bit,控制場(chǎng)的IDE-bit為1:

Tips:兩種幀格式的區(qū)別通過(guò)“控制場(chǎng)”(Control Field)中的“識(shí)別符擴(kuò)展”位(IDEbit)來(lái)實(shí)現(xiàn),;

Tips:兩種幀格式可出現(xiàn)在同一總線上,。

4.4 CAN2.0總線的通信報(bào)文之標(biāo)準(zhǔn)/擴(kuò)展遠(yuǎn)程幀

CAN2.0總線的通信報(bào)文的遠(yuǎn)程幀是用于請(qǐng)求遠(yuǎn)程CAN節(jié)點(diǎn)發(fā)送本節(jié)點(diǎn)所需的數(shù)據(jù),一幀完整的CAN 2.0總線遠(yuǎn)程幀報(bào)文包含如下6個(gè)場(chǎng)(Field,,也有譯作域):

  • 幀起始(Start Of Frame)

  • 仲裁場(chǎng)(Arbitration Field)

  • 控制場(chǎng)(Control Field )

  • CRC場(chǎng)(CRC Filed)

  • 應(yīng)答場(chǎng)(ACK Field)

  • 幀結(jié)尾(End Of Frame)

與數(shù)據(jù)幀一樣,,遠(yuǎn)程幀也有二種--標(biāo)準(zhǔn)遠(yuǎn)程幀、擴(kuò)展遠(yuǎn)程幀,;

除了沒(méi)有數(shù)據(jù)場(chǎng)(Data field),,以及RTR位是隱性(“1”)以外,遠(yuǎn)程幀與數(shù)據(jù)幀完全一樣,。

數(shù)據(jù)幀和遠(yuǎn)程幀的不同

  • 遠(yuǎn)程幀的RTR位為隱性位,,沒(méi)有數(shù)據(jù)段。

  • 沒(méi)有數(shù)據(jù)段的數(shù)據(jù)幀和遠(yuǎn)程幀可通過(guò)RTR位區(qū)別開(kāi)來(lái),。

遠(yuǎn)程幀沒(méi)有數(shù)據(jù)段,,數(shù)據(jù)長(zhǎng)度碼該如何表示?

  • 遠(yuǎn)程幀的數(shù)據(jù)長(zhǎng)度碼以所請(qǐng)求數(shù)據(jù)幀的數(shù)據(jù)長(zhǎng)度碼表示,;

4.5 CAN2.0總線的通信報(bào)文之錯(cuò)誤幀

CAN2.0總線協(xié)議中規(guī)定:當(dāng)節(jié)點(diǎn)檢測(cè)到一個(gè)或多個(gè)由CAN標(biāo)準(zhǔn)所定義的錯(cuò)誤時(shí),,就產(chǎn)生一個(gè)錯(cuò)誤幀。

錯(cuò)誤幀由錯(cuò)誤標(biāo)志和錯(cuò)誤界定符構(gòu)成,。

錯(cuò)誤標(biāo)志包括主動(dòng)錯(cuò)誤標(biāo)志和被動(dòng)錯(cuò)誤標(biāo)志兩種:

  • 主動(dòng)錯(cuò)誤標(biāo)志:6 個(gè)位的顯性位,。

  • 被動(dòng)錯(cuò)誤標(biāo)志:6 個(gè)位的隱性位。

錯(cuò)誤界定符

錯(cuò)誤界定符由 8 個(gè)位的隱性位構(gòu)成,。

4.6 CAN2.0總線的通信報(bào)文之過(guò)載幀

CAN2.0總線協(xié)議中規(guī)定:過(guò)載幀用于在先行和后續(xù)的數(shù)據(jù)幀(或遠(yuǎn)程幀)之間提供一附加的延時(shí),。

過(guò)載幀由過(guò)載標(biāo)志和過(guò)載界定符構(gòu)成。

  • 過(guò)載標(biāo)志

6 個(gè)位的顯性位,。過(guò)載標(biāo)志的構(gòu)成與主動(dòng)錯(cuò)誤標(biāo)志的構(gòu)成相同,。

  • 過(guò)載界定符

8 個(gè)位的隱性位。過(guò)載界定符的構(gòu)成與錯(cuò)誤界定符的構(gòu)成相同,。

4.7 CAN2.0總線的通信報(bào)文之幀間空間

幀間空間是用于分隔數(shù)據(jù)幀和遠(yuǎn)程幀,。數(shù)據(jù)幀和遠(yuǎn)程幀可通過(guò)插入幀間隔將本幀與前面的任何幀(數(shù)據(jù)幀,、遠(yuǎn)程幀,、錯(cuò)誤幀,、過(guò)載幀)分開(kāi)。

過(guò)載幀和錯(cuò)誤幀前不能插入幀間隔。

幀間空間的組成:

間歇場(chǎng) : 3 個(gè)位的隱性位,。

總線空閑場(chǎng) : 隱性電平,無(wú)長(zhǎng)度限制(0 亦可),。

本狀態(tài)下,,可視為總線空閑,要發(fā)送的節(jié)點(diǎn)可開(kāi)始訪問(wèn)總線,。

暫停發(fā)送場(chǎng)發(fā)送暫時(shí)停止) :8 個(gè)位的隱性位,。

只在處于被動(dòng)錯(cuò)誤狀態(tài)的節(jié)點(diǎn)剛發(fā)送一個(gè)消息后的幀間隔中包含。

5. CAN 2.0總線協(xié)議的總線仲裁(Bus Arbitration)

總線空閑時(shí),,任何節(jié)點(diǎn)可以開(kāi)始發(fā)送報(bào)文,;總線上每條報(bào)文都具有唯一的一個(gè)11位或29位標(biāo)識(shí)符;報(bào)文標(biāo)識(shí)符的值越小,,報(bào)文具有越高的優(yōu)先權(quán),;

多個(gè)節(jié)點(diǎn)同時(shí)發(fā)送時(shí),總線在“仲裁場(chǎng)”進(jìn)行“逐位仲裁” ,;傳送高優(yōu)先級(jí)報(bào)文的節(jié)點(diǎn)贏得仲裁,,并繼續(xù)傳輸報(bào)文;失去仲裁的節(jié)點(diǎn)在總線空閑時(shí)重新傳送,。

在總線空閑態(tài),,最先開(kāi)始發(fā)送消息的單元獲得發(fā)送權(quán)。多個(gè)單元同時(shí)開(kāi)始發(fā)送時(shí),,各發(fā)送單元從仲裁段的第一位開(kāi)始進(jìn)行仲裁,。連續(xù)輸出顯性電平最多的單元可繼續(xù)發(fā)送。

具有相同 ID 的數(shù)據(jù)幀和遠(yuǎn)程幀在總線上競(jìng)爭(zhēng)時(shí),,仲裁段的最后一位(RTR)為顯性位的數(shù)據(jù)幀具有優(yōu)先權(quán),,可繼續(xù)發(fā)送。

標(biāo)準(zhǔn)格式 ID 與具有相同 ID 的遠(yuǎn)程幀或者擴(kuò)展格式的數(shù)據(jù)幀在總線上競(jìng)爭(zhēng)時(shí),,標(biāo)準(zhǔn)格式的 RTR 位為顯性位的具有優(yōu)先權(quán),,可繼續(xù)發(fā)送。

6. CAN 2.0總線協(xié)議的位流編碼(Bit Coding)與位填充(Bit Stuffing)

CAN 2.0總線協(xié)議規(guī)定位流編碼采用“不歸零”(NRZ)方法編碼,。在完整的位時(shí)間里,,位電平要么為“顯性”,要么為“隱性”,;

各個(gè)位的開(kāi)頭或者結(jié)尾都沒(méi)有附加同步信號(hào),。發(fā)送單元以與位時(shí)序同步的方式開(kāi)始發(fā)送數(shù)據(jù),。接收單元?jiǎng)t根據(jù)總線上電平的變化進(jìn)行同步并進(jìn)行接收工作。

另外,,發(fā)送單元和接收單元存在的時(shí)鐘頻率誤差及傳輸路徑上的(電纜,、驅(qū)動(dòng)器等)相位延遲會(huì)引起同步偏差。因此接收單元通過(guò)硬件同步或者再同步的方法調(diào)整時(shí)序進(jìn)行接收,。

為了保證通信過(guò)程中時(shí)鐘有足夠的跳邊沿以實(shí)現(xiàn)總線各節(jié)點(diǎn)重新同步,;要求CAN控制器采取“位填充”(Bit Stuffing):

當(dāng)發(fā)送器檢測(cè)到位流里有5個(gè)連續(xù)相同值的位,便會(huì)自動(dòng)在位流里插入一補(bǔ)充位,,接收器會(huì)自動(dòng)刪除這個(gè)補(bǔ)充位,。

最多經(jīng)過(guò)5個(gè)位時(shí)間,各節(jié)點(diǎn)可以重同步,;

能夠通過(guò)總線上的錯(cuò)誤標(biāo)志(Error Flag  6個(gè)連續(xù)相同的位)反映發(fā)送錯(cuò)誤,。

在固定的位場(chǎng)中不使用位填充,只對(duì)在發(fā)送數(shù)據(jù)幀和遠(yuǎn)程幀時(shí),,SOF~CRC 場(chǎng)間的數(shù)據(jù)進(jìn)行位填充,。

下圖為一個(gè)具體的位填充實(shí)現(xiàn)結(jié)果,在發(fā)送系列的BIT8和BIT16分別自動(dòng)加入了一個(gè)隱性位(邏輯"1"):

7. CAN 2.0總線協(xié)議的錯(cuò)誤檢測(cè)機(jī)制

為了保證通信的正常,,CAN 2.0 總線協(xié)議總線中各節(jié)點(diǎn)需要采取以下措施進(jìn)行錯(cuò)誤檢測(cè):

  • 監(jiān)視(對(duì)發(fā)送位的電平與被監(jiān)控的總線電平進(jìn)行比較)

  • 循環(huán)冗余檢查

  • 位填充

  • 報(bào)文格式檢查

CAN 2.0 總線協(xié)議的錯(cuò)誤檢測(cè)機(jī)制具有以下屬性:

  • 檢測(cè)到所有的全局錯(cuò)誤

  • 檢測(cè)到發(fā)送器所有的局部錯(cuò)誤

  • 可以檢測(cè)到報(bào)文里多達(dá)5個(gè)任意分布的錯(cuò)誤

  • 檢測(cè)到報(bào)文里長(zhǎng)度低于15-bit的突發(fā)性錯(cuò)誤

  • 檢測(cè)到報(bào)文里任一奇數(shù)個(gè)錯(cuò)誤

  • 對(duì)于沒(méi)有被檢測(cè)到的錯(cuò)誤報(bào)文,,其剩余的錯(cuò)誤可能性概率低于:報(bào)文錯(cuò)誤率4.7 x 10-11

7.1 CAN 2.0 總線節(jié)點(diǎn)的錯(cuò)誤類型

CAN 2.0 總線協(xié)議定義參與通信的CAN節(jié)點(diǎn)錯(cuò)誤類型如下:

  • 位錯(cuò)誤(Bit  Error)

發(fā)送的位值和總線監(jiān)視的位值不相符合時(shí),檢測(cè)到一個(gè)位錯(cuò)誤(除仲裁場(chǎng),、應(yīng)答場(chǎng)外),;

  • 填充錯(cuò)誤(Stuff Error)

    如果在使用位填充編碼的位流中,出現(xiàn)了第六個(gè)連續(xù)相同的位電平,,將檢測(cè)到一個(gè)位填充錯(cuò)誤,;

  • 形式錯(cuò)誤 (Form Error)

   當(dāng)一個(gè)固定形式的位場(chǎng)含有一個(gè)或多個(gè)非法位時(shí),將檢測(cè)到一個(gè)形式錯(cuò)誤,;

  • 應(yīng)答錯(cuò)誤 (Acknowledgment Error)

    在應(yīng)答間隙(ACK SLOT)所監(jiān)視的位不為“顯性”,,則會(huì)檢測(cè)到一個(gè)應(yīng)答錯(cuò)誤;

  • CRC 錯(cuò)誤(CRC Error)

    如果接收器的CRC結(jié)果和發(fā)送器的CRC結(jié)果不同,,將檢測(cè)到一個(gè)CRC錯(cuò)誤,。

7.2 CAN 2.0 總線節(jié)點(diǎn)的故障界定

CAN 2.0 總線節(jié)點(diǎn)使用兩種錯(cuò)誤計(jì)數(shù)器進(jìn)行故障界定:

  • 發(fā)送錯(cuò)誤計(jì)數(shù)(TEC)

  • 接收錯(cuò)誤計(jì)數(shù)(REC)

CAN 2.0 總線協(xié)議規(guī)定了12條錯(cuò)誤計(jì)數(shù)規(guī)則:

  • 節(jié)點(diǎn)發(fā)送時(shí)產(chǎn)生錯(cuò)誤,將導(dǎo)致TEC加8;

  • 節(jié)點(diǎn)成功發(fā)送1幀報(bào)文后,,TEC將減1 ,,直到0;

  • 節(jié)點(diǎn)接收時(shí)檢測(cè)到錯(cuò)誤,將導(dǎo)致REC加8;

  • 節(jié)點(diǎn)成功接收1幀報(bào)文后,,REC將減1,,直到0;

7.3 CAN 2.0 總線節(jié)點(diǎn)的狀態(tài)

根據(jù)以上錯(cuò)誤檢測(cè)機(jī)制和故障界定方法,CAN 2.0總線節(jié)點(diǎn)存在以下三種狀態(tài):

  • 錯(cuò)誤主動(dòng)(Error Active):“錯(cuò)誤主動(dòng)”的節(jié)點(diǎn)可以正常地參與總線通訊,,并在錯(cuò)誤被檢測(cè)到時(shí)發(fā)出主動(dòng)錯(cuò)誤標(biāo)志,。

  • 錯(cuò)誤被動(dòng)(Error Passive):“錯(cuò)誤被動(dòng)”的節(jié)點(diǎn)不允許發(fā)送主動(dòng)錯(cuò)誤標(biāo)志,。“錯(cuò)誤被動(dòng)”的單元參與總線通訊,,在錯(cuò)誤被檢測(cè)到時(shí)只發(fā)出被動(dòng)錯(cuò)誤標(biāo)志,。

  • 總線關(guān)閉(Bus Off):“總線關(guān)閉”的單元不允許在總線上有任何的影響 (比如,關(guān)閉輸出驅(qū)動(dòng)器),。

Tips:一個(gè)特例:如果CAN總線上只有一個(gè)節(jié)點(diǎn),,該節(jié)點(diǎn)發(fā)送數(shù)據(jù)幀后得不到響應(yīng)(ACK),其發(fā)送計(jì)數(shù)器TEC最大只能計(jì)到128,,即該節(jié)點(diǎn)只能進(jìn)入錯(cuò)誤被動(dòng)狀態(tài),,而不會(huì)進(jìn)入總線關(guān)閉狀態(tài),;

CAN通信節(jié)點(diǎn)的狀態(tài)分為暫時(shí)錯(cuò)誤(Error active和Error Passive)和永久性故障(Bus Off),;

永久性故障節(jié)點(diǎn)自動(dòng)脫離總線,防止網(wǎng)絡(luò)鎖定,。

處于暫時(shí)錯(cuò)誤(Error active和Error Passive)狀態(tài)的CAN 2.0總線節(jié)點(diǎn),,其狀態(tài)可以根據(jù)其發(fā)送錯(cuò)誤計(jì)數(shù)器(TEC)和接收錯(cuò)誤計(jì)數(shù)器(REC)值的變化,自動(dòng)切換,,而進(jìn)入永久性故障(Bus Off))狀態(tài)的節(jié)點(diǎn),,必須進(jìn)入重新初始化才能恢復(fù):

Tips:Bus Off恢復(fù)需要滿足于以下兩個(gè)條件:

①在bus off發(fā)生后,總線上已經(jīng)檢測(cè)到了128次11個(gè)連續(xù)的隱性位(邏輯"1"),;

②用戶程序請(qǐng)求恢復(fù),,通常MCU中的CAN控制器都可以支持自動(dòng)恢復(fù)和手動(dòng)恢復(fù)兩種方式。CAN總線的bus off恢復(fù)需要滿足整車的網(wǎng)絡(luò)管理規(guī)范,。

8. CAN 2.0總線協(xié)議的位定時(shí)與同步

8.1 CAN 2.0 總線協(xié)議的位時(shí)間定義與采用

CAN 2.0 總線協(xié)議定義一個(gè)標(biāo)稱的位時(shí)間分為:同步段,、傳播段、相位緩沖段1,、相位緩沖段2,。

同步段用于同步各節(jié)點(diǎn),正常情況下跳變沿落在此段內(nèi),;

傳播段用于補(bǔ)償網(wǎng)絡(luò)內(nèi)的傳輸延時(shí),;

采樣點(diǎn)時(shí)刻讀取的電平代表這個(gè)位的電平;

CAN總線的時(shí)間份額通常由振蕩器周期分頻而得

    各時(shí)間段長(zhǎng)度為:同步段1份額,,傳播段1~8份額,,相位緩沖段1,1~8份額,,相位緩沖段2,,Max(相位緩沖段1,信息處理時(shí)間),,其中信息處理時(shí)間<=2份額,。一個(gè)位的總時(shí)間份額數(shù)為8~25,,可以編程靈活配置。

8.2 CAN 2.0 總線協(xié)議的同步機(jī)制

CAN 2.0 總線協(xié)議定義位同步的規(guī)則如下:

    (1)在總線空閑時(shí),,只要檢測(cè)到一個(gè)隱性到顯性的邊沿,,就執(zhí)行一次硬同步(以該邊沿作為同步段)

    (2)在總線不空閑時(shí),若邊沿落在同步段以外,,則按其與同步段之差執(zhí)行再同步:

  • 再同步情況①:邊沿落在同步段以后,,則把所差份額加到相位緩沖段1

  • 再同步情況② :邊沿落在同步段以前,則從相位緩沖段2減去所差份額

    再同步所加減的份額有個(gè)上限,,該上限可取值1~4個(gè)時(shí)間份額,,但不可大于相位緩沖段1。

      (3)因?yàn)橛形惶畛湟?guī)則,,所以可用于再同步的邊沿在一定時(shí)間內(nèi)總會(huì)出現(xiàn),。最大可能時(shí)間間隔是29個(gè)位。

Tips:一個(gè)位時(shí)間內(nèi)只能執(zhí)行一次同步,,且一般只把隱性到顯性的邊沿用于同步,。

總結(jié)

本文詳細(xì)介紹了BOSCH的CAN 2.0總線協(xié)議,主要包括CAN總線主要特性,、物理層電氣特性,、幀格式與幀類型、總線仲裁機(jī)制,、位流編碼,、位填充、錯(cuò)誤檢測(cè)機(jī)制,、錯(cuò)誤類型,、故障界定與節(jié)點(diǎn)狀態(tài)以及位定時(shí)與同步等。

除了CAN 2.0外,,BOSCH還定義了一種與之兼容的CAN-FD總線協(xié)議--能夠提供更高的速率(數(shù)據(jù)場(chǎng)通信速率可達(dá)8/10Mbit/s)和更大的報(bào)文幀有效載荷(支持最大64字節(jié)),,以滿足汽車電子日益發(fā)展對(duì)ECU間高速通信的需求,我將在下篇文章中給大家介紹,,敬請(qǐng)關(guān)注,!

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多