技术协议文档 - 串口通讯
1.串口设置
数据位 | 波特率 | 校验位 | 停止位 | 通讯频率 |
---|---|---|---|---|
8bit | 115200 | 无 | 1bit | 50HZ |
2.数据格式
地址编号 | 字段定义 | 数据内容 | 所占字节数 |
---|---|---|---|
0 | 帧头 | 0x0F | 1 |
1 | 起始地址(cmd) | 1 | |
2 | 数据长度 | N(十六进制) | 1 |
3+2N | 数据区 | 2N | |
4+2N | 校验和 | 从地址到数据求和 | 2 |
6+2N | 帧尾 | 0x14 | 1 |
帧头:0x0F ;
校验和:从地址到数据求和;
帧尾:0x14;
建议发送周期10ms-50ms。
3.控制器(STM32)接收的内容
也是上位机发送的内容。控制器接收的数据命令格式为:帧头(0x0F)+地址+数据长度(N) + 数据 + 数据校验和+帧尾(0x14)
表1控制器接收
功能说明 | 数据地址(cmd) | 数据长度(N) | 数据高八位 | 数据低八位 | 数据高八位 | 数据低八位 | … | 校验位 | 说明 | 发送周期 |
---|---|---|---|---|---|---|---|---|---|---|
设备启动 | 0x00 | 0x01(运动轮) | 0x01(启动滚刷) | 0x01(启动水泵) | 0x01 | 电机使能,传感器启动,0x00停止,参考例1。 | 单次 | |||
停止运动 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 停止运动 | 单次 | |||
运动控制 | 0x01 | 转速高八位 | 转速低八位 | 角度 | 参考例2 | 周期 | ||||
访问电机速度 | 0x02 | 电机l速度 | 电机r速度 | 返回电机数据,参考例3 | 单次 | |||||
访问电机电流 | 0x03 | 电机l电流 | 温度 | 电机r电流 | 温度 | 参考例4 | 单次 | |||
访问电源数据 | 0x04 | 返回数据参考表2 | 单次 | |||||||
访问启动状态 | 0x05 | 0x01(运动轮) | 0x01(启动滚刷) | 0x01(启动水泵) | 返回0x01表示正常启动,0x00表示未启动 | |||||
返回错误信息 | 0x06 | 返回错误信息参考表3 | 单次 | |||||||
4.控制器(STM32)发送的内容
控制器发送的数据命令格式为:帧头(0x0F)+地址+数据长度(N) + 数据高八位 + 数据低八位置 + 数据高八位 + 数据低八位置+ 数据校验和+帧尾
表2控制器发送
功能说明 | 数据地址(cmd) | 数据长度(N) | 数据高八位 | 数据低八位 | 数据高八位 | 数据低八位 | … | 校验位 | 说明 | |
---|---|---|---|---|---|---|---|---|---|---|
设备启动 | 0x00 | 单次 | ||||||||
运动控制 | 0x01 | 转速高八位 | 转速低八位 | 角度 | 角度 | 返回机器人数据 | 周期 | |||
访问电机速度 | 0x02 | 电机l速度 | 电机r速度 | 返回电机数据 | 单次 | |||||
访问电机电流 | 0x03 | 电机l电流 | 温度 | 电机r电流 | 温度 | 单次 | ||||
访问电源数据 | 0x04 | 电源电压 | 电源温度 | 单次 | ||||||
访问启动状态 | 0x05 | 0x01(运动轮) | 0x01(启动滚刷) | 0x01(启动水泵) | 返回0x01表示正常启动,0x00表示未启动 | |||||
返回错误信息 | 0x06 | 水泵 | 电源电压 | 电机l速度 | 电机r速度 | 返回错误信息参考表3 | 单次 |
其他说明
表3其他说明
水泵返回数据 | 说明 | 电源返回数据 | 说明 |
---|---|---|---|
0x01 | 正常工作 | 0x01 | 正常工作 |
0x00 | 未启动 | 0x00 | 电压过低 |
0x02 | 水压异常 | 0x02 | 温度过高 |
5.上位机下发指令案例说明
例1.Cmd:0x00 (启动设备)
帧头:0x0F
地址:0x00
数据长度(len):0x02
数据高八位:0x01(启动左右电机)
数据低八位置 :0x01(启动滚刷)
数据高八位 :0x01(启动水泵)
数据低八位置:0x01
数据校验和:0x0006
帧尾:0x14
指令示例:0F 00 02 01 01 01 01 00 06 14
返回指令:0F 00 02 01 01 01 01 00 06 14 (返回相同值成功启动)
例2.Cmd:0x01 (运动控制)
帧头:0x0F
地址:0x01
数据长度(N):0x02
速度数据高八位:0x00
速度数据低八位置 :0xC8(200rpm)
角速度数据高八位 :0x00
角速度数据低八位置:0x05(5rad)
数据校验和:0x00D6
帧尾:0x14
指令示例:0F 01 02 00 C8 00 05 00 D6 14
返回指令:0F 01 02 00 C8 00 05 00 D6 14 (实际情况返回会有误差)
例3.Cmd:0x02 (访问电机速度)
帧头:0x0F
地址:0x02
数据长度(len):0x02
数据高八位:0x00
数据低八位置 :0x00
数据高八位 :0x00
数据低八位置:0x00
数据校验和:0x0005
帧尾:0x14
指令示例:0F 03 02 00 00 00 00 00 05 14
返回指令:0F 03 02 00 C8 00 C8 01 95 14 (假设返回电机速度都是200rpm)
例4.Cmd:0x03 (访问电机电流温度)
帧头:0x0F
地址:0x02
数据长度(len):0x02
数据高八位:0x00
数据低八位置 :0x00
数据高八位 :0x00
数据低八位置:0x00
数据校验和:0x04
帧尾:0x14
指令示例:0F 03 04 00 00 00 00 00 04 14
返回指令:0F 03 04 00 C8 00 C8 00 04 14 (假设返回电机速度都是200rpm)