motors
上游未提供说明。
motors/DJI/dji.cpp:170.1.0+d8ebbce805b225 / 59 个公开 API 符号没有说明。
上游未提供说明。
motors/DJI/dji.cpp:17DJI 电机对象 注册到某条 CAN 总线的反馈映射表 解析 0x201 ~ 0x208 的反馈报文 保存零点、圈数、速度等状态 提供聚合发送所需的目标电流缓存 负责:
motors/DJI/dji.hpp:37DJI 电机配置
motors/DJI/dji.hpp:65上游未提供说明。
motors/DJI/dji.cpp:25
void DJI_CAN_Fifo0ReceiveCallback (CAN_HandleTypeDef *hcan)
DJI FIFO0 中断回调包装 CANBaseReceiveCallback() 如果项目没有统一 CAN 分发器,可以直接使用这个 HAL 包装;否则更推荐统一把报文分发到。
motors/DJI/dji.hpp:175
void DJI_CAN_Fifo1ReceiveCallback (CAN_HandleTypeDef *hcan)
DJI FIFO1 中断回调包装 CANBaseReceiveCallback() 如果项目没有统一 CAN 分发器,可以直接使用这个 HAL 包装;否则更推荐统一把报文分发到。
motors/DJI/dji.hpp:182
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
void motors::DJIMotor::CAN_FilterInit (CAN_HandleTypeDef *hcan, uint32_t filter_bank)
初始化 DJI 反馈对应的 CAN 滤波器
motors/DJI/dji.hpp:122
motors::DJIMotor::DJIMotor (const Config &cfg)
上游未提供说明。
motors/DJI/dji.hpp:76
void motors::DJIMotor::SendIqCommand (CAN_HandleTypeDef *hcan, IqSetCMDGroup cmd_group)
把某组 DJI 电机当前缓存的电流值打包发送到总线
motors/DJI/dji.hpp:126
void motors::DJIMotor::decode (const uint8_t data[8])
解码 8 字节 DJI 反馈报文,并把单圈机械角度展开成连续角度 data CAN 数据段
motors/DJI/dji.hpp:98
controllers::ControlMode motors::DJIMotor::defaultControlMode () const override
上游未提供说明。
motors/DJI/dji.hpp:101
float motors::DJIMotor::getAngle () const override
获取输出轴角度 角度,单位 deg
motors/DJI/dji.hpp:83
int16_t motors::DJIMotor::getIqCMD () const
取出缓存中的电流命令 SendIqCommand() 这个值会被统一打包发送。
motors/DJI/dji.hpp:117
float motors::DJIMotor::getVelocity () const override
获取输出轴速度 速度;当前 DJI 实现单位为 rpm
motors/DJI/dji.hpp:88
bool motors::DJIMotor::isConnected () const override
上游未提供说明。
motors/DJI/dji.hpp:99
void motors::DJIMotor::resetAngle () override
把当前反馈角度重置为零点
motors/DJI/dji.hpp:92
void motors::DJIMotor::setCurrent (const float current) override
上游未提供说明。
motors/DJI/dji.hpp:108
bool motors::DJIMotor::supportsCurrent () const override
上游未提供说明。
motors/DJI/dji.hpp:106
motors::DJIMotor::~DJIMotor () override
上游未提供说明。
motors/DJI/dji.hpp:77
void motors::DJI_CAN_Fifo0ReceiveCallback (CAN_HandleTypeDef *hcan)
上游未提供说明。
motors/DJI/dji.cpp:277
void motors::DJI_CAN_Fifo1ReceiveCallback (CAN_HandleTypeDef *hcan)
上游未提供说明。
motors/DJI/dji.cpp:293
static DJI_FeedbackMap * motors::find_map (const CAN_HandleTypeDef *hcan)
上游未提供说明。
motors/DJI/dji.cpp:49
static DJIMotor * motors::get_motor (const CAN_HandleTypeDef *hcan, const CAN_RxHeaderTypeDef *header)
上游未提供说明。
motors/DJI/dji.cpp:107
static constexpr float motors::get_reduction_rate (const DJIMotor::Type type)
上游未提供说明。
motors/DJI/dji.cpp:118
size_t motors::id_to_index (const size_t id1)
上游未提供说明。
motors/DJI/dji.cpp:35
static int16_t motors::read_int16 (const uint8_t data[2])
上游未提供说明。
motors/DJI/dji.cpp:154
static bool motors::register_motor (CAN_HandleTypeDef *hcan, const size_t id1, DJIMotor *motor)
上游未提供说明。
motors/DJI/dji.cpp:60
static bool motors::unregister_motor (CAN_HandleTypeDef *hcan, const size_t id1)
上游未提供说明。
motors/DJI/dji.cpp:90
bool motors::valid_id0 (const size_t id0)
上游未提供说明。
motors/DJI/dji.cpp:43
bool motors::valid_id1 (const size_t id1)
上游未提供说明。
motors/DJI/dji.cpp:39电流指令发送分组 DJI 协议一次报文能携带 4 台电机的电流命令,因此按 1~4、5~8 分成两组。
IqCMDGroup_1_4 = 0UIqCMDGroup_5_8 = 4U已封装的 DJI 电机类型
M2006_C610M3508_C620 = 0UMOTOR_TYPE_COUNT
bool motors::DJIMotor::Config::auto_zero
上电收够一段稳定反馈后,是否自动把当前角度设为零点
motors/DJI/dji.hpp:71
CAN_HandleTypeDef* motors::DJIMotor::Config::hcan
所在 CAN 总线
motors/DJI/dji.hpp:67
uint8_t motors::DJIMotor::Config::id1
电机编号,范围 1~8,对应反馈 ID 0x201 ~ 0x208
motors/DJI/dji.hpp:69
float motors::DJIMotor::Config::reduction_rate
外接减速比,最终输出角度和速度会按它换算
motors/DJI/dji.hpp:73
bool motors::DJIMotor::Config::reverse
是否把输出方向整体反向
motors/DJI/dji.hpp:72
Type motors::DJIMotor::Config::type
电机类型
motors/DJI/dji.hpp:68
float motors::DJIMotor::abs_angle_
输出轴绝对角度,单位 deg
motors/DJI/dji.hpp:158
float motors::DJIMotor::angle_zero_
零点角度,单位 deg
motors/DJI/dji.hpp:140
Config motors::DJIMotor::cfg_
构造时保存的配置
motors/DJI/dji.hpp:138
struct motors::DJIMotor::@247072001077040017155050113057011053074357223165 motors::DJIMotor::feedback_
上游未提供说明。
motors/DJI/dji.hpp:155
uint32_t motors::DJIMotor::feedback_count_
接收到的反馈数据数量,用于上电自动清零
motors/DJI/dji.hpp:145
float motors::DJIMotor::inv_reduction_rate_
总减速比的倒数,用于把内部量换算到输出轴
motors/DJI/dji.hpp:142
int16_t motors::DJIMotor::iq_cmd_
当前缓存的电流指令值
motors/DJI/dji.hpp:162
float motors::DJIMotor::mech_angle
电机反馈侧单圈机械角度,单位 deg
motors/DJI/dji.hpp:149
int32_t motors::DJIMotor::round_cnt
跨圈累计,用于把单圈机械角度展开成连续角度
motors/DJI/dji.hpp:154
float motors::DJIMotor::rpm
电机侧转速,单位 rpm
motors/DJI/dji.hpp:150
float motors::DJIMotor::velocity_
输出轴角速度,单位 rpm
motors/DJI/dji.hpp:159
service::Watchdog motors::DJIMotor::watchdog_
上游未提供说明。
motors/DJI/dji.hpp:146
CAN_HandleTypeDef* motors::DJI_FeedbackMap::hcan
CAN 句柄
motors/DJI/dji.cpp:27
std::array<DJIMotor*, kMaxMotorPerCan> motors::DJI_FeedbackMap::motors
反馈槽位
motors/DJI/dji.cpp:28
uint32_t motors::kDjiCANIdMax
上游未提供说明。
motors/DJI/dji.cpp:22
uint32_t motors::kDjiCANIdMin
上游未提供说明。
motors/DJI/dji.cpp:21
size_t motors::kMaxMotorPerCan
上游未提供说明。
motors/DJI/dji.cpp:20
std::array<DJI_FeedbackMap, CAN_NUM> motors::map
上游未提供说明。
motors/DJI/dji.cpp:32DJI 电机驱动实现 syhanjin 2026-01-28 把 CAN 反馈帧映射到具体电机对象 把原始反馈换算成输出轴角度与速度 把多台电机的电流命令聚合打包发送 主要完成三件事:
motors/DJI/dji.cppDJI 电机驱动封装 syhanjin 2026-01-28 这里封装的是 DJI 常见 CAN 电机反馈与电流控制协议。 角度反馈 速度反馈 低层电流输入 从能力设计上看,DJI 这一路主要提供: SendIqCommand() 和 DM / VESC 不同,DJI 电机的电流命令不是“调用一次就马上发一帧”, 而是先写入各个电机对象的目标值,再由按 4 台电机一组统一打包发送。 当前 DJI 实现里,速度接口单位为 rpm。
motors/DJI/dji.hpp