HPM SDK
HPMicro Software Development Kit
hpm_mcl_loop.c File Reference
#include "hpm_mcl_loop.h"
#include "hpm_csr_drv.h"

Functions

hpm_mcl_stat_t hpm_mcl_loop_init_v2 (mcl_loop_t *loop, mcl_loop_cfg_t *cfg, mcl_cfg_t *mcl_cfg, mcl_encoder_t *encoder, mcl_analog_t *analog, mcl_control_t *control, mcl_drivers_t *drivers, mcl_path_plan_t *path, mcl_hw_loop_t *hw_loop)
 Initialisation loop data (API introduced in v1.10.0 with hw_loop parameter) More...
 
hpm_mcl_stat_t hpm_mcl_loop_set_current_d (mcl_loop_t *loop, mcl_user_value_t id)
 Setting the d-axis current. More...
 
hpm_mcl_stat_t hpm_mcl_loop_set_current_q (mcl_loop_t *loop, mcl_user_value_t iq)
 Setting the q-axis current. More...
 
hpm_mcl_stat_t hpm_mcl_loop_set_speed (mcl_loop_t *loop, mcl_user_value_t speed)
 Setting the speed loop speed feed. More...
 
hpm_mcl_stat_t hpm_mcl_loop_set_position (mcl_loop_t *loop, mcl_user_value_t position)
 Setting the position parameters. More...
 
hpm_mcl_stat_t hpm_mcl_loop_disable_all_user_set_value (mcl_loop_t *loop)
 Invalid user-set values in all loops. More...
 
hpm_mcl_stat_t hpm_mcl_detect_offline_para (mcl_loop_t *loop)
 
hpm_mcl_stat_t hpm_mcl_current_foc_loop (mcl_loop_t *loop)
 
hpm_mcl_stat_t hpm_mcl_step_foc_loop (mcl_loop_t *loop)
 
hpm_mcl_stat_t hpm_mcl_block_loop (mcl_loop_t *loop)
 
hpm_mcl_stat_t hpm_mcl_loop_refresh_block (mcl_loop_t *loop)
 Call this function in the interrupt function to update the motor's sector. More...
 
hpm_mcl_stat_t hpm_mcl_loop_start_block (mcl_loop_t *loop)
 Call this function in the interrupt function to start the motor's sector. More...
 
hpm_mcl_stat_t hpm_mcl_loop (mcl_loop_t *loop)
 Motor Loop, Periodic Recall. More...
 
hpm_mcl_stat_t hpm_mcl_motor_angle_alignment_basic (mcl_loop_t *loop, mcl_motor_alignment_basic_cfg_t *cfg)
 
hpm_mcl_stat_t hpm_mcl_motor_angle_alignment_three_stage (mcl_loop_t *loop, mcl_motor_alignment_three_stage_cfg_t *cfg)
 
hpm_mcl_stat_t hpm_mcl_motor_angle_alignment (mcl_loop_t *loop, mcl_motor_alignment_cfg_t *cfg)
 Enhanced motor angle alignment algorithm with multiple algorithm support. More...
 

Function Documentation

◆ hpm_mcl_block_loop()

hpm_mcl_stat_t hpm_mcl_block_loop ( mcl_loop_t loop)

◆ hpm_mcl_current_foc_loop()

hpm_mcl_stat_t hpm_mcl_current_foc_loop ( mcl_loop_t loop)

current sample

◆ hpm_mcl_detect_offline_para()

hpm_mcl_stat_t hpm_mcl_detect_offline_para ( mcl_loop_t loop)

Parameter detection function requires dead area compensation

◆ hpm_mcl_loop()

hpm_mcl_stat_t hpm_mcl_loop ( mcl_loop_t loop)

Motor Loop, Periodic Recall.

Parameters
loopmcl_loop_t
Returns
hpm_mcl_stat_t

◆ hpm_mcl_loop_disable_all_user_set_value()

hpm_mcl_stat_t hpm_mcl_loop_disable_all_user_set_value ( mcl_loop_t loop)

Invalid user-set values in all loops.

Parameters
loopmcl_loop_t
Returns
hpm_mcl_stat_t

◆ hpm_mcl_loop_init_v2()

hpm_mcl_stat_t hpm_mcl_loop_init_v2 ( mcl_loop_t loop,
mcl_loop_cfg_t cfg,
mcl_cfg_t mcl_cfg,
mcl_encoder_t encoder,
mcl_analog_t analog,
mcl_control_t control,
mcl_drivers_t drivers,
mcl_path_plan_t path,
mcl_hw_loop_t hw_loop 
)

Initialisation loop data (API introduced in v1.10.0 with hw_loop parameter)

Parameters
loopmcl_loop_t
cfgmcl_loop_cfg_t
mcl_cfgmcl_cfg_t
encodermcl_encoder_t
analogmcl_analog_t
controlmcl_control_t
driversmcl_drivers_t
pathmcl_path_plan_t
hw_loopmcl_hw_loop_t (can be NULL for backward compatibility)
Returns
hpm_mcl_stat_t

◆ hpm_mcl_loop_refresh_block()

hpm_mcl_stat_t hpm_mcl_loop_refresh_block ( mcl_loop_t loop)

Call this function in the interrupt function to update the motor's sector.

Parameters
loopmcl_loop_t
Returns
hpm_mcl_stat_t

◆ hpm_mcl_loop_set_current_d()

hpm_mcl_stat_t hpm_mcl_loop_set_current_d ( mcl_loop_t loop,
mcl_user_value_t  id 
)

Setting the d-axis current.

Parameters
loopmcl_loop_t
idmcl_user_value_t
Returns
hpm_mcl_stat_t

◆ hpm_mcl_loop_set_current_q()

hpm_mcl_stat_t hpm_mcl_loop_set_current_q ( mcl_loop_t loop,
mcl_user_value_t  iq 
)

Setting the q-axis current.

Parameters
loopmcl_loop_t
iqmcl_user_value_t
Returns
hpm_mcl_stat_t

◆ hpm_mcl_loop_set_position()

hpm_mcl_stat_t hpm_mcl_loop_set_position ( mcl_loop_t loop,
mcl_user_value_t  position 
)

Setting the position parameters.

Parameters
loopmcl_loop_t
positionmcl_user_value_t
Returns
hpm_mcl_stat_t

◆ hpm_mcl_loop_set_speed()

hpm_mcl_stat_t hpm_mcl_loop_set_speed ( mcl_loop_t loop,
mcl_user_value_t  speed 
)

Setting the speed loop speed feed.

Parameters
loopmcl_loop_t
speedmcl_user_value_t
Returns
hpm_mcl_stat_t

◆ hpm_mcl_loop_start_block()

hpm_mcl_stat_t hpm_mcl_loop_start_block ( mcl_loop_t loop)

Call this function in the interrupt function to start the motor's sector.

Parameters
loopmcl_loop_t
Returns
hpm_mcl_stat_t

◆ hpm_mcl_motor_angle_alignment()

hpm_mcl_stat_t hpm_mcl_motor_angle_alignment ( mcl_loop_t loop,
mcl_motor_alignment_cfg_t cfg 
)

Enhanced motor angle alignment algorithm with multiple algorithm support.

This function provides a flexible framework for motor alignment that supports various alignment algorithms. Users can choose from built-in algorithms or implement custom alignment strategies.

Supported algorithms:

  • Basic: Single-stage alignment with configurable parameters
  • Three-stage: Enhanced three-stage alignment for robust positioning
    • Stage 1: High current coarse alignment
    • Stage 2: Moderate current fine alignment
    • Stage 3: Low current stabilization
Parameters
loopMotor control loop structure mcl_loop_t
cfgAlignment configuration parameters mcl_motor_alignment_cfg_t
Returns
hpm_mcl_stat_t Success or error status

◆ hpm_mcl_motor_angle_alignment_basic()

hpm_mcl_stat_t hpm_mcl_motor_angle_alignment_basic ( mcl_loop_t loop,
mcl_motor_alignment_basic_cfg_t cfg 
)

◆ hpm_mcl_motor_angle_alignment_three_stage()

hpm_mcl_stat_t hpm_mcl_motor_angle_alignment_three_stage ( mcl_loop_t loop,
mcl_motor_alignment_three_stage_cfg_t cfg 
)

◆ hpm_mcl_step_foc_loop()

hpm_mcl_stat_t hpm_mcl_step_foc_loop ( mcl_loop_t loop)