二次开发—串行转换CAN协议的定义

来自Waveshare Wiki
跳转至: 导航搜索

串行 (USB) 转换CAN协议的定义

串行端口波特率默认为2Mbps,8位数据位,1位停止位,不检查。转换器内支持两种通信协议,一种是固定的20字节通信协议,另一种是可变长度通信协议。

可变长度通信格式

请Protocol框中选Variable length,单击 "设置并开始" 按钮, CAN-Variable-length.png
转换器的内部通信是可变长度的通信协议,具体协议如下:

可变长度通信协议格式
字段 定义 说明
数据包报头 0xAA 数据包的起始标志
Type 0xC0类型
  • bit5(帧类型0-标准帧(帧ID 2字节),1-扩展帧(帧ID 4字节))
  • bit4(帧格式0-数据帧,1-远程帧)
  • Bit0~3(帧数据长度0~8)
帧ID 扩展框架 1~8位(字节1)
9~16位(字节2)
17~24位(字节3)
25~29位(字节4)
标准框架 1~8位(字节1)
9~11位(字节2)
帧数据 可变长度 可以发送或接收数据1~8(0~8个数据)
结束代码 0x55 数据包的结束标志

示例说明(标准框架)

例如,将CAN标准帧ID发送到0x123,数据为0x11 0x22 0x33 0x44 0x55 0x66 0x77 0x88,串口发送的数据格式为:
AA C8 23 01 11 22 33 44 55 66 77 88 55

  * AA:报文头
  * C8:bit5为0(标准帧),bit4为0(数据帧),bit0~3为8(数据长度为8)
  * 23 01:帧ID 0x123
  * 11 22 33 44 55 66 77 88:CAN发送帧数据
  * 55:结束代码

例如,将CAN标准帧ID发送到0x103,数据为0x11 0x22,串口发送的数据格式为:
AA C2 03 01 11 22 55

  * AA:报文头
  * C2:bit5为0(标准帧),bit4为0(数据帧),bit0~3为2(数据长度为2)
  * 03 01:帧ID 0x103
  * 11 22:CAN发送帧数据
  * 55:结束代码

示例说明(扩展框架)

例如,将CAN扩展帧ID发送到0x1234567,数据为0x11 0x22 0x33 0x44 0x55 0x66 0x77 0x88,串口发送的数据格式为:
AA E8 67 45 23 01 11 22 33 44 55 66 77 88 55

  * AA:报文头
  * E8:bit5为1(扩展帧),bit4为0(数据帧),bit0~3为8(数据长度为8)
  * 67 45 23 01:帧ID 0x1234567
  * 11 22 33 44 55 66 77 88:CAN发送帧数据
  * 55:结束代码

例如,将CAN扩展帧ID发送到0x1033021,数据为0x11 0x22,串口发送的数据格式为:
AA E2 21 30 03 01 11 22 55

  * AA:报文头
  * E2:bit5为1(扩展帧),bit4为0(数据帧),bit0~3为2(数据长度为2)
  * 21 30 03 01:帧ID 0x1033021
  * 11 22:CAN发送帧数据
  * 55:结束代码

固定的20字节收发器协议

请Protocol框中选Fixed 20 bytes,单击 "设置并开始" 按钮, CAN-Fixed-20-bytes.png
转换器的内部通信是固定20字节的通信协议,具体协议如下:

固定20字节协议格式
字节位置 字段 说明
0 数据包报头 0xAA
1 数据包报头 0x55
2 类型 0x01
3 框架类型 0x01
4 框架格式 0x01
5 帧ID数据1 0x23
6 帧ID数据2 0x01
7 帧ID数据3 0x00
8 帧ID数据4 0x00
9 帧数据长度 0x08
10 帧数据1 0x11
11 帧数据2 0x22
12 帧数据3 0x33
13 帧数据4 0x44
14 帧数据5 0x55
15 帧数据6 0x66
16 帧数据7 0x77
17 帧数据8 0x88
18 储备 0x00
19 检查代码 从帧类型到错误代码的累加和低8位(例如0x93)

示例

例如,发送标准帧ID 0x123,数据为11 22 33 44 55 66 77 88,检查代码计算如下:
0x01 + 0x01 + 0x01 + 0x23 + 0x01 + 0x00 + 0x00 + 0x08 + 0x11 + 0x22 + 0x33 + 0x44 + 0x55 + 0x66 + 0x77 + 0x88 + 0x00 = 0x293
低8位为0x93


CAN配置命令

CAN类型命令有两种ox02 和 ox12,一种内部收发数据是固定20字节来收发数据,一种是可变长度来收发数据,两种方式不可互相通信,请区分并根据需要选择其中1种方式
序号 定义 说明
0 报文头 0xaa
1 报文头 0x55
2 类型 0x02-设置(用固定20字节协议收发数据);0x12-设置(用可变协议收发数据)
两种方式不可互相通信,请区分并根据需要选择其中1种方式
3 CAN波特率 0x01(1Mbps) 0x02 (800kbps) 0x03 (500kbps), 0x04 (400kbps), 0x05 (250kbps), 0x06 (200kbps), 0x07 (125kbps), 0x08 (100kbps), 0x09 (50kbps) 0x0a (20kbps) 0x0b (10kbps) 0x0c (5kbps)
4 帧类型 0x01-标准帧, 0x02 扩展帧
5 滤波ID1 1~8位,高字节在前,低字节在后
6 滤波ID2 9~16位,高字节在前,低字节在后
7 滤波ID3 17~24位,高字节在前,低字节在后
8 滤波ID4 25~32位,高字节在前,低字节在后
9 屏蔽ID1 1~8位,高字节在前,低字节在后
10 屏蔽ID2 9~16位,高字节在前,低字节在后
11 屏蔽ID3 17~24位,高字节在前,低字节在后
12 屏蔽ID4 25~32位,高字节在前,低字节在后
13 CAN模式 0x00-正常模式, 0x01-静默模式, 0x02-环回模式, 0x03-环回静默模式
14 自动重发 0x00——自动重发 0x01——禁止自动重发
15 备用 0x00
16 备用 0x00
17 备用 0x00
18 备用 0x00
19 校验码 从帧类型起到错误码止,累加和低8位(红色部分)