二次开发—串行转换CAN协议的定义
串行 (USB) 转换CAN协议的定义
串行端口波特率默认为2Mbps,8位数据位,1位停止位,不检查。转换器内支持两种通信协议,一种是固定的20字节通信协议,另一种是可变长度通信协议。
可变长度通信格式
请Protocol框中选Variable length,单击 "设置并开始" 按钮,

转换器的内部通信是可变长度的通信协议,具体协议如下:
| 字段 | 定义 | 说明 |
|---|---|---|
| 数据包报头 | 0xAA | 数据包的起始标志 |
| Type | 0xC0类型 |
|
| 帧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,单击 "设置并开始" 按钮,

转换器的内部通信是固定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配置命令
| 序号 | 定义 | 说明 |
|---|---|---|
| 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位(红色部分) |
