一、A板介绍*
- A板外部晶振为12MHZ,最高主频为168MHZ
二、CAN总线通信原理
1. CAN总线是什么
1.1 CAN总线简介
CAN 是 Controller Area Network 的缩写,最初是汽车行业为了减少车身上的线束,而且还能进行大量数据的高速通信,由德国电气商博世公司在1986 年开发出的面向汽车的通信协议。现在,CAN 的高性能和可靠性已被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面。RM的电机(3508、2006、6020)的控制也采用了CAN协议进行通信。
CAN 总线由 CAN_H 和 CAN_L 一对差分线构成,各个设备一起挂载在总线上。
参考文章:【RoboMaster】从零开始控制RM电机(2)-CAN通信原理及电调通信协议_can通讯 同步触发控制电机-CSDN博客
1.2 CAN通信的特点
1) 多主控制
多个单元同时开始发送时,发送高优先级 ID 消息的单元可获得发送权。
2) 消息的发送
所有的消息由固定格式发送,标识符(Identifier 以下称为 ID)决定优先级。
3) 通信速度
同一CAN总线网络,所有单元必须同一通信速率。
2. CAN通信协议
2.1 帧的种类
CAN通信由五种帧类型
其中数据帧和遥控帧有标准格式和扩展格式两种格式。
标准格式有 11 个位的标识符(Identifier: 以下称 ID),扩展格式有 29 个位的 ID。
控制RM电机使用标准帧。
2.2 数据帧
CAN总线数据帧的帧结构:
主要处理
- 帧起始
表示数据帧开始的段。 - 仲裁场
表示该帧优先级的段。 - 控制场
表示数据的字节数及保留位的段。 - 数据场
数据的内容,可发送 0~8 个字节的数据。 - CRC 场
检查帧的传输错误的段。 - 应答场
表示确认正常接收的段。 - 帧结尾
表示数据帧结束的段。
(1)仲裁场
CAN 的 ID 分为标准 ID 和 拓展 ID 两类,每个设备都有自己独有的ID,CAN通信通过仲裁ID决定优先级。
(2)控制场
控制场由 6 个位构成,表示数据段的字节数,C620电调的数据段长度为8
(3)数据场
如果控制场的DLC表示为DRRR,CAN 总线的一个数据帧中所需要传输的有效数据实际上就是这 8Byte。这8字节的排列顺序为从高到低。
三、电调通信
1. M3508&M2006电机
这两种电机代码通用
- M3508使用C620电调
- M2006使用C610电调
1.1 单片机->数据帧->电调
单片机向电调发送控制指令控制电调的电流输出。
一个数据帧只能给四个电机发送数据,
控制前四个电机时将ID设为 0x200
控制后四个电机时将ID设为 0x1FF
1.2 电调->数据帧->单片机
为了实现闭环控制,单片机需要接收电调的反馈报文得到电机的转速、机械转子角度、实时电流数据。
根据接收到的ID判断是哪一个电调的数据,电调反馈报文ID规定为 0x200+电调ID(1-8),如0x201(电调ID为1)。
2. GM6020电机
2.1 发送
2.2 接收
3. CubeMX配置CAN总线协议
- 波特率要设置成1M
4. 程序实现
4.1 CAN数据帧发送
1 | /** |
4.2 CAN数据帧接收
1 | /** |