TMC4671使用笔记

1、单向DC电机开环测试

void TMC4671SinglePhaseDC_Test(){
    // 电机类型和PWM配置

    // TMC4671_MOTOR_TYPE_N_POLE_PAIRS 寄存器用于设置电机类型和极对数。
    // 高16位 (0x0001):电机类型。0: 无电机 1: 单相直流电机 2: 两相步进电机 3: 三相无刷电机
    // 低16位 (0x0002):电机的极对数,表示电机有2个极对。
    tmc4671_writeInt(0, TMC4671_MOTOR_TYPE_N_POLE_PAIRS, 0x00010002);

    // PWM_POLARITIES 寄存器设置PWM输出信号的极性以匹配门驱动器。
    // bit(0) 低侧栅极控制 0: 关闭 1: 打开  bit(1) 高侧栅极控制 0: 关闭 1: 打开
    tmc4671_writeInt(0, TMC4671_PWM_POLARITIES, 0x00000000);

    // PWM_MAXCNT 寄存器用于配置PWM输出频率。
    // u12(11:0) PWM最大计数(count-1),PWM频率公式为 fPWM[Hz]= 100MHz/(PWM_MAXCNT+1)
    tmc4671_writeInt(0, TMC4671_PWM_MAXCNT, 0x00000F9F);

    // PWM_BBM_H_BBM_L 寄存器设置PWM输出信号的BBM时间。BBM时间必须与功率级匹配,以避免半桥中的交叉导通。
    // PWM_BBM_L u8(7:0) 低侧MOSFET栅极控制的BBM时间 tBBM_L[10ns]
    // PWM_BBM_H u8(15:8) 高侧MOSFET栅极控制的BBM时间 tBBM_H[10ns]
    tmc4671_writeInt(0, TMC4671_PWM_BBM_H_BBM_L, 0x00001919);

    // PWM_SV_CHOP 寄存器用于启用PWM,设置不同的PWM测试模式,并启用SVPWM功能(仅适用于BLDC/PMSM)。
    // PWM_CHOP u8(7:0) PWM斩波模式,定义如何进行斩波 0: 关闭,自由运行 1: 关闭,低侧永远=ON 2: 关闭,高侧永远=ON 3: 关闭,自由运行 4: 关闭,自由运行 5: 低侧斩波,高侧关闭 6: 高侧斩波,低侧关闭 7: FOC的中心PWM
    // PWM_SV bit(8) 使用空间矢量PWM 0: 禁用空间矢量PWM 1: 启用空间矢量PWM
    tmc4671_writeInt(0, TMC4671_PWM_SV_CHOP, 0x00000007);

    // 开环设置

    // OPENLOOP_MODE 寄存器用于改变开环角度的方向。
    // OPENLOOP_PHI_DIRECTION bit(12) 开环phi方向。
    // 0: 正向
    // 1: 反向
    tmc4671_writeInt(0, TMC4671_OPENLOOP_MODE, 0x00000000);

    // OPENLOOP_ACCELERATION 寄存器用于在开环角度速度变化时调整加速度。
    // OPENLOOP_ACCELERATION u32(31:0) 开环phi加速度。
    tmc4671_writeInt(0, TMC4671_OPENLOOP_ACCELERATION, 0x0000003C);

    // OPENLOOP_VELOCITY_TARGET 寄存器用于为开环角度生成器设置目标速度。速度根据OPENLOOP_ACCELERATION和PID_VELOCITY_LIMIT进行上升和下降。
    // OPENLOOP_VELOCITY_TARGET s32(31:0) 开环phi的目标速度。
    tmc4671_writeInt(0, TMC4671_OPENLOOP_VELOCITY_TARGET, 0xFFFFFFF6);

    // 反馈选择
    // PHI_E_SELECTION 寄存器用于选择FOC变换的角度信号作为电机的电角度。
    // PHI_E_SELECTION u8(7:0) 0: 保留 1: phi_e_ext 2: phi_e_openloop 3: phi_e_abn 4: 保留 5: phi_e_hal 6: phi_e_aenc 7: phi_a_aenc
    tmc4671_writeInt(0, TMC4671_PHI_E_SELECTION, 0x00000002);

    // UQ_UD_EXT 寄存器用于设置开环电流控制模式的电压值(UQ_UD_EXT_MODE)。
    // UD_EXT s16(15:0) 开环电压控制模式下可写的外部参数,设置U_D分量。
    // UQ_EXT s16(31:16) 开环电压控制模式下可写的外部参数,设置U_Q分量。
    tmc4671_writeInt(0, TMC4671_UQ_UD_EXT, 0x19E50000);

    // ===== 开环测试驱动 =====

    // 切换到开环速度模式
    // MODE_RAMP_MODE_MOTION 寄存器用于设置运动模式、速度和位置控制环的下采样因子,以及PI控制器结构类型。
    // MODE_MOTION u8(7:0) 0: 停止模式 1: 力矩模式 2: 速度模式 3: 位置模式 4: PRBS磁通模式 5: PRBS力矩模式 6: PRBS速度模式 7: PRBS位置模式 8: UQ_UD_EXT模式 9: 保留 10: AGPI_A力矩模式 11: AGPI_A速度模式 12: AGPI_A位置模式 13: PWM_I力矩模式 14: PWM_I速度模式 15: PWM_I位置模式
    // MODE_PID_SMPL u7(30:24)
    // MODE_PID_TYPE bit(31) 0: 并行/经典PI 1: 顺序/高级PI
    tmc4671_writeInt(0, TMC4671_MODE_RAMP_MODE_MOTION, 0x009AD108);

    wait(2000);//等待2秒
    tmc4671_writeInt(0, TMC4671_UQ_UD_EXT, 0x00000000);//关闭力矩输出
}
View Code

 

posted @ 2024-11-08 16:09  阿坦  阅读(12)  评论(0编辑  收藏  举报