標(biāo)準(zhǔn)數(shù)據(jù)幀 : 用于節(jié)點(diǎn)向外傳送數(shù)據(jù)
標(biāo)準(zhǔn)數(shù)據(jù)幀由幀起始、仲裁段、控制段、數(shù)據(jù)段、CRC段、ACK段、幀結(jié)束等組成。
一、總線空閑(Bus Idle)
CAN總線空閑時(shí),總線上會(huì)輸出持續(xù)的高電平“1”。當(dāng)總線空閑時(shí)任何連接的單元都可以開始發(fā)送新的報(bào)文。
二、幀起始(Start of Frame)
SOF是數(shù)據(jù)幀傳輸?shù)钠鹗嘉弧0l(fā)送方(sender)會(huì)發(fā)送一個(gè)顯性電平作為SOF,由于總線空閑時(shí)總線會(huì)保持隱性電平,因此SOF發(fā)出后會(huì)產(chǎn)生一個(gè)跳變沿用于整個(gè)CAN網(wǎng)絡(luò)的時(shí)間同步。為了在幀傳輸期間保持與發(fā)送方的同步,接收方會(huì)在所有隱性電平到顯性電平的跳變沿進(jìn)行是否與發(fā)送方保持同步的判斷。如果出現(xiàn)偏差,接收方將按照相關(guān)相位誤差量重新進(jìn)行同步(重同步)。?
三、仲裁段(Arbitration Field)
仲裁段用于寫明需要發(fā)送到目的CAN節(jié)點(diǎn)的地址、確定發(fā)送幀類型(當(dāng)前發(fā)送的是數(shù)據(jù)幀還是遙控幀),并確定發(fā)送的幀格式是標(biāo)準(zhǔn)數(shù)據(jù)幀還是擴(kuò)展數(shù)據(jù)幀。
標(biāo)準(zhǔn)數(shù)據(jù)幀的仲裁段由11位ID標(biāo)識(shí)符(0x000 ~ 0x7FF)和遠(yuǎn)程發(fā)送請(qǐng)求位RTR(Remote Transmission Request BIT)組成。
如下圖:RTR = 0 時(shí)為數(shù)據(jù)幀,RTR = 1 時(shí)為遙控幀。CAN的線與機(jī)制決定了相同ID下數(shù)據(jù)幀優(yōu)先級(jí)高于遙控幀優(yōu)先級(jí)。
四、控制段(control Field)
標(biāo)準(zhǔn)數(shù)據(jù)幀的控制段由6位組成,如下圖。IDE(Identifier Extension Bit)為擴(kuò)展標(biāo)識(shí)符,IDE = 0 時(shí)為標(biāo)準(zhǔn)數(shù)據(jù)幀,IDE = 1 時(shí)為擴(kuò)展數(shù)據(jù)幀。CAN的線與機(jī)制決定了相同ID下標(biāo)準(zhǔn)數(shù)據(jù)幀優(yōu)先級(jí)高于擴(kuò)展數(shù)據(jù)幀優(yōu)先級(jí)。
R0作為保留位,未使用,恒為 0。
接下來4位 為數(shù)據(jù)長(zhǎng)度位 DLC(Data Length),CAN總線為了保證每一幀的短小精悍,約定了數(shù)據(jù)幀長(zhǎng)度 DLC≤8;即一次最大傳送8個(gè)字節(jié)的數(shù)據(jù),然后讓出總線重新仲裁,以保證更高優(yōu)先級(jí)的數(shù)據(jù)能夠即時(shí)占用總線發(fā)送。(確保CAN總線高優(yōu)先級(jí)數(shù)據(jù)的實(shí)時(shí)性)
五、數(shù)據(jù)段(Data Field)
標(biāo)準(zhǔn)數(shù)據(jù)幀傳送時(shí),緊隨控制段的為數(shù)據(jù)段,數(shù)據(jù)段的長(zhǎng)度由DLC(Data Length)決定,如DLC = 2時(shí),則填充?2 個(gè)字節(jié)的數(shù)據(jù)。
數(shù)據(jù)傳送時(shí),首先發(fā)送最高有效位MSB,依次發(fā)送至最低有效位LSB。
六、CRC段
CRC段用于檢查總線數(shù)據(jù)傳輸是否出錯(cuò)(如受電磁干擾,某一位或幾位的電平反轉(zhuǎn)),CRC段包括:15 個(gè)位的 CRC序列(CRC SEQUENCE)和1 個(gè)位的CRC界定符(CRC DELIMITER)構(gòu)成。
CRC序列是根據(jù)多項(xiàng)式生成的 CRC 值,CRC 的計(jì)算范圍包括:幀起始、仲裁段、控制段、數(shù)據(jù) 段。 接收方以同樣的算法計(jì)算 CRC 值并進(jìn)行比較,不一致時(shí)會(huì)通報(bào)錯(cuò)誤。
?七、ACK段
ACK段用來確認(rèn)是否正常接收。由 ACK 槽(ACK SLOT)和 ACK 界定符(ACK DELIMITER)2 個(gè)位構(gòu)成。
發(fā)送節(jié)點(diǎn)在 ACK 段發(fā)送 2 個(gè)位的隱性位“11”。當(dāng)接收節(jié)點(diǎn)正確地接收到有效的報(bào)文時(shí),接收器就會(huì)在ACK槽(ACK SLOT)位發(fā)送 ACK 應(yīng)答信號(hào) “0”。發(fā)送節(jié)點(diǎn)讀取到總線上隱性電平“0”,則代表發(fā)送成功。否則將根據(jù)設(shè)置重新競(jìng)爭(zhēng)總線,再次發(fā)送此數(shù)據(jù)幀。
八、幀結(jié)束(End of Frame)
幀結(jié)束為ACK段DEL界定符后緊隨的 7 個(gè)“隱性”位組成。
九、間歇場(chǎng)(Intermission)
3位間隔場(chǎng)ITM與幀結(jié)束EOF、ACK的DEL界定符共同組成11位的隱性位“1” ,以分割兩幀數(shù)據(jù)傳送。
十、總線空閑(Bus Idle)
總線空閑為非必須段,兩幀數(shù)據(jù)連續(xù)傳輸時(shí),間歇場(chǎng)ITM可直接連接幀起始SOF。
綜上,發(fā)送1個(gè)字節(jié)時(shí),CAN總線需要傳送 55bit 位,發(fā)送n個(gè)字節(jié)時(shí)需要傳送 55+8 ×(n-1)個(gè)bit位。文章來源:http://www.zghlxwxcb.cn/news/detail-814012.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-814012.html
到了這里,關(guān)于CAN總線報(bào)文格式———標(biāo)準(zhǔn)數(shù)據(jù)幀的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!