和tp数据库_CAN / CAN FD传输层(TP)详解
本文分享CAN / CAN FD在TP層傳輸規(guī)則詳解,因?yàn)槭菑膫€(gè)人角度解讀協(xié)議,有不精準(zhǔn)之處,希望指出。
CAN/CAN FD總線TP層映射到OSI計(jì)算機(jī)七層模型是在第三層和第四層:
對應(yīng)CAN Frame數(shù)據(jù)域可攜帶的數(shù)據(jù)幀長度如下定義:
其中CAN ID標(biāo)識這具體ECU的識別號,長度有11位和29位之分,具體看OEM在診斷需求規(guī)范中定義。數(shù)據(jù)庫攜帶數(shù)據(jù)長度看是Classical CAN還是CAN FD。前者數(shù)據(jù)域長度是8 bytes。CAN FD數(shù)據(jù)域長度看OEM需求,范圍在8 bytes---64 bytes,當(dāng)然長度也不是任意選取,可參看如下表格:
超過8 bytes后,長度可按照表格中長度定義。首先分享下經(jīng)典CAN單幀和多幀傳輸數(shù)據(jù)。
一、 Classical CAN
當(dāng)數(shù)據(jù)長度小于等于8 bytes(因?yàn)橛蠵CI存在,實(shí)際有用的數(shù)據(jù)長度是7 bytes),使用單幀(Single Frame)可以發(fā)送數(shù)據(jù):
當(dāng)數(shù)據(jù)長度大于8 Bytes時(shí),使用到TP中的多幀傳輸。相當(dāng)于在數(shù)據(jù)傳輸過程中先對大于8 Bytes的數(shù)據(jù)進(jìn)行解包---發(fā)送---組包,其中用到首幀(First Frame)、流控幀(Flow Control)、連續(xù)幀(Consecutive Frame)。在ISO 15765-2中對上述幀格式定義如下:
對數(shù)據(jù)幀中第一個(gè)Byte位不同數(shù)值定義不同幀類型:
1、 高4 bits為0標(biāo)志是單幀,低4 bits值定義幀長度;
2、 對于單幀當(dāng)數(shù)據(jù)長度大于8 bytes(適用于CAN FD),第一個(gè)byte數(shù)值為0,第二個(gè)byte數(shù)值標(biāo)志著此單幀的數(shù)據(jù)長度;
3、 高4 bits為1標(biāo)志是首幀,低4 bits位與第二個(gè)byte標(biāo)志數(shù)據(jù)長度(FFF最大長度為4095 bytes),適用于多幀數(shù)據(jù)長度小于等于4095;
4、 當(dāng)多幀數(shù)據(jù)長度大于4095 bytes時(shí),高4 bits為1標(biāo)志是首幀,低4 bits位與第二個(gè)byte數(shù)值設(shè)為0,Byte 3---byte 6標(biāo)志此幀長度;
5、 高4 bits為2標(biāo)志是連續(xù)幀,低4 bits標(biāo)志連續(xù)幀的序列號;
6、 高4 bits為3標(biāo)志是流控幀,低4 bits標(biāo)識流控幀的狀態(tài)(Flow State)。Byte 2為BS(Block Size),Byte 3為STmin 。其中FS、BS、STmin 具體含義如下:
· FS(FlowStatus)表示發(fā)送網(wǎng)絡(luò)實(shí)體是否可以繼續(xù)進(jìn)行消息傳輸。具體含義在ISO 15765中有詳細(xì)說明:
· BS(BlockSize)表示到下一個(gè)流控幀(FC)前發(fā)送連續(xù)幀的個(gè)數(shù)。在分段數(shù)據(jù)傳輸中,僅ConsecutiveFrames的最后一塊可能小于BS幀數(shù)。
BS數(shù)值為0時(shí),對于發(fā)送者(Sender)意味著接收者(Receiver)接下來不會發(fā)送流控幀,發(fā)送者將所有連續(xù)幀全部發(fā)送至接收者。
· STmin 為Separation Time minimum (STmin) parameter definition,這個(gè)參數(shù)由接收者定義,意思是兩個(gè)連續(xù)幀之間的最小間隔時(shí)間。
整個(gè)多幀傳輸機(jī)制如下圖所示:
二、CAN FD
CAN FD傳輸數(shù)據(jù)幀數(shù)據(jù)長度如下定義:
對于CAN FD中PCI信息占用Byte 1、Byte 2,因此在項(xiàng)目中定義的數(shù)據(jù)長度是包含這兩個(gè)Bytes。對于CAN FD分單幀和多幀傳輸:
(1)、單幀傳輸?shù)臄?shù)據(jù)長度如協(xié)議中定義:
根據(jù)數(shù)據(jù)長度所在的范圍,選擇適用的長度。
(2)、對于多幀傳輸,定義好數(shù)據(jù)長度后,首幀以及緊接著的連續(xù)幀按照定義的數(shù)據(jù)長度傳輸,最后一幀連續(xù)幀按著上述Table 13傳輸。具體舉例如下:
若定義數(shù)據(jù)場長度是 12 bytes,自己要傳輸?shù)臄?shù)據(jù)長度是 23 bytes,首幀和第一個(gè)后續(xù)幀,數(shù)據(jù)場長度是 12 bytes,最后一幀還是看剩余數(shù)據(jù)長度,按照Table 13 發(fā)送。
上述內(nèi)容若有疑問,歡迎關(guān)注微信公眾號:汽車控制器診斷技術(shù) 獲取郵箱,以便溝通交流。
-----------------------------------------
作者簡介 | 穿拖鞋的漢子
汽車電子工程師
來,每天進(jìn)步一點(diǎn)點(diǎn)!
總結(jié)
以上是生活随笔為你收集整理的和tp数据库_CAN / CAN FD传输层(TP)详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 主从配置_MySQL主从复制配置详解
- 下一篇: 求一个qq好听的网名带符号!