CAN的主要功能是進(jìn)行數(shù)據(jù)通訊凌外,CAN知識(shí)點(diǎn)總結(jié)(一)里面總結(jié)了CAN網(wǎng)絡(luò)中的CAN節(jié)點(diǎn)和CAN總線以及標(biāo)準(zhǔn)11898佑女“赂眩總結(jié)(二)來(lái)說(shuō)一下CAN的幀格式歉备。
首先記住傅是,顯性電平對(duì)應(yīng)邏輯“0”,隱形電平對(duì)應(yīng)邏輯“1”蕾羊,千萬(wàn)別混淆了喧笔!
一、下圖是CAN的數(shù)據(jù)幀(Data Frame)的格式龟再。
圖中只有藍(lán)色色塊的數(shù)據(jù)段Data Field才是要傳遞的數(shù)據(jù)书闸。問(wèn)題來(lái)了,為什么數(shù)據(jù)段的前后還有這么多信息塊呢利凑?
這是因?yàn)镃AN網(wǎng)絡(luò)里面只有兩根線浆劲,一根高線一根低線。物理層面的簡(jiǎn)單注定CAN的數(shù)據(jù)格式必須含有大量的通訊協(xié)議哀澈。
一個(gè)標(biāo)準(zhǔn)的數(shù)據(jù)幀包含以下內(nèi)容:
SOF 起始位(Start of Frame ):起始位代表著數(shù)據(jù)幀的傳輸開(kāi)始梳侨,它占位1Bit。它由發(fā)送器發(fā)送日丹,并通過(guò)將邊沿從隱性(總線空閑)更改為顯性來(lái)確保全網(wǎng)同步走哺。
ID 標(biāo)識(shí)符(Identidier):SOF之后是標(biāo)識(shí)符(ID)。ID確定了數(shù)據(jù)幀的優(yōu)先級(jí)哲虾,并負(fù)責(zé)CAN網(wǎng)絡(luò)中發(fā)送器和收發(fā)器的關(guān)系丙躏。
RTR 遠(yuǎn)程傳輸請(qǐng)求(Remote Transmission Request):發(fā)送器使用RTR位將幀類型(數(shù)據(jù)幀或遠(yuǎn)程幀)通知接收器。如果RTR是顯性位束凑,那表明這是數(shù)據(jù)幀晒旅。(隱性位表明是遠(yuǎn)程幀)
IDE 標(biāo)識(shí)符拓展(Identifier Extension):IDE位用于區(qū)分標(biāo)準(zhǔn)格式和擴(kuò)展格式。標(biāo)識(shí)符的標(biāo)準(zhǔn)格式為11位汪诉,擴(kuò)展格式為29位废恋。下圖就是“標(biāo)準(zhǔn)格式和擴(kuò)展格式的數(shù)據(jù)格式”。
DLC 數(shù)據(jù)長(zhǎng)度代碼(Data Length Code):DLC將有效字節(jié)的數(shù)量發(fā)送到接收器扒寄。DLC是多少鱼鼓,Data Field中就有多少個(gè)字節(jié)。
Data Field 數(shù)據(jù)段:一個(gè)數(shù)據(jù)幀最多可以傳輸八個(gè)有用字節(jié)该编。這八個(gè)字節(jié)放在數(shù)據(jù)段里面迄本。
CRC 循環(huán)冗余校驗(yàn)(Cyclic Redundancy Check):能檢測(cè)出錯(cuò)誤,是傳輸安全性的保證课竣。
- 原理:根據(jù)要傳輸?shù)奈唬◤钠鹗嘉坏綌?shù)據(jù)段)和由ISO 11898-1定義的多項(xiàng)式G(x)計(jì)算出一段CRC序列嘉赎,然后在要傳輸?shù)奈缓竺婕由线@個(gè)CRC序列置媳。整個(gè)多項(xiàng)式對(duì)應(yīng)于要傳輸?shù)奈坏谋稊?shù)。如果多項(xiàng)式的除法得到了余數(shù)公条,則接收器能夠檢測(cè)到傳輸錯(cuò)誤拇囊。
應(yīng)答ACK(Acknowledgement):根據(jù)CRC除法的結(jié)果,接收器會(huì)向發(fā)送器回應(yīng)傳輸是否正確靶橱。如果正確寥袭,接收器會(huì)在ACK時(shí)隙(ACK Slot)期間發(fā)送一個(gè)顯性電平的ACK信號(hào)給發(fā)送器,來(lái)表示應(yīng)答抓韩。注意:在接收器確認(rèn)之前纠永,ACK的信號(hào)之前一直都是隱性電平鬓长。只有傳輸正確之后谒拴,才改為顯性電平。(看上圖中ACK Slot在傳輸正確和傳輸錯(cuò)誤時(shí)不同的電平)涉波。
- ACK Error 應(yīng)答錯(cuò)誤:應(yīng)答非常重要英上,如果接收器不向發(fā)送器發(fā)送顯性電平,那就到不了EOF那一位啤覆,也就是說(shuō)發(fā)送失敗苍日,報(bào)文需重新發(fā)送。發(fā)送失敗又分幾種形式: 1. 接受器在ACK時(shí)隙期間窗声,除了向發(fā)送器發(fā)送電平相恃,也會(huì)監(jiān)視總線上的數(shù)據(jù),如果數(shù)據(jù)與發(fā)送的數(shù)據(jù)不一致笨觅,那就表示發(fā)送失敗拦耐。2. 在ACK時(shí)隙期間,如果發(fā)送器檢測(cè)到ACK位依然是隱性位见剩,那么發(fā)送失敗杀糯。
DEL 界定符(Delimiter):ACK Del始終是隱性傳輸(圖中灰線為邏輯“1”)。
EOF 結(jié)束位(End of Frame ):7個(gè)隱性位代表數(shù)據(jù)幀的傳輸結(jié)束苍苞。
二固翰、數(shù)據(jù)傳輸正確的條件下的應(yīng)答過(guò)程(應(yīng)答為positive):
第一步,發(fā)送器(Sender)向總線發(fā)送報(bào)文羹呵,從上圖中可以看出骂际,報(bào)文從SOF一直傳輸?shù)搅藬?shù)據(jù)段(Data Field)。此時(shí)只有發(fā)送器和總線上有數(shù)據(jù)傳輸冈欢。
第二步方援,接著傳輸CRC 段。此時(shí)接收器上依然沒(méi)有數(shù)據(jù)傳輸涛癌。
第三步犯戏,到了ACK時(shí)隙段送火,接收器要做出應(yīng)答。圖中兩個(gè)接收器給出的應(yīng)答均為傳輸正確先匪,從上圖中可以看出接收器發(fā)送的ACK時(shí)隙段的信號(hào)為顯性電平种吸。此時(shí)接收器那兒開(kāi)始有信號(hào)傳輸了。
第四步呀非,發(fā)送ACK界定符信號(hào)坚俗。ACK界定符永遠(yuǎn)為隱性位。
第五步岸裙,傳輸EOF猖败,數(shù)據(jù)幀傳輸完成。
第六步降允,幀間隔ITM發(fā)送恩闻,整個(gè)過(guò)程完畢。
三剧董、CAN的其他幀幢尚。除了用于數(shù)據(jù)傳輸?shù)臄?shù)據(jù)幀之外,CAN還規(guī)定了其他的格式翅楼,例如遠(yuǎn)程幀 Remote Frame和錯(cuò)誤幀Error Frame尉剩。
遠(yuǎn)程幀Remote Frame: 遠(yuǎn)程幀是一種幀類型,通過(guò)該幀類型可以從任何CAN節(jié)點(diǎn)請(qǐng)求用戶數(shù)據(jù)毅臊,即數(shù)據(jù)幀理茎。但是,這些幾乎不用于汽車中管嬉,因?yàn)槠嚴(yán)锏臄?shù)據(jù)基于信息生產(chǎn)者的主動(dòng)性皂林。
- 遠(yuǎn)程幀可以用標(biāo)準(zhǔn)格式和擴(kuò)展格式傳輸。
- 遠(yuǎn)程幀和數(shù)據(jù)幀的區(qū)別:
除缺少數(shù)據(jù)字段外宠蚂,遠(yuǎn)程幀的結(jié)構(gòu)與數(shù)據(jù)幀的結(jié)構(gòu)相對(duì)應(yīng)式撼。數(shù)據(jù)和遠(yuǎn)程幀之間的區(qū)別是使用RTR位(遠(yuǎn)程傳輸請(qǐng)求)。RTR顯性位表明該幀是數(shù)據(jù)幀求厕,隱性位表明該幀是遠(yuǎn)程幀著隆。
- 作用原理:
1. CAN節(jié)點(diǎn)一接收到ID與其自身數(shù)據(jù)幀的ID相同的遠(yuǎn)程幀,便會(huì)回復(fù)相應(yīng)的數(shù)據(jù)幀呀癣。
2. 對(duì)于帶有對(duì)象存儲(chǔ)的CAN控制器美浦,CAN控制器會(huì)自動(dòng)應(yīng)答遠(yuǎn)程幀。沒(méi)有對(duì)象存儲(chǔ)的CAN控制器必須通知主機(jī)项栏,以便它可以啟動(dòng)響應(yīng)浦辨。
3. 一般來(lái)說(shuō),遠(yuǎn)程幀的請(qǐng)求后緊跟相應(yīng)數(shù)據(jù)幀的請(qǐng)求答案沼沈。但是流酬,可以在請(qǐng)求和答案之間推送優(yōu)先級(jí)更高的CAN消息币厕。
錯(cuò)誤幀 Error Frame:錯(cuò)誤幀可用于發(fā)信號(hào)通知在通信過(guò)程中發(fā)現(xiàn)的錯(cuò)誤。錯(cuò)誤幀的傳輸伴隨正在進(jìn)行的消息傳輸?shù)慕K止芽腾。
來(lái)源:所有圖均來(lái)源于Vector官網(wǎng) https://elearning.vector.com/