《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 業(yè)界動態(tài) > CAN總線基礎(chǔ)知識(三)

CAN總線基礎(chǔ)知識(三)

2015-05-08

1.CAN協(xié)議

1.1 幀類型

通訊時使用下面5個類型的幀:

    數(shù)據(jù)幀

    遙控幀

    錯誤幀

    過載幀

    幀間空隙

    在所有這些幀中,,數(shù)據(jù)幀遙控幀由用戶設(shè)置,而其它幀則由CAN硬件設(shè)置,。

    數(shù)據(jù)和遙控幀有兩種格式:標(biāo)準和擴展格式。標(biāo)準格式有11bit的ID,,而擴展格式則是29bit的ID,。

    每個幀的用處見表6,每個幀的結(jié)構(gòu)見圖10到圖14

表6 幀類型和每種類型幀的作用


捕獲.PNG

捕獲.PNG

2.2 數(shù)據(jù)幀

數(shù)據(jù)幀由發(fā)送單元使用,用來發(fā)送信息給接收單元,,這是用戶操作的基本幀,。

數(shù)據(jù)幀有7個域組成。圖15顯示了數(shù)據(jù)幀的結(jié)構(gòu),。

(1)幀開始(SOF):這個域表示數(shù)據(jù)幀的開始,。

(2)仲裁域:這個域表示一個幀的優(yōu)先級

(3)控制域:這個域表示保留位和數(shù)據(jù)字節(jié)數(shù)

(4)數(shù)據(jù)域:這是數(shù)據(jù)內(nèi)容,0-8個字節(jié)的數(shù)據(jù)能被發(fā)送

(5)CRC域:這個域用于檢查幀的傳輸錯誤,。

(6)ACK域:是對幀已經(jīng)被正常接收的一個證實,。

(7)幀結(jié)束:指示數(shù)據(jù)幀結(jié)束

捕獲.PNG

(1)幀開始(SOF),對標(biāo)準的或擴展的格式都是一樣的,。它指示一幀的開始,由1bit的顯性位組成,。

捕獲.PNG

顯性電平和隱性電平:

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

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

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

 

(2)仲裁域,,這個域表示數(shù)據(jù)的優(yōu)先級別,。這個域的結(jié)構(gòu),對標(biāo)準和擴展的格式是有差別的,。

捕獲.PNG

注1:關(guān)于ID:

    標(biāo)準格式的ID有11bit,,從ID28到ID18被依次發(fā)送,禁止高7位全為隱性,。(禁止設(shè)定:ID=1111111xxxx),。這樣總共有(2048-16)個ID能被使用。

    擴展格式的ID有29個bit,?;綢D從ID28到ID18,擴展ID由ID17到ID0表示,,基本ID和標(biāo)準格式ID相同,,禁止高7bit全都為隱性,(禁止設(shè)定:基本ID=1111111xxxx)。這樣總共有(2048-16)個ID能被使用,。

    在任何情況下,,總線上不可能有多個設(shè)備在同一時刻使用同一個ID傳輸數(shù)據(jù)幀。

(3)控制域,,占6個bit,,指示要傳輸信息的數(shù)據(jù)字節(jié)數(shù),這個域的結(jié)構(gòu),,對標(biāo)準和擴展的格式是有差別的,。如圖18所示

捕獲.PNG

注1:保留位(r0,r1),,保留位必須以顯性電平傳送,,然而,在接收側(cè)可以接收顯性,、隱性集任意組合的電平,。

    注2:數(shù)據(jù)長度碼(DLC),數(shù)據(jù)長度碼與數(shù)據(jù)的字節(jié)對應(yīng)關(guān)系見表7所示,。數(shù)據(jù)的字節(jié)數(shù)必須是0-8個字節(jié),,但接收方對DLC=9-15的情況并不視為錯誤。

捕獲.PNG

(4)數(shù)據(jù)域,,對標(biāo)準的或擴展的格式都是一樣的,。這個域是傳輸?shù)臄?shù)據(jù),可以是0到8個字節(jié),,字節(jié)數(shù)載控制域中指明,。數(shù)據(jù)輸出開始于MSB。如圖19所示:

捕獲.PNG

(5)CRC域,,對標(biāo)準的或擴展的格式都是一樣的,。這個域用來檢查幀是否有傳輸錯誤,它由15bit CRC碼和一個bitCRC定界符(delimiter)(separating bit分隔bit)

捕獲.PNG

CRC的產(chǎn)生方法是采用下面的多項式:,,CRC的計算范圍是SOF,、仲裁域、控制域,、數(shù)據(jù)域,。在接收側(cè),會對接收到的數(shù)據(jù)幀的這些域進行CRC計算,,如果計算結(jié)果與收到的CRC不一致,,則表明存在傳輸錯誤。

(6)ACK域,,是對一幀已被正常接收的一個確認信號,,由2個bit組成,,一個是ACK的slot,一個是ACK的定界符(delimiter),,如圖21所示:

捕獲.PNG

注1:發(fā)送單元的ACK域,,發(fā)送單元以隱性bit發(fā)送ACK slot和ACK 的delimiter。

    注2:接收單元的ACK域,,正確接收到信息的接收單元在接收幀的ACK slot里發(fā)送一個顯性bit,,以通知發(fā)送單元其已經(jīng)正確接收完畢,這又稱“sending ACK”或“returning ACK”,。

“Returning an ACK”:

    所有接收單元只要不是處于bus-off或休眠狀態(tài),,只有正確接收信息的單元才能發(fā)送ACK。發(fā)送單元并不發(fā)送ACK,。如果總線上除了發(fā)送單元,,沒有其它 單元能接收信息,則No ACK被返回,。為了通訊的建立,,除了發(fā)送單元外,至少需要有一個單元能夠接收信息,。如果總線上有2個或更多個單元能接收到信息,如果它們中任意一個正常接 收到信息,,則會有ACK被返回,。

(7)幀結(jié)束,指示一幀結(jié)束,,由7個隱性位組成,。如圖22

捕獲.PNG

1.3 遙控幀

    遙控幀是接收單元請求發(fā)送單元發(fā)送一個信息,遙控幀有6個域組成,。如圖23顯示的那樣,,除了沒有數(shù)據(jù)域外其它與數(shù)據(jù)幀的結(jié)構(gòu)是一樣的。

(1) 幀開始(SOF):這個域表示數(shù)據(jù)幀的開始,。

(2) 競爭域:這個域表示數(shù)據(jù)的優(yōu)先級,,具有同樣ID的數(shù)據(jù)幀被請求。

(3) 控制域:這個域表示保留位和數(shù)據(jù)字節(jié)數(shù)

(4) CRC域:這個域用于檢查幀的傳輸錯誤,。

(5) ACK域:是對幀已經(jīng)被正常接收的一個證實,。

(6) 幀結(jié)束:指示遙控幀的結(jié)束

捕獲.PNG

遙控幀和數(shù)據(jù)幀:

數(shù)據(jù)幀和遙控幀之間的不同

遙控幀沒有數(shù)據(jù)域,在仲裁域里的RTR位是隱性電平,,而數(shù)據(jù)幀RTR則為顯性的,。

沒有數(shù)據(jù)的數(shù)據(jù)幀與遙控幀可以通過RTR為來區(qū)分

遙控幀沒有數(shù)據(jù)域,其數(shù)據(jù)長度碼用來干什么,?

遙控幀的數(shù)據(jù)長度碼的值表示對應(yīng)請求的數(shù)據(jù)幀的數(shù)據(jù)長度碼,。

沒有數(shù)據(jù)域的數(shù)據(jù)幀用來干什么,?

例如,數(shù)據(jù)幀可以被各單元用來作為周期連接確認/應(yīng)答,,或者仲裁域本身帶有實質(zhì)性信息,。

1.4 錯誤幀

    這個幀用來通知在傳輸期間發(fā)生了一個錯誤,錯誤幀由一個錯誤標(biāo)志和一個錯誤定界符組成,,錯誤幀由CAN的硬件來發(fā)送,。圖24顯示了錯誤幀的結(jié)構(gòu)。

     (1) 錯誤標(biāo)志:有2種錯誤標(biāo)志類型:主動錯誤和被動錯誤標(biāo)志

      a)主動錯誤標(biāo)志:6個顯性位

      b) 被動錯誤標(biāo)志:6個隱性位

     (2) 錯誤定界符:由8個隱性位組成,。

捕獲.PNG

注1:錯誤標(biāo)志重疊:取決于連接到總線上的各單元檢測出錯誤的時間,,錯誤標(biāo)志可能一個重疊在另一個上,總共可達12bit長度,。

    注2:主動錯誤標(biāo)志:處于主動錯誤狀態(tài)的單元檢測出錯誤時輸出的錯誤標(biāo)志,。

    注3:被動錯誤標(biāo)志:處于被動錯誤狀態(tài)的單元檢測出錯誤時輸出的錯誤標(biāo)志。

1.5 過載幀

    這個幀被接收單元用來通知還沒有準備好接收幀,。它由一個過載標(biāo)志和一個過載定界符組成,。圖25顯示了錯誤幀的結(jié)構(gòu)。

捕獲.PNG

(1) 過載標(biāo)志:由6個顯性位組成,,過載標(biāo)志與錯誤幀的主動錯誤標(biāo)志具有相同的結(jié)構(gòu),。

    (2) 過載定界符:由8個隱性位組成,過載定界符與錯誤幀的錯誤定界符具有相同的結(jié)構(gòu),。

    注1:錯誤標(biāo)志重疊:向錯誤標(biāo)志一樣,,取決于時間,過載標(biāo)志可能一個重疊在另一個上,,總共可達12bit長度,。

1.6 幀間間隔

    這個幀用來隔開數(shù)據(jù)幀和遙控幀。數(shù)據(jù)和遙控幀可通過插入幀間間隔與前面?zhèn)鬏數(shù)娜魏螏〝?shù)據(jù)幀,、遙控幀,、錯誤幀、過載幀)分開,。

過載幀和錯誤幀前不能插入幀間間隔,。如圖26所示。

捕獲.PNG

(1)間隔:由3個隱性位組成,。在間隔期間如果檢測到顯性電平,,則必須發(fā)送過載幀,然而,,如果間隔的第3bit是顯性電平,,間隔被認為是SOF

(2)總線空閑:是隱性電平,長度沒有限制(它可以是0bit長),。當(dāng)總線處于這種狀態(tài)的時候,,總線被認為是自由空閑的,,任何單元都可以啟動發(fā)送信息。

(3)暫停傳輸(傳輸暫停期):有8個隱性位組成,。只在處于被動錯誤狀態(tài)的單元剛發(fā)送一個消息后的幀間隔中包含的段,。

1.7 優(yōu)先級的決定

    在總線空閑狀態(tài),最先開始發(fā)送消息的單元獲得發(fā)送權(quán),。

    多個單元同時開始發(fā)送時,,各發(fā)送單元從仲裁域的第一位開始進行仲裁。連續(xù)輸出顯性電平最多的單元可繼續(xù)發(fā)送,。丟失競爭的單元在下一bit進入接收操作,。

    仲裁的過程如圖27所示。

捕獲.PNG

(1)數(shù)據(jù)幀和遙控幀的優(yōu)先級

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

    數(shù)據(jù)幀和遙控幀的仲裁過程如圖28所示,。

捕獲.PNG

(2)標(biāo)準格式和擴展格式的優(yōu)先級

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

    標(biāo)準格式和擴展格式的仲裁過程如圖29所示,。

捕獲.PNG

1.8 位填充

    位填充是一種周期性重同步收/發(fā)操作的功能,為了防止接收節(jié)點間時序由于累積而導(dǎo)致的錯誤,,如果5個bit持續(xù)了同樣的電平,,則添加1個bit的反向數(shù)據(jù)位。

    如圖30顯示的位填充機制:


捕獲.PNG

(1)發(fā)送單元的操作

    在發(fā)送數(shù)據(jù)幀和遙控幀的時候,,SOF-CRC段間的數(shù)據(jù),相同電平如果持續(xù)5bit,,在下一bit(第6bit)則要插入1bit與前5bit反向的電平,。

(2)接收單元的操作

    在接收數(shù)據(jù)幀和遙控幀的時候,SOF-CRC段間的數(shù)據(jù),,相同電平如果持續(xù)5bit,,需要刪除下一bit(第6bit)再接收。如果這第6bit的電平與前5bit相同,,則被視為錯誤,,且發(fā)送錯誤幀。

1.9 錯誤的種類

    有5種類型的錯誤,,可能有2個或更多的錯誤同時發(fā)生:

位錯誤

填充錯誤

CRC錯誤

格式錯誤

ACK錯誤

    表8列出了這些錯誤的種類,、內(nèi)容、錯誤檢測幀和檢測單元,。

捕獲.PNG

位錯誤由向總線上輸出數(shù)據(jù)幀,、遙控幀,、錯誤幀、過載幀的單元和輸出ACK的單元,、輸出錯誤的單元來檢測,。

在仲裁段輸出隱性電平,但檢測出顯性電平時,,將被視為仲裁失利,,而不是位錯誤。

在仲裁段作為填充位輸出隱性電平時,,但檢測出顯性電平時,,將不視為位錯誤,而是填充錯誤,。

發(fā)送單元在ACK 段輸出隱性電平,,但檢測到顯性電平時,將被判斷為其它單元的ACK 應(yīng)答,,而非位錯誤,。

輸出被動錯誤標(biāo)志(6 個位隱性位)但檢測出顯性電平時,將遵從錯誤標(biāo)志的結(jié)束條件,,等待檢測出連續(xù)相同6 個位的值(顯性或隱性),,并不視為位錯誤。

(2) 格式錯誤

即使接收單元檢測出EOF(7 個位的隱性位)的最后一位(第8 個位)為顯性電平,,也不視為格式錯誤,。

即使接收單元檢測出數(shù)據(jù)長度碼(DLC)中9~15 的值時,也不視為格式錯誤,。

1.10 錯誤幀的輸出時序

    檢測到發(fā)生錯誤的單元輸出一個錯誤標(biāo)志,,以通知其它單元。

    處于主動錯誤狀態(tài)的單元輸出的錯誤標(biāo)志為主動錯誤標(biāo)志,;處于被動錯誤狀態(tài)的單元輸出的錯誤標(biāo)志為被動錯誤標(biāo)志,。

    發(fā)送單元發(fā)送完錯誤幀之后,將再次發(fā)送數(shù)據(jù)幀或遙控幀,。

    錯誤標(biāo)志輸出時序如表9:

捕獲.PNG

1.11 位時序

    在沒有重新同步情況下,,發(fā)送單元每秒傳輸?shù)奈粩?shù)稱之為位速率。1位由下面4個段組成,。

  • 同步段(SS)

  • 傳播時間段(PTS)

  • 相位緩沖段1(PBS1)

  • 相位緩沖段2(PBS2)

    這些段又由稱之為Time Quantum(以下稱為Tq)的最小時間單位構(gòu)成,。

    1位分為4個段,每個段由若干個Tq構(gòu)成,,這稱為位時序,。

    1位由多少個Tq構(gòu)成、每個段由多少個Tq構(gòu)成等是可以設(shè)定的,。通過設(shè)置bit時序,。使得可以設(shè)定一個采樣點以使總線上多個單元可同時采樣,,所謂采樣點就是在這一時刻總線上的電平被鎖存,這個鎖存的電平作為位的值,。采樣點的位置在PBS1的結(jié)束處,。

    表10描述了各段的作用和Tq 數(shù)。1個位的構(gòu)成如圖31所示,。

捕獲.PNG

注1:IPT代表信息處理時間,,是以采樣點作為起始的時間段,用于計算后續(xù)位的位電平,。這是硬件在一個采樣點后立刻改變位的電平所必須要的,。這個時間等于或小于2Tq,,。

    注2:因為采樣點是處于PBS1結(jié)束處,,所以IPT和PBS2重疊。當(dāng)IPT = 2Tq時,,PBS2不可能選為1,,因此,PBS2必須是2到8Tq,。

    注3:重新同步的結(jié)果使相位緩沖段1增長,,或使相位緩沖段2 縮短。相位緩沖段加長或縮短的數(shù)量有一個上限,,此上限由SJW(重新同步跳轉(zhuǎn)寬度)給定,。重新同步跳轉(zhuǎn)寬度應(yīng)設(shè)置于1和最小值之間(此最小值為4*PBS1)。

    可以從一位值轉(zhuǎn)換到另一位值的過渡過程得到時鐘信息,。這里有一個屬性,,即:只有后續(xù)位的一固定最大數(shù)值才具有相同的數(shù)值。這個屬性使總線單元在幀期間重新同步于位流成為可能,??捎糜谥匦峦降膬蓚€過渡過程之間的最大的長度為29個位時間。

捕獲.PNG

1.12 同步是如何獲得的,?

    CAN總線的通訊是采用NRZ(Non-Return to Zero,非歸0)碼,,數(shù)據(jù)本身并不攜帶時鐘信息,,也即在每一位的開始或結(jié)束沒有同步信號,發(fā)送單元以位時序同步的方式開始發(fā)送幀數(shù)據(jù),,接收單元根據(jù)總線電平的變化進行同步并進行接收工作,。

    然而,發(fā)送器和接收器之間由于彼此的時鐘誤差或傳輸路徑的相位誤差可能會失去同步關(guān)系,,因此接收單元在接收幀的時候,,必須通過硬件同步或重新同步調(diào)整它的操作時序,。

1.13 硬件同步

    在總線空閑狀態(tài)時,接收單元檢測到SOF,,就會執(zhí)行這個同步調(diào)整過程,。“隱式”電平跳變到“顯式”電平的邊緣的時間點被認為是SS,,而不管SJW的值

    圖32顯示了硬件同步機制,。

捕獲.PNG

  • 如果沿出現(xiàn)在SS里,沿的相位誤差e=0,;

  • 如果沿位于采集點(PBS1結(jié)束之前)之前,,e>0;

  • 如果沿位于采集點之后,,e<0,;

1.14 重新同步機制

    在接收過程中檢測到總線電平發(fā)生了改變時執(zhí)行重新同步操作。

    每當(dāng)檢測到一個邊沿(總線電平的改變),,收發(fā)單元根據(jù)SJW值通過增加PBS1段或減少PBS2段,,來調(diào)整同步。但,,如果發(fā)生了超出SJW值的誤差時,,最大調(diào)整量不能超過SJW值。

    圖33顯示了重新同步機制,。

捕獲.PNG

1.15 調(diào)整同步的規(guī)則

    硬件同步和再同步的執(zhí)行遵從如下規(guī)則:

    1) 在1個位時間里(或者說在2個采樣點之間),,只允許一個同步(或者說只進行一次同步調(diào)整)。

    2) 只有當(dāng)采樣點之前的總線電平和邊沿后的總線電平不同時,,該邊沿才能用于調(diào)整同步,。

    3) 如果出現(xiàn)隱性電平到顯性電平變化的邊沿,且條件(1)和(2)滿足,,將進行同步,。

    4) 如果在幀間間隙期間發(fā)生隱性電平到顯性電平的信號邊沿(除了間隙里的第一位),則總會執(zhí)行硬件同步,。

    5) 如果發(fā)生從所有其它隱性電平到顯性電平的信號邊沿,,則執(zhí)行再同步。

    6) 如果發(fā)送單元自身輸出的顯性電平被檢測到有延遲,,則不執(zhí)行再同步,。


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