# dji_driver_v2.0 **Repository Path**: Ljunius/dji_driver_v2.0 ## Basic Information - **Project Name**: dji_driver_v2.0 - **Description**: 支持RM3508,M2006,GM6020等多种大疆电机控制 重新设计了can控制报文 使用了freertos - **Primary Language**: C - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 5 - **Forks**: 3 - **Created**: 2021-04-21 - **Last Updated**: 2025-10-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # dji_driver_v2.0 ## 介绍 支持RM3508,M2006,GM6020等多种大疆电机控制 重新设计了can控制报文 使用了freertos ## 使用 ### 配置 在`Core/Inc/config.h`中配置两项 `BOARDID`这块板子的ID `GM6020_USED`是否需要驱动GM6020电机 **注意:若使用GM6020电机,需要将GM6020电机ID设置在1~4之间。将C620、C610电调ID设置在5~8之间。C620和C610在板子中实际ID为电调显示的ID减去4** ### 用户侧使用 #### Simplelib使用 如果一代驱动板程序没有彻底摘除,可能出现重定义问题。需要删除`MotorType_TypeDef` `RM_MotorStatus_t` `MotorType` `RM_MotorStatus` `Motor` 的定义。 **如果需要读取驱动板发回信息,需要进行回调注册** `can_func.c`中`CAN_AcceptID_Std`需要包含`0x285` `0x286` `0x281` 务必记得修改数组长度 在`CAN_FuncInit()`中添加 ```cpp CAN_CallbackAdd(0x285, CAN_Callback_DJIv2_HomingOver);//接受Homing结束消息 CAN_CallbackAdd(0x286, CAN_Callback_DJIv2_PosArrival);//接受位置环到达信息 CAN_CallbackAdd(0x281, CAN_Callback_DJIv2_ReadInfo);//接受返回的电机信息 ``` ## CAN通讯协议 ## 接受报文格式
功能 CanID D0 D1 D2 D3 D4 D5 D6 D7
MotorOn boardID + 0x200 motorID 1
MotorOff 2
velCfg 3        
posCfg maxPosVel 4 maxPosVel
curCfg 5        
velCtrl vel 6 vel
posCtrl pos 7 pos
curCtrl cur 8 cur
Homing vel cur 9 vel cur
velCtrlAll boardID + 0x204 vel1 vel2 vel3 vel4
posCtrlAll boardID + 0x208 pos1 pos2 pos3 pos4
## 反馈报文格式
功能 CanID D0 D1 D2 D3 D4 D5 D6 D7
returnInfo boardID + 0x280 高两位为电机id,低六位为vel高六位 vel低8位(vel采用14位移码存储) cur(int16) pos(float)
homingOver boardID + 0x285 boardId motorId
PosArrival boardID + 0x286 boardId motorId