跳转到内容

MotorDrivers::DJI API

文档稀疏
符号
59
已记录
34
修订版本
0.1.0+d8ebbce805b2

25 / 59 个公开 API 符号没有说明。

命名空间

1

1

motors::DJIMotor

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

motors/DJI/dji.hpp:37

结构体

2

函数

27

DJI_CAN_Fifo0ReceiveCallback

                    void DJI_CAN_Fifo0ReceiveCallback (CAN_HandleTypeDef *hcan)
                  

DJI FIFO0 中断回调包装 CANBaseReceiveCallback() 如果项目没有统一 CAN 分发器,可以直接使用这个 HAL 包装;否则更推荐统一把报文分发到。

motors/DJI/dji.hpp:175

DJI_CAN_Fifo1ReceiveCallback

                    void DJI_CAN_Fifo1ReceiveCallback (CAN_HandleTypeDef *hcan)
                  

DJI FIFO1 中断回调包装 CANBaseReceiveCallback() 如果项目没有统一 CAN 分发器,可以直接使用这个 HAL 包装;否则更推荐统一把报文分发到。

motors/DJI/dji.hpp:182

motors::DJIMotor::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

motors::DJIMotor::CAN_FilterInit

                    void motors::DJIMotor::CAN_FilterInit (CAN_HandleTypeDef *hcan, uint32_t filter_bank)
                  

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

motors/DJI/dji.hpp:122

motors::DJIMotor::DJIMotor

                    motors::DJIMotor::DJIMotor (const Config &cfg)
                  

上游未提供说明。

motors/DJI/dji.hpp:76

motors::DJIMotor::SendIqCommand

                    void motors::DJIMotor::SendIqCommand (CAN_HandleTypeDef *hcan, IqSetCMDGroup cmd_group)
                  

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

motors/DJI/dji.hpp:126

motors::DJIMotor::decode

                    void motors::DJIMotor::decode (const uint8_t data[8])
                  

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

motors/DJI/dji.hpp:98

motors::DJIMotor::defaultControlMode

                    controllers::ControlMode motors::DJIMotor::defaultControlMode () const override
                  

上游未提供说明。

motors/DJI/dji.hpp:101

motors::DJIMotor::getAngle

                    float motors::DJIMotor::getAngle () const override
                  

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

motors/DJI/dji.hpp:83

motors::DJIMotor::getIqCMD

                    int16_t motors::DJIMotor::getIqCMD () const
                  

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

motors/DJI/dji.hpp:117

motors::DJIMotor::getVelocity

                    float motors::DJIMotor::getVelocity () const override
                  

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

motors/DJI/dji.hpp:88

motors::DJIMotor::isConnected

                    bool motors::DJIMotor::isConnected () const override
                  

上游未提供说明。

motors/DJI/dji.hpp:99

motors::DJIMotor::resetAngle

                    void motors::DJIMotor::resetAngle () override
                  

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

motors/DJI/dji.hpp:92

motors::DJIMotor::setCurrent

                    void motors::DJIMotor::setCurrent (const float current) override
                  

上游未提供说明。

motors/DJI/dji.hpp:108

motors::DJIMotor::supportsCurrent

                    bool motors::DJIMotor::supportsCurrent () const override
                  

上游未提供说明。

motors/DJI/dji.hpp:106

motors::DJIMotor::~DJIMotor

                    motors::DJIMotor::~DJIMotor () override
                  

上游未提供说明。

motors/DJI/dji.hpp:77

motors::DJI_CAN_Fifo0ReceiveCallback

                    void motors::DJI_CAN_Fifo0ReceiveCallback (CAN_HandleTypeDef *hcan)
                  

上游未提供说明。

motors/DJI/dji.cpp:277

motors::DJI_CAN_Fifo1ReceiveCallback

                    void motors::DJI_CAN_Fifo1ReceiveCallback (CAN_HandleTypeDef *hcan)
                  

上游未提供说明。

motors/DJI/dji.cpp:293

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

枚举

2

motors::DJIMotor::IqSetCMDGroup

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

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

motors::DJIMotor::Type

已封装的 DJI 电机类型

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

变量

24

motors::DJIMotor::Config::auto_zero

                    bool motors::DJIMotor::Config::auto_zero
                  

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

motors/DJI/dji.hpp:71

motors::DJIMotor::Config::hcan

                    CAN_HandleTypeDef* motors::DJIMotor::Config::hcan
                  

所在 CAN 总线

motors/DJI/dji.hpp:67

motors::DJIMotor::Config::id1

                    uint8_t motors::DJIMotor::Config::id1
                  

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

motors/DJI/dji.hpp:69

motors::DJIMotor::Config::reduction_rate

                    float motors::DJIMotor::Config::reduction_rate
                  

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

motors/DJI/dji.hpp:73

motors::DJIMotor::Config::reverse

                    bool motors::DJIMotor::Config::reverse
                  

是否把输出方向整体反向

motors/DJI/dji.hpp:72

motors::DJIMotor::abs_angle_

                    float motors::DJIMotor::abs_angle_
                  

输出轴绝对角度,单位 deg

motors/DJI/dji.hpp:158

motors::DJIMotor::angle_zero_

                    float motors::DJIMotor::angle_zero_
                  

零点角度,单位 deg

motors/DJI/dji.hpp:140

motors::DJIMotor::feedback_

                    struct motors::DJIMotor::@247072001077040017155050113057011053074357223165 motors::DJIMotor::feedback_
                  

上游未提供说明。

motors/DJI/dji.hpp:155

motors::DJIMotor::feedback_count_

                    uint32_t motors::DJIMotor::feedback_count_
                  

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

motors/DJI/dji.hpp:145

motors::DJIMotor::inv_reduction_rate_

                    float motors::DJIMotor::inv_reduction_rate_
                  

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

motors/DJI/dji.hpp:142

motors::DJIMotor::iq_cmd_

                    int16_t motors::DJIMotor::iq_cmd_
                  

当前缓存的电流指令值

motors/DJI/dji.hpp:162

motors::DJIMotor::mech_angle

                    float motors::DJIMotor::mech_angle
                  

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

motors/DJI/dji.hpp:149

motors::DJIMotor::round_cnt

                    int32_t motors::DJIMotor::round_cnt
                  

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

motors/DJI/dji.hpp:154

motors::DJIMotor::velocity_

                    float motors::DJIMotor::velocity_
                  

输出轴角速度,单位 rpm

motors/DJI/dji.hpp:159

motors::DJIMotor::watchdog_

                    service::Watchdog motors::DJIMotor::watchdog_
                  

上游未提供说明。

motors/DJI/dji.hpp:146

motors::DJI_FeedbackMap::hcan

                    CAN_HandleTypeDef* motors::DJI_FeedbackMap::hcan
                  

CAN 句柄

motors/DJI/dji.cpp:27

motors::DJI_FeedbackMap::motors

                    std::array<DJIMotor*, kMaxMotorPerCan> motors::DJI_FeedbackMap::motors
                  

反馈槽位

motors/DJI/dji.cpp:28

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