You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
121 lines
4.7 KiB
121 lines
4.7 KiB
#pragma once
|
|
#include <stdint.h>
|
|
|
|
#include <functional>
|
|
|
|
typedef struct {
|
|
uint32_t sg_result : 10;
|
|
uint32_t reserved0 : 5;
|
|
uint32_t fsactive : 1;
|
|
uint32_t cs_actual : 5;
|
|
uint32_t reserved1 : 3;
|
|
uint32_t stallguard : 1;
|
|
uint32_t ot : 1;
|
|
uint32_t otpw : 1;
|
|
uint32_t s2ga : 1;
|
|
uint32_t s2gb : 1;
|
|
uint32_t ola : 1;
|
|
uint32_t olb : 1;
|
|
uint32_t stst : 1;
|
|
} TMC5130MotorStatus_t;
|
|
|
|
typedef struct {
|
|
uint32_t reset : 1; // fatal error
|
|
uint32_t drv_err : 1; // fatal error
|
|
uint32_t uv_cp : 1; // fatal error
|
|
} TMC5130MotorState_t; // R+C
|
|
|
|
typedef struct {
|
|
uint32_t sg_result : 10;
|
|
uint32_t reserved0 : 1;
|
|
uint32_t reserved1 : 1;
|
|
uint32_t s2vsa : 1;
|
|
uint32_t s2vsb : 1;
|
|
uint32_t stealth : 1;
|
|
uint32_t fsactive : 1;
|
|
uint32_t cs_actual : 5;
|
|
uint32_t reserved2 : 3;
|
|
uint32_t stallguard : 1;
|
|
uint32_t ot : 1;
|
|
uint32_t otpw : 1;
|
|
uint32_t s2ga : 1;
|
|
uint32_t s2gb : 1;
|
|
uint32_t ola : 1;
|
|
uint32_t olb : 1;
|
|
uint32_t stst : 1;
|
|
} TMC2160MotorDriverStatus_t;
|
|
|
|
typedef struct {
|
|
uint32_t TARGET_REACHED_F : 1; // XACTUAL = XTARGET
|
|
uint32_t POS_COMP_REACHED_F : 1; // XACTUAL = POS_COMP
|
|
uint32_t VEL_REACHED_F : 1; // VACTUAL = |VMAX|
|
|
uint32_t VEL_STATE_F : 2; // 0:VACTUAL = 0; 1:VACTUAL > 0; 2:VACTUAL < 0
|
|
uint32_t RAMP_STATE_F : 2; // 0:AACTUAL = 0; 1:AACTUAL 增加(加速); 2:AACTUAL 减小(减速)
|
|
uint32_t STOPL_ACTIVE_F : 1; // 左停止开关有效。
|
|
|
|
uint32_t STOPR_ACTIVE_F : 1; // 右停止开关有效。
|
|
uint32_t VSTOPL_ACTIVE_F : 1; // 左虚拟停止开关有效。
|
|
uint32_t VSTOPR_ACTIVE_F : 1; // 右虚拟停止开关有效。
|
|
uint32_t ACTIVE_STALL_F : 1; // 电机堵转检测且 VACTUAL > VSTALL_LIMIT。
|
|
uint32_t HOME_ERROR_F : 1; // 输入信号电平不等于预期的回零电平。
|
|
uint32_t FS_ACTIVE_F : 1; // 全步有效。
|
|
uint32_t ENC_FAIL_F : 1; // XACTUAL 和 ENC_POS 中间的差值超出容差。
|
|
uint32_t N_ACTIVE_F : 1; // 事件有效
|
|
|
|
uint32_t ENC_LATCH_F : 1; // ENC_LATCH 被重置。
|
|
uint32_t MULTI_CYCLE_FAIL_F : 1; // 仅适用于绝对编码器 MULTI_CYCLE_FAIL_F 表示上一个多圈数据出现故障。
|
|
uint32_t ___ : 1; //
|
|
uint32_t CL_FIT_F : 1; // 如果 ENC_POS_DEV < CL_COMPLATION,则有效。XACTUAL 和 ENC_POS 之间的差值在容许范围内
|
|
uint32_t SERIAL_ENC_FLAGS : 4; // 仅适用于绝对编码器:从编码器接收的 SERIAL_ENC_FLAGS。新的编码器传输请求是会重置这些标志
|
|
|
|
uint32_t SG : 1; // 仅 TMC26x / TMC21x0 StallGuard2 状态。
|
|
uint32_t OT : 1; // 过温关断。
|
|
uint32_t OTPW : 1; // 过温预警。
|
|
uint32_t S2GA : 1; // 线圈 A 高端 MOSFET 管对地短路检测位。
|
|
uint32_t S2GB : 1; // 线圈 B 高端 MOSFET 管对地短路检测位。
|
|
uint32_t OLA : 1; // 线圈 A 开路。
|
|
uint32_t OLB : 1; // 线圈 B 开路。
|
|
uint32_t STST : 1; // 仅 TMC26x / TMC21x0 静止状态。
|
|
} TMC4361AMotorStatus_t; // R+CW 事件标志位
|
|
|
|
typedef struct {
|
|
uint32_t reset : 1; // fatal error
|
|
uint32_t drv_err : 1; // fatal error
|
|
uint32_t uv_cp : 1; // fatal error
|
|
} TMC2160MotorGstate_t; // R+C
|
|
|
|
typedef struct {
|
|
uint32_t TARGET_REACHED : 1; //
|
|
uint32_t POS_COMP_REACHED : 1; //
|
|
uint32_t VEL_REACHED : 1; //
|
|
uint32_t VEL_STATE_EQ_0 : 1; //
|
|
uint32_t VEL_STATE_EQ_1 : 1; //
|
|
uint32_t VEL_STATE_EQ_2 : 1; //
|
|
uint32_t RAMP_STATE_EQ_0 : 1; //
|
|
uint32_t RAMP_STATE_EQ_1 : 1; //
|
|
uint32_t RAMP_STATE_EQ_2 : 1; //
|
|
uint32_t MAX_PHASE_TRAP : 1; // 梯形斜坡已经达到其极限速度
|
|
uint32_t FROZEN : 1; // 重置 TMC4361A,以便进一步运动。 fatal error
|
|
uint32_t STOPL : 1; //
|
|
uint32_t STOPR : 1; //
|
|
uint32_t VSTOPL_ACTIVE : 1; //
|
|
uint32_t VSTOPR_ACTIVE : 1; //
|
|
uint32_t HOME_ERROR : 1; //
|
|
uint32_t XLATCH_DONE : 1; //
|
|
uint32_t FS_ACTIVE : 1; //
|
|
uint32_t ENC_FAIL : 1; //
|
|
uint32_t N_ACTIVE : 1; //
|
|
uint32_t ENC_DONE : 1; //
|
|
uint32_t SER_ENC_DATA_FAIL : 1; //
|
|
uint32_t ___ : 1; //
|
|
uint32_t SER_DATA_DONE : 1; //
|
|
uint32_t SERIAL_ENC_Flags : 1; //
|
|
uint32_t COVER_DONE : 1; //
|
|
uint32_t ENC_VEL0 : 1; // 编码器速度到 0。
|
|
uint32_t CL_MAX : 1; //
|
|
uint32_t CL_FIT : 1; //
|
|
uint32_t STOP_ON_STALL : 1; // 检测到电机堵转。电机斜坡已经停止。 fatal error
|
|
uint32_t MOTOR_EV : 1; // 选定的 TMC 电机驱动器标志之一被触发。
|
|
uint32_t RST_EV : 1; // 复位被触发。 fatal error
|
|
} TMC4361AMotorEventState_t;
|
|
|