跳转到内容

MotorDrivers::DJI API

文档稀疏
符号
55
已记录
32
类型
3
继承关系
1
源码分支
main

23 / 55 个公开 API 符号没有说明。

继承关系总览

继承图尚未加载。

全部继承关系

共 3 个类型

类型目录
类

motors::DJIMotor

查看源码

DJI 电机对象 注册到某条 CAN 总线的反馈映射表 解析 0x201 ~ 0x208 的反馈报文 保存零点、圈数、速度等状态 提供聚合发送所需的目标电流缓存 负责:

继承关系

基类
  • IMotor公开

构造与析构

2

DJIMotor

函数公开
        motors::DJIMotor::DJIMotor (const Config &cfg)
      

上游未提供说明。

motors/DJI/dji.hpp:76

~DJIMotor

函数公开
        motors::DJIMotor::~DJIMotor () override
      

上游未提供说明。

motors/DJI/dji.hpp:77

成员函数

12

CANBaseReceiveCallback

函数公开静态
        void motors::DJIMotor::CANBaseReceiveCallback (const CAN_HandleTypeDef *hcan, const CAN_RxHeaderTypeDef *header, const uint8_t *data)
      

统一的 CAN 接收入口 如果项目里已经有统一 CAN 分发器,推荐把它注册到分发器中;否则也可以在 HAL 的 FIFO 回调里直接调用它。

motors/DJI/dji.hpp:133

CAN_FilterInit

函数公开静态
        void motors::DJIMotor::CAN_FilterInit (CAN_HandleTypeDef *hcan, uint32_t filter_bank)
      

初始化 DJI 反馈对应的 CAN 滤波器

motors/DJI/dji.hpp:122

SendIqCommand

函数公开静态
        void motors::DJIMotor::SendIqCommand (CAN_HandleTypeDef *hcan, IqSetCMDGroup cmd_group)
      

把某组 DJI 电机当前缓存的电流值打包发送到总线

motors/DJI/dji.hpp:126

decode

函数公开
        void motors::DJIMotor::decode (const uint8_t data[8])
      

解码 8 字节 DJI 反馈报文,并把单圈机械角度展开成连续角度 data CAN 数据段

motors/DJI/dji.hpp:98

defaultControlMode

函数公开const
        controllers::ControlMode motors::DJIMotor::defaultControlMode () const override
      

上游未提供说明。

motors/DJI/dji.hpp:101

getAngle

函数公开const
        float motors::DJIMotor::getAngle () const override
      

获取输出轴角度 角度,单位 deg

motors/DJI/dji.hpp:83

getIqCMD

函数公开const
        int16_t motors::DJIMotor::getIqCMD () const
      

取出缓存中的电流命令 SendIqCommand() 这个值会被统一打包发送。

motors/DJI/dji.hpp:117

getVelocity

函数公开const
        float motors::DJIMotor::getVelocity () const override
      

获取输出轴速度 速度;当前 DJI 实现单位为 rpm

motors/DJI/dji.hpp:88

isConnected

函数公开const
        bool motors::DJIMotor::isConnected () const override
      

上游未提供说明。

motors/DJI/dji.hpp:99

resetAngle

函数公开
        void motors::DJIMotor::resetAngle () override
      

把当前反馈角度重置为零点

motors/DJI/dji.hpp:92

setCurrent

函数公开
        void motors::DJIMotor::setCurrent (const float current) override
      

上游未提供说明。

motors/DJI/dji.hpp:108

supportsCurrent

函数公开const
        bool motors::DJIMotor::supportsCurrent () const override
      

上游未提供说明。

motors/DJI/dji.hpp:106

成员变量

12

abs_angle_

变量私有
        float motors::DJIMotor::abs_angle_
      

输出轴绝对角度,单位 deg

motors/DJI/dji.hpp:158

feedback_

变量私有
        struct motors::DJIMotor::@247072001077040017155050113057011053074357223165 motors::DJIMotor::feedback_
      

上游未提供说明。

motors/DJI/dji.hpp:155

feedback_count_

变量私有
        uint32_t motors::DJIMotor::feedback_count_
      

接收到的反馈数据数量,用于上电自动清零

motors/DJI/dji.hpp:145

inv_reduction_rate_

变量私有
        float motors::DJIMotor::inv_reduction_rate_
      

总减速比的倒数,用于把内部量换算到输出轴

motors/DJI/dji.hpp:142

mech_angle

变量公开
        float motors::DJIMotor::mech_angle
      

电机反馈侧单圈机械角度,单位 deg

motors/DJI/dji.hpp:149

round_cnt

变量公开
        int32_t motors::DJIMotor::round_cnt
      

跨圈累计,用于把单圈机械角度展开成连续角度

motors/DJI/dji.hpp:154

watchdog_

变量私有
        service::Watchdog motors::DJIMotor::watchdog_
      

上游未提供说明。

motors/DJI/dji.hpp:146

嵌套类型

3

IqSetCMDGroup

枚举公开

电流指令发送分组 DJI 协议一次报文能携带 4 台电机的电流命令,因此按 1~4、5~8 分成两组。

IqCMDGroup_1_4 = 0U
控制 1~4 号电机
IqCMDGroup_5_8 = 4U
控制 5~8 号电机
motors/DJI/dji.hpp:45

Type

枚举公开

已封装的 DJI 电机类型

M2006_C610
M2006 + C610.
M3508_C620 = 0U
M3508 + C620.
MOTOR_TYPE_COUNT
类型计数,占位用
motors/DJI/dji.hpp:54
结构体

motors::DJIMotor::Config

查看源码

DJI 电机配置

成员变量

6

auto_zero

变量公开
        bool motors::DJIMotor::Config::auto_zero
      

上电收够一段稳定反馈后,是否自动把当前角度设为零点

motors/DJI/dji.hpp:71

hcan

变量公开
        CAN_HandleTypeDef* motors::DJIMotor::Config::hcan
      

所在 CAN 总线

motors/DJI/dji.hpp:67

id1

变量公开
        uint8_t motors::DJIMotor::Config::id1
      

电机编号,范围 1~8,对应反馈 ID 0x201 ~ 0x208

motors/DJI/dji.hpp:69

reduction_rate

变量公开
        float motors::DJIMotor::Config::reduction_rate
      

外接减速比,最终输出角度和速度会按它换算

motors/DJI/dji.hpp:73

reverse

变量公开
        bool motors::DJIMotor::Config::reverse
      

是否把输出方向整体反向

motors/DJI/dji.hpp:72
结构体

motors::DJI_FeedbackMap

查看源码

上游未提供类型说明。

成员变量

2

motors

变量公开
        std::array<DJIMotor*, kMaxMotorPerCan> motors::DJI_FeedbackMap::motors
      

反馈槽位

motors/DJI/dji.cpp:28

其他公开符号

函数

9

motors::find_map

函数静态
        static DJI_FeedbackMap * motors::find_map (const CAN_HandleTypeDef *hcan)
      

上游未提供说明。

motors/DJI/dji.cpp:49

motors::get_motor

函数静态
        static DJIMotor * motors::get_motor (const CAN_HandleTypeDef *hcan, const CAN_RxHeaderTypeDef *header)
      

上游未提供说明。

motors/DJI/dji.cpp:107

motors::get_reduction_rate

函数静态
        static constexpr float motors::get_reduction_rate (const DJIMotor::Type type)
      

上游未提供说明。

motors/DJI/dji.cpp:118

motors::id_to_index

函数
        size_t motors::id_to_index (const size_t id1)
      

上游未提供说明。

motors/DJI/dji.cpp:35

motors::read_int16

函数静态
        static int16_t motors::read_int16 (const uint8_t data[2])
      

上游未提供说明。

motors/DJI/dji.cpp:154

motors::register_motor

函数静态
        static bool motors::register_motor (CAN_HandleTypeDef *hcan, const size_t id1, DJIMotor *motor)
      

上游未提供说明。

motors/DJI/dji.cpp:60

motors::unregister_motor

函数静态
        static bool motors::unregister_motor (CAN_HandleTypeDef *hcan, const size_t id1)
      

上游未提供说明。

motors/DJI/dji.cpp:90

motors::valid_id0

函数
        bool motors::valid_id0 (const size_t id0)
      

上游未提供说明。

motors/DJI/dji.cpp:43

motors::valid_id1

函数
        bool motors::valid_id1 (const size_t id1)
      

上游未提供说明。

motors/DJI/dji.cpp:39

变量

4

motors::kMaxMotorPerCan

变量
        size_t motors::kMaxMotorPerCan
      

上游未提供说明。

motors/DJI/dji.cpp:20

motors::map

变量静态
        std::array<DJI_FeedbackMap, CAN_NUM> motors::map
      

上游未提供说明。

motors/DJI/dji.cpp:32

文件

2

motors/DJI/dji.cpp

文件

DJI 电机驱动实现 syhanjin 2026-01-28 把 CAN 反馈帧映射到具体电机对象 把原始反馈换算成输出轴角度与速度 把多台电机的电流命令聚合打包发送 主要完成三件事:

motors/DJI/dji.cpp

motors/DJI/dji.hpp

文件

DJI 电机驱动封装 syhanjin 2026-01-28 这里封装的是 DJI 常见 CAN 电机反馈与电流控制协议。 角度反馈 速度反馈 低层电流输入 从能力设计上看,DJI 这一路主要提供: SendIqCommand() 和 DM / VESC 不同,DJI 电机的电流命令不是“调用一次就马上发一帧”, 而是先写入各个电机对象的目标值,再由按 4 台电机一组统一打包发送。 当前 DJI 实现里,速度接口单位为 rpm。

motors/DJI/dji.hpp