2020-08-21

					串口通讯协议

1. 使用3 线UART 异步通信(TX, RX, GND)采用专用命令和数据帧。
2. 主机发送命令帧,MCU单片机回复数据帧。
3.通讯方式:
串口UART TTL 电平:3.3V~5V
波特率:19200
校验位:None
数据位:8
停止位:1

  1. 命令数据帧格式如下:

帧头 类型码 指令码(或状态) 数据长度 数据1 数据2 ….数据N 校验码
数据帧头(1字节): 0x28
对于上位机类型码是0x01 对于MCU类型码是0x02
对于上位机指令码是指令 0x01 启动 0x00停止
对于MCU 指令码是返回状态 0x11 启动成功 0x00启动失败 0x21停止成功 0x20停止失败
数据长度(1字节):有效数据的长度,从数据1到数据N的长度!!!
数据(N字节):有效数据,长度因指令码不同而变化
校验码(1字节):除校验码字节以外的所有字节的异或和校验;
数据帧尾(1字节): 0x29
//校验码是从帧头0x28开始到校验码之前的所有数据的异或校验之和
static UINT8 ChkSum(UINT8 *pData,UINT8 count)
{
UINT8 chkSum=0;
while(count–)
{
chkSum^=(*pData++);
}
return (chkSum);
}
类型 0x01:表示上位机发给MCU
0x02:表示MCU回给上位机
指令 0x01:表示启动命令
0x00:表示停止命令
状态 0x11:表示启动成功
0x10:表示启动失败
0x21:表示停止成功
0x20:表示停止失败
帧头 0x28 对应 ASCII字符 ‘(‘
帧尾 0x29 对应 ASCII字符 ‘)’
校验码是从帧头开始到校验码之前的所有数据的异或校验之和
长度是从长度之后的字节到校验码之前的所有数据的长度
(1) 数据请求报文:PC发给MCU- 0x01
0 | 1 | 2 | 3 | 4 | 5 | 6 |
帧头 |类型 | 指令 | 长度 ||标准扩展 | 波特率 | 报文总数 |
0x28 |0x01 | 0x01 | LEN || CAN类型 | CAN波特率 | CAN报文总数 |
7 | 8 9 | 10 | 11 12 13 14 | 15~22 || 16~23|
CAN报文序号1 |发送周期| CAN报文1长度 | CAN报文1 ID | CAN报文1数据 || 校验码|
17~24|
帧尾
0x29

(2) 数据响应报文: MCU发给PC- 0x02
帧头 类型码 指令码 数据长度
0x28 |0x02 | 0x11 | LEN || CAN类型 | CAN波特率 | CAN报文总数 | CAN报文序号1 |发送周期 | CAN报文1长度 | CAN报文1 ID | CAN报文1数据 || 校验码|帧尾0x29

其中:
*LEN是有效数据长度 包含从CAN类型 到 发送周期 的数据字节!!!用双||加注了
*CAN类型 1-标准帧 2-扩展帧
*CAN波特率 1-125K 2-250K 3-500K
*CAN报文总数 表示有多少条报文需要发送
*CAN报文序列号 根据CAN报文总数而定 从1 到 CAN报文总数
*发送周期CAN报文1发送周期 2字节

  • CAN报文1长度 CAN报文1数据的长度 1到8,不包含CAN报文1 ID
  • CAN报文1 ID 4个字节表示
  • CAN报文1数据 根据CAN报文1长度而定的 从1 到8 字节
    *校验码 从0x28 …. CAN报文1数据 在内的数据异或校验和
    !!!!上面数据如无字节说明,其它类型均为1字节

下面是测试报文的数据,供参考解析协议

28 01 01 13 02 03 05 01 00 14 08 00 85 00 00 00 00 20 40 00 00 00 00 C7 29
28 01 01 13 02 03 05 02 00 64 08 00 20 00 40 00 00 00 00 00 00 00 00 31 29
28 01 01 13 02 03 05 03 00 64 08 02 D3 87 00 00 00 00 00 00 00 00 00 06 29
28 01 01 13 02 03 05 04 03 E8 08 04 50 00 00 00 00 01 00 00 00 00 00 8D 29
28 01 01 13 02 03 05 05 07 D0 08 05 7F 00 00 00 00 00 00 00 00 00 00 9F 29

下面是停止报文
28 01 00 00 29 29

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值