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