声明:本文仅是自己的阅读笔记,不作为任何商业用途,大多数资料是通过大疆官网查询的,如有雷同,纯属巧合!!!

目录

一、大疆M3508电机

1.大疆电机简介

2.驱动方式

(1)、PWM驱动

(2)、CAN通信驱动

二、CAN通信协议

1.CAN通信简介

(1). 闭环结构(标准工作模式)

(2). 开环结构(异常/简化模式)

2.CAN通信格式

(一)、数据帧的完整组成段落(从左到右传输顺序)

(二)、其他帧类型的关键段落补充

3.大疆电机CAN数据帧报文格式

三、STM32cubeMX配置

四、代码展示


一、大疆M3508电机

1.大疆电机简介

大疆M3508是大疆公司推出的一款高性能无刷直流电机,主要用于无人机、航模及机甲机器人等领域 。

2.驱动方式

(1)、PWM驱动

大疆的C620电调内部自带PID闭环控制,当使用PWM控制大疆3508电机搭配的C620电调时,只需要给电调发送占空比信号,电调内部会自动进行PID控制计算,形成转速闭环 。电调会根据接收到的PWM信号脉宽来确定目标转速,同时通过内部的传感器(如霍尔传感器等)实时检测电机的实际转速,将实际转速与目标转速进行比较,然后通过PID算法调整输出,以保证电机转速稳定在目标值附近。

(2)、CAN通信驱动

硬件连接 :将大疆开发板(如A型、C型)的CAN接口(如CAN1或CAN2)的CAN_H和CAN_L线分别连接到C620调速器的CAN_H和CAN_L接口,C620调速器输出端连接M3508电机。

软件设置 :CAN总线初始化:使用STM32CubeMX配置CAN外设,启用CAN模块,设置波特率(M3508常用1Mbps,需与电调一致),并配置接收过滤器。例如,设置接收标准ID为0x200~0x207的报文,过滤器模式为屏蔽位模式,FIFO0模式。

发送控制指令:M3508电机的控制指令通过标准数据帧发送,ID为“0x200 + 电机编号”,数据域为8字节,包含目标电流值。如向1号电机发送目标电流值,可先将电流值转换为字节数组,再通过HAL库函数HAL_CAN_AddTxMessage发送。

接收反馈数据:M3508电机会返回包含转子位置、转速、电流的反馈帧,ID为“0x200 + 电机编号”。可通过设置接收中断回调函数HAL_CAN_RxFifo0MsgPendingCallback,在回调函数中处理接收到的数据,获取电机的状态信息。

PID闭环控制:由于使用CAN控制时,C620电调不执行内部的速度PID控制,需要外部控制器进行PID运算 。可在控制循环中,根据电机的目标转速和实际转速,通过PID算法计算出目标电流值,再通过CAN总线下发给电机,从而实现速度闭环控制。

二、CAN通信协议

1.CAN通信简介

CAN通信全称控制器局域网总线(CAN,Controller Area Network)是一种用于实时应用的串行通讯协议总线,它可以使用双绞线来传输信号,是世界上应用最广泛的现场总线之一。

CAN总线是两根差分信号线,分别是CAN_H和CAN_L,这是CAN通信实现抗干扰、远距离传输的核心。

CAN_H(CAN High):高电平信号线,显性电平约3.5V,隐性电平约2.5V;

CAN_L(CAN Low):低电平信号线,显性电平约1.5V,隐性电平约2.5V;

通信时靠两者的电压差(约2V) 传输信号,差分设计能大幅抵御电磁干扰,适配工业/车载/机器人等复杂环境。

CAN总线本质是“差分闭环”设计,开环是异常/简化场景,闭环是标准工作状态,核心差异在信号回路和可靠性。

(1). 闭环结构(标准工作模式)

定义:CAN_H与CAN_L构成完整差分回路,两端接120Ω终端电阻,信号通过两线电压差传输。

特点:抗干扰极强、传输距离远、信号稳定,是汽车、机器人(RoboMaster)等工业/嵌入式场景的标准用法。

(2). 开环结构(异常/简化模式)

定义:仅用CAN_H或CAN_L单线传输,或未接终端电阻、总线断开,无完整差分回路。

特点:抗干扰极差、传输距离极短(仅几米)、易丢包,仅用于调试排查(如测试收发器是否输出信号)或极端简化场景(不推荐正式使用)。

2.CAN通信格式

以CAN 2.0核心的数据帧(标准帧+扩展帧)为例:

(一)、数据帧的完整组成段落(从左到右传输顺序)

1. 帧起始(SOF)

位数:1位

逻辑值:固定为显性位(逻辑0)

核心功能:标志一帧数据的开始,同时触发总线上所有节点的时钟同步(CAN总线是异步通信,靠SOF校准时序)

规则:只有当总线处于空闲状态(隐性位,逻辑1)时,才能发送SOF,避免帧冲突

2. 仲裁段(Arbitration Field)

核心功能:定义帧的ID(标识数据用途),同时决定总线竞争优先级(显性位优先级高于隐性位,ID越小优先级越高)

标准帧(11位ID):

组成:11位标识符(ID10~ID0) + 1位远程传输请求位(RTR)

细节:RTR=0(显性)表示数据帧,RTR=1(隐性)表示远程帧;ID是核心,比如大疆电调的控制帧会用特定ID标识“转速指令”“状态反馈”

扩展帧(29位ID):

组成:11位基础ID(ID28~ID18) + 1位替代远程请求位(SRR,隐性1) + 1位ID扩展标志(IDE,隐性1) + 18位扩展ID(ID17~ID0) + 1位RTR位

细节:SRR用于替代标准帧的RTR位,避免格式冲突;IDE=1区分扩展帧(标准帧IDE=0),确保标准帧优先级高于同基础ID的扩展帧

3. 控制段(Control Field)

位数:4位(标准帧+扩展帧一致)

组成:2位保留位(r0、r1,默认显性0,预留未来扩展) + 2位数据长度码(DLC[3:0])

核心功能:告知接收方“数据段有多少字节”

细节:DLC取值0~8,对应数据段长度0~8字节(比如DLC=3表示数据段3字节);即使DLC=8但实际数据不足8字节,也需填充至8字节(或按协议约定处理)

4. 数据段(Data Field)

 长度:0~8字节(CAN 2.0),CAN FD可扩展至0~64字节

核心功能:存储实际要传输的业务数据(比如传感器数值、设备控制指令)

细节:字节顺序按“高位在前(MSB)”或“低位在前(LSB)”约定(比如大疆协议通常指定MSB);每个字节8位,无校验位(靠后续CRC保障)

5. CRC段(CRC Field)

 组成:15位CRC校验序列(CRC[14:0]) + 1位CRC界定符(CRC Delimiter,隐性1)

核心功能:检测数据传输错误(比如总线干扰导致的位翻转)

细节:CRC校验基于“帧起始+仲裁段+控制段+数据段”的所有位计算;接收节点会同步计算,若结果与发送的CRC序列不一致,判定为错误并触发错误帧

6. ACK段(Acknowledgment Field)

 组成:1位应答槽(ACK Slot) + 1位应答界定符(ACK Delimiter,隐性1)

核心功能:确认“接收节点已正确接收帧”

规则:发送方在应答槽发送隐性1;只要总线上有一个接收节点正确接收,就会发送显性0填充应答槽(表示“确认收到”);若应答槽仍为隐性1,发送方判定为“接收失败”,会重发该帧

7. 帧结束(EOF)

 位数:7位

逻辑值:固定为隐性位(逻辑1)

核心功能:标志一帧数据传输结束,告知所有节点“本帧已完成”

规则:EOF期间总线必须保持隐性,若出现显性位,会被判定为错误(比如帧中断)

(二)、其他帧类型的关键段落补充

远程帧:无数据段,仲裁段RTR=1(隐性),DLC表示“请求的数据长度”,其余段落(SOF、控制段、CRC、ACK、EOF)与数据帧一致

错误帧:无SOF、仲裁段等常规结构,由6位错误标志(主动错误=显性0,被动错误=隐性1) + 8位错误界定符(隐性1)组成

过载帧:无SOF,由6位过载标志(显性0) + 8位过载界定符(隐性1)组成,用于请求发送方延迟传输

帧间隔:由3位间歇场(隐性1) + 总线空闲场(任意长度隐性1)组成,仅用于分隔“数据帧/远程帧”与下一帧,避免信号叠加

3.大疆电机CAN数据帧报文格式

(1).电调接收报文数据格式(对应芯片发送报文格式)

标准帧格式:用于向电调发送控制指令控制电调的电流输出,两个标识符(0x200和0x1FF)各自对应控制4个ID的电调。控制电流值范围
-16384~0~16384,对应电调输出的转矩电流范围-20~0~20A。

电调ID一般设置为1-7,ID8一般不用。当ID设为8时,电机会自校准,疯狂转。具体原因就是电调反馈频率为1000hz,一条CAN报文108Bit,总线挂载7个电机,外加两个控制报文,108×9×1000=0.972Mbps,刚好是1M波特率上限。如果需要增加控制电机的数量,可以通过上位机(RM Assistant)来降频处理。

(2).电调发送报文数据格式(对应芯片接收报文格式)

三、STM32cubeMX配置

文章太长了,这些放到下一节

四、代码展示

文章太长了,这些放到下一节

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐