溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

SylixOS CAN總線報(bào)文淺析

發(fā)布時(shí)間:2020-05-26 03:57:30 來(lái)源:網(wǎng)絡(luò) 閱讀:725 作者:Best_CC 欄目:網(wǎng)絡(luò)安全
  1. CAN的報(bào)文格式

    在總線中傳送的報(bào)文,每幀由7部分組成。CAN協(xié)議支持兩種報(bào)文格式,其唯一的不同是標(biāo)識(shí)符(ID)長(zhǎng)度不同,標(biāo)準(zhǔn)格式為11位,擴(kuò)展格式為29位。

    在標(biāo)準(zhǔn)格式中,報(bào)文的起始位稱為幀起始(SOF),然后是由11位標(biāo)識(shí)符和遠(yuǎn)程發(fā)送請(qǐng)求位(RTR)組成的仲裁場(chǎng)。RTR位標(biāo)明是數(shù)據(jù)幀還是請(qǐng)求幀,在請(qǐng)求幀中沒(méi)有數(shù)據(jù)字節(jié)。

    控制場(chǎng)包括標(biāo)識(shí)符擴(kuò)展位(IDE),指出是標(biāo)準(zhǔn)格式還是擴(kuò)展格式。它還包括一個(gè)保留位 (ro),為將來(lái)擴(kuò)展使用。它的最后四個(gè)位用來(lái)指明數(shù)據(jù)場(chǎng)中數(shù)據(jù)的長(zhǎng)度(DLC)。數(shù)據(jù)場(chǎng)范圍為0~8個(gè)字節(jié),其后有一個(gè)檢測(cè)數(shù)據(jù)錯(cuò)誤的循環(huán)冗余檢查(CRC)。

    應(yīng)答場(chǎng)(ACK)包括應(yīng)答位和應(yīng)答分隔符。發(fā)送站發(fā)送的這兩位均為隱性電平(邏輯1),這時(shí)正確接收?qǐng)?bào)文的接收站發(fā)送主控電平(邏輯0)覆蓋它。用這種方法,發(fā)送站可以保證網(wǎng)絡(luò)中至少有一個(gè)站能正確接收到報(bào)文。

    報(bào)文的尾部由幀結(jié)束標(biāo)出。在相鄰的兩條報(bào)文間有一很短的間隔位,如果這時(shí)沒(méi)有站進(jìn)行總線存取,總線將處于空閑狀態(tài)。

    如圖11所示,具體某一位或某幾位下面會(huì)詳細(xì)介紹。

    SylixOS CAN總線報(bào)文淺析

    11 CAN總線報(bào)文結(jié)構(gòu)

  2. 數(shù)據(jù)幀

    數(shù)據(jù)幀是使用最多的幀,結(jié)構(gòu)上由7段組成,其中根據(jù)仲裁段ID碼長(zhǎng)度的不同,分為標(biāo)準(zhǔn)幀(CAN2.0A)和擴(kuò)展幀(CAN2.0B)。

    數(shù)據(jù)幀是由:幀起始,仲裁斷,控制端,數(shù)據(jù)段,CRC段,ACK段和幀結(jié)束構(gòu)成。

    如圖21所示(具體的幀結(jié)構(gòu)下面會(huì)詳細(xì)介紹)。

    SylixOS CAN總線報(bào)文淺析

    2–1數(shù)據(jù)幀類型及結(jié)構(gòu)

  3. 幀起始和幀結(jié)束

    幀起始:由單個(gè)顯性位組成,總線空閑時(shí),發(fā)送節(jié)點(diǎn)發(fā)送幀起始,其他接收節(jié)點(diǎn)同步于該幀起始位。

    幀結(jié)束:由7個(gè)連續(xù)的隱形位組成。

    (注:顯性電平和隱性電平是相對(duì)于CAN_H和CAN_L而言的差分信號(hào)電平,并非TTL電平上的高低電平,需要注意)如圖2-2所示。

     

    SylixOS CAN總線報(bào)文淺析

    2–2幀起始和幀結(jié)束

  4. 仲裁段

    CAN-bus是如何解決多個(gè)節(jié)點(diǎn)同時(shí)發(fā)送數(shù)據(jù),即總線競(jìng)爭(zhēng)的問(wèn)題?該問(wèn)題由仲裁段給出答案。

    CAN-bus并沒(méi)有規(guī)定節(jié)點(diǎn)的優(yōu)先級(jí),但通過(guò)仲裁段幀ID規(guī)定了數(shù)據(jù)幀的優(yōu)先級(jí)。根據(jù)CAN2.0標(biāo)準(zhǔn)版本不同,幀ID分為11位和29位兩種。如圖23所示

     

    SylixOS CAN總線報(bào)文淺析

    2–3數(shù)據(jù)幀結(jié)構(gòu)

    如圖24所示CAN控制器在發(fā)送數(shù)據(jù)的同時(shí)監(jiān)測(cè)數(shù)據(jù)線的電平是否與發(fā)送數(shù)據(jù)對(duì)應(yīng)電平相同,如果不同,則停止發(fā)送并做其他處理。

    SylixOS CAN總線報(bào)文淺析

    2–4仲裁處理

    假設(shè)節(jié)點(diǎn)A、B和C都發(fā)送相同格式相同類型的幀,如標(biāo)準(zhǔn)格式數(shù)據(jù)幀,它們競(jìng)爭(zhēng)總線的過(guò)程是(如圖16所示):

    SylixOS CAN總線報(bào)文淺析

    2–5仲裁機(jī)制

    從該分析過(guò)程得出結(jié)論是:幀ID值越小,優(yōu)先級(jí)越高;

    對(duì)于同為擴(kuò)展格式數(shù)據(jù)幀、標(biāo)準(zhǔn)格式遠(yuǎn)程幀和擴(kuò)展格式遠(yuǎn)程幀的情況同理

  5. 控制段

    控制段共6位,標(biāo)準(zhǔn)幀的控制段由擴(kuò)展幀標(biāo)志位IDE、保留位r0和數(shù)據(jù)長(zhǎng)度代碼DLC組成;擴(kuò)展幀控制段則由IDE、r1、r0和DLC組成如圖17所示。

    SylixOS CAN總線報(bào)文淺析

    2–6數(shù)據(jù)幀結(jié)構(gòu)

  6. 數(shù)據(jù)段

    一個(gè)數(shù)據(jù)幀傳輸?shù)臄?shù)據(jù)量為0~8個(gè)字節(jié),這種短幀結(jié)構(gòu)使得CAN-bus實(shí)時(shí)性很高,非常適合汽車和工控應(yīng)用場(chǎng)合如圖27所示。

    SylixOS CAN總線報(bào)文淺析

    2–7數(shù)據(jù)段

    數(shù)據(jù)量小,發(fā)送和接收時(shí)間短,實(shí)時(shí)性高,被干擾的概率小,抗干擾能力強(qiáng)。

  7. CRC段

    CAN-bus使用CRC校驗(yàn)進(jìn)行數(shù)據(jù)檢錯(cuò),CRC校驗(yàn)值存放于CRC段。 CRC校驗(yàn)段由15位CRC值和1位CRC界定符構(gòu)成如圖28所示。

    SylixOS CAN總線報(bào)文淺析

    2–8CRC

  8. ACK段

    當(dāng)一個(gè)接收節(jié)點(diǎn)接收的幀起始到CRC段之間的內(nèi)容沒(méi)發(fā)生錯(cuò)誤時(shí),它將在ACK段發(fā)送一個(gè)顯性電平如圖29所示。

    SylixOS CAN總線報(bào)文淺析

    2–9 ACK

  9. 遠(yuǎn)程幀

    與數(shù)據(jù)幀相比,遠(yuǎn)程幀結(jié)構(gòu)上無(wú)數(shù)據(jù)段,由6個(gè)段組成,同理分為標(biāo)準(zhǔn)格式和擴(kuò)展格式,且RTR位為1(隱性電平)如圖31所示。

    SylixOS CAN總線報(bào)文淺析

    3–1遠(yuǎn)程幀結(jié)構(gòu)

    如下圖所示由于數(shù)據(jù)幀的RTR位為顯性電平,遠(yuǎn)程幀的RTR位為隱性電平。

    所以幀格式和幀ID都相同情況下,數(shù)據(jù)幀的優(yōu)先級(jí)比遠(yuǎn)程幀優(yōu)先級(jí)高如圖32所示:

    SylixOS CAN總線報(bào)文淺析

    3–2數(shù)據(jù)幀于遠(yuǎn)程幀仲裁機(jī)制

     

    SylixOS CAN總線報(bào)文淺析

    3–3數(shù)據(jù)幀遠(yuǎn)程幀比較

    數(shù)據(jù)幀與遠(yuǎn)程幀的區(qū)別如圖33所示。

     

  10. 錯(cuò)誤幀

    盡管CAN-bus是可靠性很高的總線,但依然可能出現(xiàn)錯(cuò)誤;CAN-bus的錯(cuò)誤類型共有5種(如圖41所示)。

    SylixOS CAN總線報(bào)文淺析

    4–1錯(cuò)誤幀類型

    當(dāng)出現(xiàn)5種錯(cuò)誤類型之一時(shí),發(fā)送或接收節(jié)點(diǎn)將發(fā)送錯(cuò)誤幀。錯(cuò)誤幀的結(jié)構(gòu)如下,其中錯(cuò)誤標(biāo)識(shí)分為主動(dòng)錯(cuò)誤標(biāo)識(shí)和被動(dòng)錯(cuò)誤標(biāo)識(shí)如圖42所示。

    SylixOS CAN總線報(bào)文淺析

    4–2錯(cuò)誤幀電平結(jié)構(gòu)

    為防止自身由于某些原因?qū)е聼o(wú)法正常接收的節(jié)點(diǎn)一直發(fā)送錯(cuò)誤幀,干擾其他節(jié)點(diǎn)通信,CAN-bus規(guī)定了節(jié)點(diǎn)的3種狀態(tài)及其行為如圖43所示。

    SylixOS CAN總線報(bào)文淺析

    4–3錯(cuò)誤處理機(jī)制

    (注:這些錯(cuò)誤處理的機(jī)制是由硬件自主完成的這樣做的目的就是只要CAN在收到數(shù)據(jù)肯定是正確的數(shù)據(jù))。

     

  11. 過(guò)載幀與幀間隔

  12. 過(guò)載幀

    當(dāng)某個(gè)接收節(jié)點(diǎn)沒(méi)有做好接收下一幀數(shù)據(jù)的準(zhǔn)備時(shí),將發(fā)送過(guò)載幀以通知發(fā)送節(jié)點(diǎn);過(guò)載幀由過(guò)載標(biāo)志和過(guò)載幀界定符組成如所示圖51。

    SylixOS CAN總線報(bào)文淺析

    5–1過(guò)載幀結(jié)構(gòu)

    由于存在多個(gè)節(jié)點(diǎn)同時(shí)過(guò)載且過(guò)載幀發(fā)送有時(shí)間差問(wèn)題,可能出現(xiàn)過(guò)載標(biāo)志疊加后超過(guò)6個(gè)位的現(xiàn)象如所示圖52。

    SylixOS CAN總線報(bào)文淺析

    5–2過(guò)載幀具體結(jié)構(gòu)

  13. 幀間隔

    幀間隔用于將數(shù)據(jù)幀或遠(yuǎn)程幀和他們之前的幀分離開,但過(guò)載幀和錯(cuò)誤幀前面不會(huì)插入幀間隔。

    SylixOS CAN總線報(bào)文淺析

    幀間隔過(guò)后,如果無(wú)節(jié)點(diǎn)發(fā)送幀,則總線進(jìn)入空閑。

    SylixOS CAN總線報(bào)文淺析

    幀間隔過(guò)后,如果被動(dòng)錯(cuò)誤節(jié)點(diǎn)要發(fā)送幀,則先發(fā)送8個(gè)隱性電平的傳輸延遲,再發(fā)送幀。

    SylixOS CAN總線報(bào)文淺析

  14. CAN總線發(fā)送總流程

    CAN-bus整個(gè)鏈路層處理數(shù)據(jù)的流程是如圖61所示:

    SylixOS CAN總線報(bào)文淺析

    6–1CAN總線發(fā)送總流程

     

  15. 參考資料

    《項(xiàng)目驅(qū)動(dòng)--CAN-BUS現(xiàn)場(chǎng)總線基礎(chǔ)教程----周立功,黃曉清》。

    《現(xiàn)場(chǎng)總線技術(shù)及其應(yīng)用第二版–清華大學(xué)出版社》。


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI