HPM APP
HPMicro Application solution
PMSM_INIT_API

PMSM INIT API ;电机初始化接口函数 More...

Macros

#define SYNC_TIME_0   (1000U)
 sync time ;四轴同步时间定义 More...
 
#define SYNC_TIME_1   (2000U)
 
#define SYNC_TIME_2   (3000U)
 
#define SYNC_TIME_3   (4000U)
 
#define PWM_FREQUENCY   (20000)
 PWM freq uint HZ ;pwm 频率 More...
 
#define PWM_RELOAD   (motor0_clock_hz/PWM_FREQUENCY)
 pwm reload value ;pwm 重载值 More...
 
#define BLDC_CURRENT_SET_TIME_MS   (200)
 Zero drift calculate times(ms),must less than 250. ;电流采样次数,用于计算零漂 More...
 

Functions

void parm_global_init (void)
 Parameter initialization ;参数初始化 More...
 
void pi_para_init (BLDC_CONTRL_PID_PARA *par, float KP, float KI, float MAX)
 init kp,ki,pi control function ;pi控制器初始化 More...
 
void pmsm_param_init (BLDC_CONTROL_FOC_PARA *par, uint8_t MOTOR_ID)
 init foc control para ;电机矢量控制初始化 More...
 
void pwm_duty_init (PWM_Type *ptr, uint32_t PWM_PRD, uint8_t CMP_SHADOW_REGISTER_UPDATE_TYPE, uint8_t CMP_COMPARE)
 Config PWM ;pwm配置 More...
 
void pwm_trigfor_adc_init (PWM_Type *ptr, uint32_t PWM_PRD, uint8_t CMP_SHADOW_REGISTER_UPDATE_TYPE, uint8_t CMP_COMPARE, uint8_t PWM_CH_TRIG_ADC)
 Config the PWM channel for ADC trigger ;pwm触发adc采样 More...
 
void pwm_trigfor_currentctrl_init (PWM_Type *ptr, uint32_t PWM_PRD, uint8_t CMP_SHADOW_REGISTER_UPDATE_TYPE, uint8_t CMP_COMPARE, uint8_t PWM_CH_TRIG_CURRENTCtrl)
 Config the PWM channel for current loop interrupt ;pwm触发电流环中断 More...
 
void timer_init (void)
 1ms timer for speed loop. ;1ms中断配置gptimer More...
 
void init_trigger_mux (TRGM_Type *ptr, uint8_t TRAG_INPUT, uint8_t TRAG_INPUT_FOR_ADC)
 Config TRGM output&input ;互联管理器配置 More...
 
void init_trigger_cfg (ADC16_Type *ptr, uint8_t trig_ch, uint8_t channel, bool inten, uint32_t ADC_MODULE, uint8_t ADC_PREEMPT_TRIG_LEN)
 Config the preemption mode for an ADC instancet ;adc抢占模式配置 More...
 
void adc_cfg_init (ADC16_Type *ptr, uint8_t channel, uint32_t sample_cycle, uint32_t ADC_MODULE)
 adc cfg init ;adc配置初始化 More...
 
void adc_pins_init (PWM_Type *ptr)
 adc pins init ;adc引脚初始化 More...
 
void lv_set_adval_middle (BLDC_CONTROL_FOC_PARA *par, uint32_t ADC_TRG)
 get current value in steady state ;零漂计算 More...
 
void pwm_pins_init (PWM_Type *ptr)
 pwm pins init ;pwm引脚初始化 More...
 
void qei_cfg_init (TRGM_Type *ptr, QEI_Type *ptr_qei, uint8_t trag_in_A, uint8_t trag_out_A, uint8_t trag_in_B, uint8_t trag_out_B, uint32_t QEI_IRQ, uint32_t MAX_cnt)
 qei cfg ;qei配置 More...
 
void qei_pins_init (PWM_Type *ptr)
 qei pins init ;qei引脚初始化 More...
 
void pwm_sync (void)
 pwm enable at synci. ;pwm 同步使能配置 More...
 
void pmsm_motor0_init (void)
 PMSM Motor1 initialization ;轴0 adc pwm qei等初始化配置 More...
 
void pmsm_motor1_init (void)
 
void pmsm_motor2_init (void)
 
void pmsm_motor3_init (void)
 
void pmsm_motor_init (void)
 
void pmsm0_foc_angle_align (void)
 Rotor Angle alignment aligns the encoder midpoint value with the actual physical Angle midpoint value . ;给定d轴电流,使得d轴与A轴重合,电角度为0. More...
 
void pmsm1_foc_angle_align (void)
 
void pmsm2_foc_angle_align (void)
 
void pmsm3_foc_angle_align (void)
 
void pmsm_foc_angle_align (void)
 

Variables

uint32_t adc_buff [3][(40U)]
 

Detailed Description

PMSM INIT API ;电机初始化接口函数

Macro Definition Documentation

◆ BLDC_CURRENT_SET_TIME_MS

#define BLDC_CURRENT_SET_TIME_MS   (200)

#include <apps/pmsm_four_axis_62/software/src/pmsm_init.h>

Zero drift calculate times(ms),must less than 250. ;电流采样次数,用于计算零漂

◆ PWM_FREQUENCY

#define PWM_FREQUENCY   (20000)

#include <apps/pmsm_four_axis_62/software/src/pmsm_init.h>

PWM freq uint HZ ;pwm 频率

◆ PWM_RELOAD

#define PWM_RELOAD   (motor0_clock_hz/PWM_FREQUENCY)

#include <apps/pmsm_four_axis_62/software/src/pmsm_init.h>

pwm reload value ;pwm 重载值

◆ SYNC_TIME_0

#define SYNC_TIME_0   (1000U)

#include <apps/pmsm_four_axis_62/software/src/pmsm_init.h>

sync time ;四轴同步时间定义

◆ SYNC_TIME_1

#define SYNC_TIME_1   (2000U)

◆ SYNC_TIME_2

#define SYNC_TIME_2   (3000U)

◆ SYNC_TIME_3

#define SYNC_TIME_3   (4000U)

Function Documentation

◆ adc_cfg_init()

void adc_cfg_init ( ADC16_Type *  ptr,
uint8_t  channel,
uint32_t  sample_cycle,
uint32_t  ADC_MODULE 
)

#include <apps/pmsm_four_axis_62/software/src/pmsm_init.h>

adc cfg init ;adc配置初始化

Parameters
[in]ptrADC base address;adc结构体
[in]channeladc channel;adc通道
[in]sample_cycleadc sample cycle;adc采样个数
[in]ADC_MODULEadc module;16位adc

◆ adc_pins_init()

void adc_pins_init ( PWM_Type *  ptr)

#include <apps/pmsm_four_axis_62/software/src/pmsm_init.h>

adc pins init ;adc引脚初始化

Parameters
[in]ptrPWM base address;pwm结构体

◆ init_trigger_cfg()

void init_trigger_cfg ( ADC16_Type *  ptr,
uint8_t  trig_ch,
uint8_t  channel,
bool  inten,
uint32_t  ADC_MODULE,
uint8_t  ADC_PREEMPT_TRIG_LEN 
)

#include <apps/pmsm_four_axis_62/software/src/pmsm_init.h>

Config the preemption mode for an ADC instancet ;adc抢占模式配置

Parameters
[in]ptrADC base address;adc结构体
[in]trig_chtrig channel;触发通道
[in]channeladc channel;adc采样通道
[in]inteninten;中断使能标志
[in]ADC_MODULEadc module;16位adc
[in]ADC_PREEMPT_TRIG_LENtirg len;抢占转换队列长度

◆ init_trigger_mux()

void init_trigger_mux ( TRGM_Type *  ptr,
uint8_t  TRAG_INPUT,
uint8_t  TRAG_INPUT_FOR_ADC 
)

#include <apps/pmsm_four_axis_62/software/src/pmsm_init.h>

Config TRGM output&input ;互联管理器配置

Parameters
[in]ptrTRGM base address;trgm结构体
[in]TRAG_INPUTinput selection;互联管理器输入
[in]TRAG_INPUT_FOR_ADCtarget output;互联管理器目标输出

◆ lv_set_adval_middle()

void lv_set_adval_middle ( BLDC_CONTROL_FOC_PARA *  par,
uint32_t  ADC_TRG 
)

#include <apps/pmsm_four_axis_62/software/src/pmsm_init.h>

get current value in steady state ;零漂计算

Parameters
[in]parfoc struct;矢量控制结构体
[in]ADC_TRGadc trig channel;adc通道

◆ parm_global_init()

void parm_global_init ( void  )

#include <apps/pmsm_four_axis_62/software/src/pmsm_init.h>

Parameter initialization ;参数初始化

◆ pi_para_init()

void pi_para_init ( BLDC_CONTRL_PID_PARA *  par,
float  KP,
float  KI,
float  MAX 
)

#include <apps/pmsm_four_axis_62/software/src/pmsm_init.h>

init kp,ki,pi control function ;pi控制器初始化

Parameters
[in]parmotor para to operate on;电机参数结构体
[in]KPproportional gain;比例增益
[in]KIintegral gain;积分
[in]MAXoutput max;输出限幅

◆ pmsm0_foc_angle_align()

void pmsm0_foc_angle_align ( void  )

#include <apps/pmsm_four_axis_62/software/src/pmsm_init.h>

Rotor Angle alignment aligns the encoder midpoint value with the actual physical Angle midpoint value . ;给定d轴电流,使得d轴与A轴重合,电角度为0.

◆ pmsm1_foc_angle_align()

void pmsm1_foc_angle_align ( void  )

◆ pmsm2_foc_angle_align()

void pmsm2_foc_angle_align ( void  )

◆ pmsm3_foc_angle_align()

void pmsm3_foc_angle_align ( void  )

◆ pmsm_foc_angle_align()

void pmsm_foc_angle_align ( void  )

◆ pmsm_motor0_init()

void pmsm_motor0_init ( void  )

#include <apps/pmsm_four_axis_62/software/src/pmsm_init.h>

PMSM Motor1 initialization ;轴0 adc pwm qei等初始化配置

◆ pmsm_motor1_init()

void pmsm_motor1_init ( void  )

◆ pmsm_motor2_init()

void pmsm_motor2_init ( void  )

◆ pmsm_motor3_init()

void pmsm_motor3_init ( void  )

◆ pmsm_motor_init()

void pmsm_motor_init ( void  )

◆ pmsm_param_init()

void pmsm_param_init ( BLDC_CONTROL_FOC_PARA *  par,
uint8_t  MOTOR_ID 
)

#include <apps/pmsm_four_axis_62/software/src/pmsm_init.h>

init foc control para ;电机矢量控制初始化

Parameters
[in]parfoc contorl para to operate on;电机矢量控制参数结构体
[in]MOTOR_IDmotor index;电机轴号

◆ pwm_duty_init()

void pwm_duty_init ( PWM_Type *  ptr,
uint32_t  PWM_PRD,
uint8_t  CMP_SHADOW_REGISTER_UPDATE_TYPE,
uint8_t  CMP_COMPARE 
)

#include <apps/pmsm_four_axis_62/software/src/pmsm_init.h>

Config PWM ;pwm配置

Parameters
[in]ptrpwm struct;pwm结构体
[in]PWM_PRDpwm timer counter reload value;pwm重载值
[in]CMP_SHADOW_REGISTER_UPDATE_TYPEcompare configuration update trigger;CMP值更新时机
[in]CMP_COMPAREcompare work mode;比较器工作模式

◆ pwm_pins_init()

void pwm_pins_init ( PWM_Type *  ptr)

#include <apps/pmsm_four_axis_62/software/src/pmsm_init.h>

pwm pins init ;pwm引脚初始化

Parameters
[in]ptrPWM base address;pwm结构体

◆ pwm_sync()

void pwm_sync ( void  )

#include <apps/pmsm_four_axis_62/software/src/pmsm_init.h>

pwm enable at synci. ;pwm 同步使能配置

◆ pwm_trigfor_adc_init()

void pwm_trigfor_adc_init ( PWM_Type *  ptr,
uint32_t  PWM_PRD,
uint8_t  CMP_SHADOW_REGISTER_UPDATE_TYPE,
uint8_t  CMP_COMPARE,
uint8_t  PWM_CH_TRIG_ADC 
)

#include <apps/pmsm_four_axis_62/software/src/pmsm_init.h>

Config the PWM channel for ADC trigger ;pwm触发adc采样

Parameters
[in]ptrpwm struct;pwm结构体
[in]PWM_PRDpwm timer counter reload value;pwm重载值
[in]CMP_SHADOW_REGISTER_UPDATE_TYPEcompare configuration update trigger;CMP值更新时机
[in]CMP_COMPAREcompare work mode;比较器工作模式
[in]PWM_CH_TRIG_ADCcoutput channel compare start index;比较器通道号

◆ pwm_trigfor_currentctrl_init()

void pwm_trigfor_currentctrl_init ( PWM_Type *  ptr,
uint32_t  PWM_PRD,
uint8_t  CMP_SHADOW_REGISTER_UPDATE_TYPE,
uint8_t  CMP_COMPARE,
uint8_t  PWM_CH_TRIG_CURRENTCtrl 
)

#include <apps/pmsm_four_axis_62/software/src/pmsm_init.h>

Config the PWM channel for current loop interrupt ;pwm触发电流环中断

Parameters
[in]ptrpwm struct;pwm结构体
[in]PWM_PRDpwm timer counter reload value;pwm重载值
[in]CMP_SHADOW_REGISTER_UPDATE_TYPEcompare configuration update trigger;CMP值更新时机
[in]CMP_COMPAREcompare work mode;比较器工作模式
[in]PWM_CH_TRIG_CURRENTCtrlcoutput channel compare start index;比较器通道号

◆ qei_cfg_init()

void qei_cfg_init ( TRGM_Type *  ptr,
QEI_Type *  ptr_qei,
uint8_t  trag_in_A,
uint8_t  trag_out_A,
uint8_t  trag_in_B,
uint8_t  trag_out_B,
uint32_t  QEI_IRQ,
uint32_t  MAX_cnt 
)

#include <apps/pmsm_four_axis_62/software/src/pmsm_init.h>

qei cfg ;qei配置

Parameters
[in]ptrtrgm struct;互联管理器结构体
[in]ptr_qeiqei struct;qei结构体
[in]trag_in_Ainput selection;互联管理器输入
[in]trag_out_Atarget output;互联管理器输出
[in]trag_in_Binput selection;互联管理器输入
[in]trag_out_Btarget output;互联管理器输出
[in]QEI_IRQinterrupt number;qei中断
[in]MAX_cntmaximum phcnt number;电机一圈脉冲数

◆ qei_pins_init()

void qei_pins_init ( PWM_Type *  ptr)

#include <apps/pmsm_four_axis_62/software/src/pmsm_init.h>

qei pins init ;qei引脚初始化

Parameters
[in]ptrPWM base address;pwm结构体

◆ timer_init()

void timer_init ( void  )

#include <apps/pmsm_four_axis_62/software/src/pmsm_init.h>

1ms timer for speed loop. ;1ms中断配置gptimer

Variable Documentation

◆ adc_buff

uint32_t adc_buff[3][(40U)]
extern