<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 汽車(chē)CAN總線的數(shù)據(jù)幀結(jié)構(gòu)

          汽車(chē)CAN總線的數(shù)據(jù)幀結(jié)構(gòu)

          作者: 時(shí)間:2016-12-14 來(lái)源:網(wǎng)絡(luò) 收藏
          汽車(chē)CAN總線的數(shù)據(jù)幀結(jié)構(gòu)
          信息想要在CAN-BUS局域網(wǎng)內(nèi)有效、快速的傳遞,就要把它轉(zhuǎn)換為適合CAN-BUS總線的傳輸格式。我們把這種信息稱(chēng)之為報(bào)文,把適合CAN-BUS總線傳輸?shù)母袷椒Q(chēng)之為報(bào)文格式??偩€上的信息是以不同的固定報(bào)文格式發(fā)送的,但長(zhǎng)度受限。
          報(bào)文傳輸格式有以下四種不同的幀類(lèi)型所表示和控制,所謂幀就是一個(gè)計(jì)量單位,它的數(shù)據(jù)由兩部分組成:幀頭和幀數(shù)據(jù)。
          數(shù)據(jù)幀:數(shù)據(jù)幀攜帶數(shù)據(jù),是數(shù)據(jù)在網(wǎng)絡(luò)上傳輸時(shí)的一個(gè)數(shù)據(jù)單元。
          遠(yuǎn)程幀:總線單元發(fā)送的遠(yuǎn)程幀,請(qǐng)求發(fā)送具有統(tǒng)一識(shí)別符的數(shù)據(jù)幀。
          錯(cuò)誤幀:任何電控單元檢測(cè)到總線錯(cuò)誤就會(huì)發(fā)出錯(cuò)誤幀。
          過(guò)載幀:用以在先行和后續(xù)的數(shù)據(jù)幀之間提供以附加的延時(shí)。
          本次我們主要講述有關(guān)數(shù)據(jù)幀的相關(guān)內(nèi)容。數(shù)據(jù)幀由7個(gè)不同的位場(chǎng)組成:
          1.幀起始SOF(START OF FRAME)
          標(biāo)志數(shù)據(jù)幀和遠(yuǎn)程幀的起始,由單個(gè)顯性位構(gòu)成。只有當(dāng)總線位空閑狀態(tài)時(shí),才允許節(jié)點(diǎn)開(kāi)始發(fā)送,所有節(jié)點(diǎn)必須同步于首先發(fā)送節(jié)點(diǎn)的幀起始引起的上升沿。
          2.仲裁場(chǎng)AF(Arbitration Field)
          在CAN2.0A中,仲裁場(chǎng)由11位標(biāo)識(shí)符和遠(yuǎn)程發(fā)送請(qǐng)求位RTR(Remote Transmission Request)組成;而在CAN2.0B中,仲裁場(chǎng)由29位標(biāo)識(shí)符和遠(yuǎn)程發(fā)送請(qǐng)求位RTR構(gòu)成。也就是說(shuō)CAN協(xié)議支持兩種報(bào)文格式,其唯一的區(qū)別是標(biāo)識(shí)符(ID)長(zhǎng)度的不同,標(biāo)準(zhǔn)格式為11位,擴(kuò)展格式為29位。
          (1)標(biāo)識(shí)符ID(Identifier):標(biāo)識(shí)符分為標(biāo)準(zhǔn)格式標(biāo)識(shí)符和擴(kuò)展格式標(biāo)識(shí)符。在CAN2.0A中標(biāo)準(zhǔn)格式標(biāo)識(shí)符的長(zhǎng)度為11位,這些位以ID-10至ID-0的順序發(fā)送,最低位為ID-0,其中最高7位(ID-10到ID-4)必須不是全隱性。
          (2)遠(yuǎn)程發(fā)送請(qǐng)求位RTR (Remote Transmission Request):在數(shù)據(jù)幀中,遠(yuǎn)程發(fā)送請(qǐng)求位必須是顯性電平,而在遠(yuǎn)程幀中,遠(yuǎn)程發(fā)送請(qǐng)求位必須是隱性電平。在擴(kuò)展格式中,先發(fā)送基本標(biāo)識(shí)符,其后是標(biāo)識(shí)符擴(kuò)展位和替代遠(yuǎn)程請(qǐng)求位。擴(kuò)展標(biāo)識(shí)符在替代遠(yuǎn)程請(qǐng)求位后發(fā)送。
          (3)替代遠(yuǎn)程請(qǐng)求位SRR (Substitute Remote Request): SRR位為隱性位。在擴(kuò)展格式中,它在標(biāo)準(zhǔn)格式的遠(yuǎn)程發(fā)送請(qǐng)求位位置上被發(fā)送,并替代標(biāo)準(zhǔn)格式中的遠(yuǎn)程發(fā)送請(qǐng)求位。這樣,可以解決標(biāo)準(zhǔn)格式和擴(kuò)展格式的沖突。
          (4)標(biāo)識(shí)符擴(kuò)展位IDE (Identifier Extension Bit): IDE位對(duì)于擴(kuò)展格式而言屬于仲裁場(chǎng),對(duì)于標(biāo)準(zhǔn)格式來(lái)說(shuō)屬于控制場(chǎng)。標(biāo)識(shí)符擴(kuò)展位在標(biāo)準(zhǔn)格式中以顯性電平發(fā)送,而在擴(kuò)展格式中為隱性電平。
          3.控制場(chǎng)CF(Control Field)
          兩種格式的控制場(chǎng)格式不同。在標(biāo)準(zhǔn)格式中,控制場(chǎng)包括DLC (Data Length Code)、IDE位(顯性)和保留位0r(顯性)。在擴(kuò)展格式中,包括DLC和兩個(gè)保留位1r、
          2r,這兩個(gè)保留位必須發(fā)送顯性電平。DLC為4位,允許使用0到8之間的數(shù)字。
          4.數(shù)據(jù)場(chǎng)DF(Data Field)
          數(shù)據(jù)場(chǎng)由數(shù)據(jù)幀中被發(fā)送的數(shù)據(jù)組成,它可包括從0到8個(gè)字節(jié),每個(gè)字節(jié)8位,其中首先發(fā)送最高有效位。
          5.循環(huán)冗余校驗(yàn)場(chǎng)CRC (Cyclic Redundancy Check)
          CRC場(chǎng)包括15位CRC序列和1位CRC界定符(隱性)。CRC生成器所使用的多項(xiàng)式是:X15 + X14+ X10 + X8 + X7 + X4 + X3 + 1,這個(gè)多項(xiàng)式除法的余數(shù)就是發(fā)送到總線上的“循環(huán)冗余校驗(yàn)碼”,它只用于檢測(cè)錯(cuò)誤而不能校正。
          6.應(yīng)答場(chǎng)ACK (Acknowledge)
          ACK場(chǎng)為兩位,包括應(yīng)答間隙(ACK SLOT)和應(yīng)答界定符(ACK DELIMITER)。在應(yīng)答場(chǎng)里,發(fā)送站發(fā)送兩個(gè)隱性位。當(dāng)接收器接收到有效的報(bào)文時(shí),接收器就會(huì)在應(yīng)答間隙期間發(fā)送應(yīng)答信號(hào),向發(fā)送器發(fā)送一顯性位以示回答。
          7.幀結(jié)束EOF (END OF FRAME)
          每個(gè)數(shù)據(jù)幀和遠(yuǎn)程幀均由一標(biāo)志序列界定,也就是幀結(jié)尾,這個(gè)標(biāo)志序列由7個(gè)隱性位組成。



          評(píng)論


          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();