天天看點

ZQWL-USBCANFD二次開發通訊協定V1.04

修訂曆史:

ZQWL-USBCANFD二次開發通訊協定V1.04
ZQWL-USBCANFD二次開發通訊協定V1.04

1.功能介紹

1.1型号說明

本文檔适用以下型号:

ZQWL-USBCANFD二次開發通訊協定V1.04
ZQWL-USBCANFD二次開發通訊協定V1.04
ZQWL-USBCANFD二次開發通訊協定V1.04

  ZQWL-CAN(FD)系列産品,USB通訊采用CDC類實作,可以在PC機上虛拟出一個序列槽,序列槽參數N,8,1格式,波特率可以根據需要設定(範圍9600~48000000bps),硬體自動比對。本文檔介紹二次開發的參數配置,資料收發等協定。

  智嵌物聯ZQWL開發的一系列高性能USBCAN(FD)接口卡,具有類型多,安裝方式靈活,友善易用,功能強大等特點。接口卡支援XP/Win7/Win10/Win11等作業系統。

  其中,ZQWL-UCANFD-200U、ZQWL-UCAN-201U、ZQWL-UCANFD-400U、ZQWL-UCAN-401U等型号,CAN(FD)通道均采用電氣隔離設計,可以适用于電磁環境惡劣的的場合。

1.2産品特性

● USB接口符合USB2.0高速規範;CAN接口支援 CAN2.0A、B 協定,符合 ISO11898-1 規範;

● CAN和CANFD協定可選;CANFD支援ISO标準和Non-ISO标準;

● 每個通道可以獨立設定波特率,系統不僅預置了常用波特率清單,而且支援自定義波特 率;支援的波特率範圍:CAN:10Kbps~1Mbps,CANFD:100Kbps~5Mbps;

● 最大流量測試:

ZQWL-USBCANFD二次開發通訊協定V1.04

● 每個通道均有14組硬體濾波器;每組濾波器可以設定濾波ID以及掩碼。

● 支援連續循環發送、組發送、定時發送等;

● 支援波特率探測,支援合并相同幀ID,支援總線異常統計,支援收發速率統計;

● 雙通道CAN(FD)接口卡支援中繼功能;

● 200U、201U、400U、401U的CAN(FD)-bus電路采用DC 2500V電氣隔離,具有強大的抗電磁幹擾的能力;

● 工作溫度:-40~+85℃;

1.3典型應用

● 車載通訊系統、電力通訊系統;

● 煤礦遠端通訊;

● 工業現場控制/;

● 遠端監控與資料采集;

2.通訊協定

2.1USB硬體描述符

  通過USB的硬體ID(VID和PID)來識别該系列裝置,特征如下:

ZQWL-USBCANFD二次開發通訊協定V1.04

   例如(雙通道CANFD類型):

ZQWL-USBCANFD二次開發通訊協定V1.04

2.2參數配置

  每幀資料長度為22位元組,十六進制格式:包括2個位元組幀頭(0x49,0x3B)、1個位元組功能碼、1個位元組讀/寫标志、16個位元組資料和2個位元組幀尾(0x45,0x2E):

ZQWL-USBCANFD二次開發通訊協定V1.04

注意:

● 當需要讀參數,“讀/寫”填0x52;當需要寫參數時,“讀/寫”填0x57;其中,“裝置資訊”和“裝置序列号”指令隻支援讀指令(0x52)。

● CAN通道号:取值為0x00~0x03,分别對應CAN0~CAN3;

● 自定義波特率标志:0x00為采用“常用波特率碼”;0x01為自定義波特率;當為自定義波特率時(CAN3僅支援“常用波特率碼”),實際波特率由SJW、TSEG1、TSEG2和BRP計算獲得,計算方式:

  Baud = 60000000/(SJW+1 + TSEG1+1 + TSEG2+1)/BRP。

  其中SJW取值範圍:0x00~0x03;

  TSEG1取值範圍:0x00~0x0F;

  TSEG2取值範圍:0x00~0x07;

  BRP取值範圍:1~0x0400,BRP是2位元組長度,高位元組在前,低位元組在後。

  采樣點計算:SMP=(SJW+1 + TSEG1+1)/(SJW+1 + TSEG1+1 + TSEG2+1)。

● 常用波特率碼:高4位是仲裁域波特率(CAN),低4位是資料域波特率(CANFD)

仲裁域波特率碼對應表:

ZQWL-USBCANFD二次開發通訊協定V1.04
ZQWL-USBCANFD二次開發通訊協定V1.04
ZQWL-USBCANFD二次開發通訊協定V1.04

 資料域波特率碼對應表:

ZQWL-USBCANFD二次開發通訊協定V1.04

  ●濾波器組号:每個通道均有14組硬體濾波器,組号取值範圍0~13;

  組使能:0x00為禁止該組;0x01為開啟該組;注意,裝置從0組開始查詢該位,遇到一個不為0x01的組時,退出查詢,即便是後面再有使能的組也無效。

  ●濾波器幀類型:0x00為标準幀;0x01為擴充幀;

  ●濾波驗收ID和掩碼:

  濾波驗收ID:用于比對CAN(FD)接收到的幀ID,以确定該幀是否被接收,十六進制。

  掩碼:用于屏蔽濾波驗收ID裡的某些位,以确定驗收碼某些位(bit)是否參與比對(對應位為0不參與比對,為1參與比對),十六進制。

  舉例1:濾波幀類型選擇“标準幀”;“濾波驗收ID”填001,“掩碼”填7FF;

  釋義:由于标準幀ID隻有11位,濾波驗收ID和掩碼最後11位有意義, 掩碼最後11位全是1,是以濾波驗收ID的後11位全部參與比對,是以上述設定可以讓幀ID為001的标準幀通過。

  舉例2:濾波幀類型選擇“标準幀”;“濾波驗收ID”填010,“過濾屏蔽碼”填7F0釋義:同例1,标準幀隻有11位有效,掩碼的最後4位是0,表示濾波驗收ID的最後4位不參與對比,是以上述設定可以讓幀ID從010到01F的一組标準幀通過。

  舉例3:濾波幀類型選擇“擴充幀”;“濾波驗收ID”填00 03 04 01,“掩碼”填1F FF FF FF;

  釋義:擴充幀有29位,掩碼的後29位全為1,表示濾波驗收ID的後29位全部參與比對,是以上述設定可以讓幀ID為00 03 04 01的擴充幀通過。

  舉例4:濾波幀類型選擇“擴充幀”;“濾波驗收ID”填00 03 04 00,“掩碼”填1F F0 FF FF;

  釋義:根據上述設定可以讓幀ID從00 00 04 00到00 0F 04 00的一組擴充幀通過(注意隻是标紅色的0到F變化,04 00為固定)。

●系統控制指令

  可以通過這個指令實作将設定好的參數寫入到裝置裡(即斷電不丢失)。

  生效參數:0x00為不生效(斷電參數丢失),0x01為生效(儲存到flash中,斷電不丢失);

  系統複位:0x00為系統不複位,0x01為系統複位;

  CAN0開關:0x00為關閉CAN0,0x01為開啟CAN0;

  CAN1開關:0x00為關閉CAN1,0x01為開啟CAN1;

舉例說明(用序列槽助手作為上位機):

①讀取裝置資訊

上位機發送(Hex格式):49 3B 40 52 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 45 2E

ZQWL-USBCANFD二次開發通訊協定V1.04

②讀取裝置序列号

上位機發送(Hex格式):49 3B 41 52 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 45 2E

ZQWL-USBCANFD二次開發通訊協定V1.04

③設定CAN參數

設定CAN0參數:仲裁域波特率250kbps,資料域波特率500kbps

上位機發送(Hex格式):49 3B 42 57 00 00 45 00 00 00 00 00 00 00 00 00 00 00 00 00 45 2E

ZQWL-USBCANFD二次開發通訊協定V1.04

注意,設定完後,還要發送生效參數并開啟CAN0指令:

49 3B 44 57 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 45 2E

ZQWL-USBCANFD二次開發通訊協定V1.04

  開啟任一CAN通道後,裝置開始向上位機發心跳包。

2.3心跳包

  根據裝置的CAN(FD)的通道數量,心跳包分為2種格式:單雙通道裝置心跳包和4通道裝置心跳包。

2.3.1單雙通道心跳包格式

  單雙通道心跳包為裝置向上位機發送的資料包,心跳包長度為17位元組,含義如下:

ZQWL-USBCANFD二次開發通訊協定V1.04

  ●功能碼為0xFF(注意4通道功能碼是0xFE)。

  ●裝置狀态:1個位元組,定義如下:

ZQWL-USBCANFD二次開發通訊協定V1.04

開啟标志:0為未開啟,1為開啟;

總線狀态:

   00:總線正常;

   01:總線警告

   10:總線被動錯誤

   11:裝置離線(此時已不能再發送CAN(FD)封包)

2.3.24通道心跳包格式

  4通道心跳包為裝置向上位機發送的資料包,心跳包長度為32位元組,含義如下:

ZQWL-USBCANFD二次開發通訊協定V1.04

  ●功能碼為0xFE(注意單雙通道功能碼是0xFF)。

  ●CAN0~1裝置狀态:1個位元組,定義如下:

ZQWL-USBCANFD二次開發通訊協定V1.04

  ●CAN2~3裝置狀态:1個位元組,定義如下:

ZQWL-USBCANFD二次開發通訊協定V1.04

  開啟标志:0為未開啟,1為開啟;

總線狀态:

     00:總線正常;

     01:總線警告

     10:總線被動錯誤

     11:裝置離線(此時已不能再發送CAN(FD)封包)

2.3.3心跳包參數含義

  ●發送速率:每秒發送的CAN(FD)封包個數。

  ●接收速率:每秒接收的CAN(FD)封包個數。

  ●錯誤計數器:

  包括發送錯誤計數器和接收錯誤計數器,這些狀态直接反映了總線的通暢情況,當接收錯誤計數器值大于127時,總線幾乎已經癱瘓。當出現錯誤值較高的情況(40以上),表示總線的通訊出現比較嚴重的阻塞,此時就有必要調整CAN(FD)網絡的波特率值或增加CAN(FD)網橋,以提高CAN(FD)總線品質。當總線通信良好時,錯誤計數器一般都能維持在0。

  在沒有資料向CAN(FD)發送時,心跳包每隔1秒向上位機發送一次,當有資料向CAN(FD)發送時,裝置立即向上位機發送一條心跳包。

2.4CAN(FD)資料收發指令

  通過該指令可以實作CAN(FD)封包的發送和接收,封包格式如下:

ZQWL-USBCANFD二次開發通訊協定V1.04

  ●BYTE0:幀頭固定為0x5A;

  ●BYTE1:幀資訊1,包含CAN通道和CAN(FD)封包資料長度DLC;

    該位元組的每個bit位的含義如下:

ZQWL-USBCANFD二次開發通訊協定V1.04

  當為CAN幀時,DLC的取值範圍是0~8;

  當為CANFD幀時,DLC取值為0~8、12、16、20、24、32、48、64。

  注意,BYTE1為0xFF或0XFE時為裝置發向上位機的心跳包,接收資料時需要注意。

  ●BYTE2:幀資訊2,包含發送類型、幀格式、幀類型和是否加速等資訊,含義定義如下:

ZQWL-USBCANFD二次開發通訊協定V1.04

  注意:CAN通道号有3個bit構成,從高位到低位分别是:BYTE2的Bit4、Bit3、BYTE1的Bit7。取值為0x00~0x07,分别對應CAN0~CAN7通道。

  正常發送:在ID仲裁丢失或發送出現錯誤時,CAN控制器會自動重發,直到發送成功,或 發送逾時(逾時時間1秒),或總線關閉。

  單次發送:在一些應用中,允許部分資料丢失,但不能出現傳輸延遲時,自動重發就沒有意 義了。在這些應用中,一般會以固定的時間間隔發送資料,自動重發會導緻後面的資料無法發送,出現傳輸延遲。使用單次發送,仲裁丢失或發送錯誤,CAN 控制器不會重發封包。

  ●BYTE3~6:CAN(FD)幀ID,一共4個位元組。标準幀時,隻有BYTE5~6的低11bit有效;擴充幀時,29bit有效。

  注意,BYTE3的最高位(Bit7)是CAN協定類型标志:

  0:CAN幀;

  1:CANFD幀;

  ●幀資料:長度為DLC。

  ●幀尾:一個位元組,固定為0xA5

  當上位機向裝置發送CAN(FD)資料包時,裝置收到後會立即傳回一條心跳包。