HPM APP
HPMicro Application solution
parm_global.h
Go to the documentation of this file.
1 #ifndef PARM_GLOBAL_H_
2 #define PARM_GLOBAL_H_
3 
4 #include "hpm_adc.h"
5 #include "hpm_bldc_define.h"
6 #include "hpm_clock_drv.h"
7 #include "board.h"
8 
16 /***********************************************************************************************************************
17  *
18  * Definitions
19  *
20  **********************************************************************************************************************/
21 
26 #define BOARD_PMSM0_ADC_MODULE ADCX_MODULE_ADC16
27 #define BOARD_PMSM0_ADC_U_BASE HPM_ADC1
28 #define BOARD_PMSM0_ADC_V_BASE HPM_ADC0
29 #define BOARD_PMSM0_ADC_W_BASE HPM_ADC2
30 #define BOARD_PMSM0_ADC_TRIG_FLAG adc16_event_trig_complete
31 #define BOARD_PMSM0_ADC_CH_U (13U)
32 #define BOARD_PMSM0_ADC_CH_V (4U)
33 #define BOARD_PMSM0_ADC_CH_W (13U)
34 #define BOARD_PMSM0_ADC_IRQn IRQn_ADC1
35 #define BOARD_PMSM0_ADC_SEQ_DMA_SIZE_IN_4BYTES (40U)
36 #define BOARD_PMSM0_ADC_TRG ADC16_CONFIG_TRG0A
37 #define BOARD_PMSM0_ADC_PREEMPT_TRIG_LEN (1U)
38 #define BOARD_PMSM0_PWM_TRIG_CMP_INDEX (8U)
39 #define BOARD_PMSM0_PWM_TRIG_CMP_INDEX_CURRENTLOOP (9U)
40 #define BOARD_PMSM0_TRIGMUX_IN_NUM HPM_TRGM0_INPUT_SRC_PWM0_CH8REF
41 #define BOARD_PMSM0_TRG_NUM TRGM_TRGOCFG_ADCX_PTRGI0A
42 #define BOARD_PMSM0_ADC_IRQn IRQn_ADC1
47 #define BOARD_PMSM0PWM HPM_PWM0
48 #define BOARD_PMSM0_UH_PWM_OUTPIN (0U)
49 #define BOARD_PMSM0_UL_PWM_OUTPIN (1U)
50 #define BOARD_PMSM0_VH_PWM_OUTPIN (2U)
51 #define BOARD_PMSM0_VL_PWM_OUTPIN (3U)
52 #define BOARD_PMSM0_WH_PWM_OUTPIN (4U)
53 #define BOARD_PMSM0_WL_PWM_OUTPIN (5U)
54 #define BOARD_PMSM0PWM_TRGM HPM_TRGM0
55 #define BOARD_PMSM0APP_PWM_IRQ IRQn_PWM0
56 #define BOARD_PMSM0PWM_CMP_INDEX_0 (0U)
57 #define BOARD_PMSM0PWM_CMP_INDEX_1 (1U)
58 #define BOARD_PMSM0PWM_CMP_INDEX_2 (2U)
59 #define BOARD_PMSM0PWM_CMP_INDEX_3 (3U)
60 #define BOARD_PMSM0PWM_CMP_INDEX_4 (4U)
61 #define BOARD_PMSM0PWM_CMP_INDEX_5 (5U)
62 #define BOARD_BLDCPWM_CMP_TRIG_CMP (15U)
67 #define BOARD_PMSM0_QEI_BASE HPM_QEI0
68 #define BOARD_PMSM0_QEI_IRQ IRQn_QEI0
69 #define BOARD_PMSM0_QEI_TRGM HPM_TRGM0
70 #define BOARD_PMSM0_QEI_TRGM_QEI_A_SRC HPM_TRGM0_INPUT_SRC_TRGM0_P0
71 #define BOARD_PMSM0_QEI_TRGM_QEI_B_SRC HPM_TRGM0_INPUT_SRC_TRGM0_P1
72 #define BOARD_PMSM0_QEI_MOTOR_PHASE_COUNT_PER_REV (16U)
73 #define BOARD_PMSM0_QEI_CLOCK_SOURCE clock_mot0
74 #define BOARD_PMSM0_QEI_FOC_PHASE_COUNT_PER_REV (4000U)
75 
80 #define BOARD_PMSM1_ADC_MODULE ADCX_MODULE_ADC16
81 #define BOARD_PMSM1_ADC_U_BASE HPM_ADC1
82 #define BOARD_PMSM1_ADC_V_BASE HPM_ADC0
83 #define BOARD_PMSM1_ADC_W_BASE HPM_ADC2
84 #define BOARD_PMSM1_ADC_TRIG_FLAG adc16_event_trig_complete
85 #define BOARD_PMSM1_ADC_CH_U (15U)
86 #define BOARD_PMSM1_ADC_CH_V (5U)
87 #define BOARD_PMSM1_ADC_CH_W (15U)
88 #define BOARD_PMSM1_ADC_IRQn IRQn_ADC1
89 #define BOARD_PMSM1_ADC_SEQ_DMA_SIZE_IN_4BYTES (40U)
90 #define BOARD_PMSM1_ADC_TRG ADC16_CONFIG_TRG1A
91 #define BOARD_PMSM1_ADC_PREEMPT_TRIG_LEN (1U)
92 #define BOARD_PMSM1_PWM_TRIG_CMP_INDEX (8U)
93 #define BOARD_PMSM1_PWM_TRIG_CMP_INDEX_CURRENTLOOP (9U)
94 #define BOARD_PMSM1_TRIGMUX_IN_NUM HPM_TRGM1_INPUT_SRC_PWM1_CH8REF
95 #define BOARD_PMSM1_TRG_NUM TRGM_TRGOCFG_ADCX_PTRGI0A
96 #define BOARD_PMSM1_ADC_IRQn IRQn_ADC1
101 #define BOARD_PMSM1PWM HPM_PWM1
102 #define BOARD_PMSM1_UH_PWM_OUTPIN (0U)
103 #define BOARD_PMSM1_UL_PWM_OUTPIN (1U)
104 #define BOARD_PMSM1_VH_PWM_OUTPIN (2U)
105 #define BOARD_PMSM1_VL_PWM_OUTPIN (3U)
106 #define BOARD_PMSM1_WH_PWM_OUTPIN (4U)
107 #define BOARD_PMSM1_WL_PWM_OUTPIN (5U)
108 #define BOARD_PMSM1PWM_TRGM HPM_TRGM1
109 #define BOARD_PMSM1APP_PWM_IRQ IRQn_PWM1
110 #define BOARD_PMSM1PWM_CMP_INDEX_0 (0U)
111 #define BOARD_PMSM1PWM_CMP_INDEX_1 (1U)
112 #define BOARD_PMSM1PWM_CMP_INDEX_2 (2U)
113 #define BOARD_PMSM1PWM_CMP_INDEX_3 (3U)
114 #define BOARD_PMSM1PWM_CMP_INDEX_4 (4U)
115 #define BOARD_PMSM1PWM_CMP_INDEX_5 (5U)
120 #define BOARD_PMSM1_QEI_BASE HPM_QEI1
121 #define BOARD_PMSM1_QEI_IRQ IRQn_QEI1
122 #define BOARD_PMSM1_QEI_TRGM HPM_TRGM1
123 #define BOARD_PMSM1_QEI_TRGM_QEI_A_SRC HPM_TRGM1_INPUT_SRC_TRGM1_P6
124 #define BOARD_PMSM1_QEI_TRGM_QEI_B_SRC HPM_TRGM1_INPUT_SRC_TRGM1_P7
125 #define BOARD_PMSM1_QEI_MOTOR_PHASE_COUNT_PER_REV (16U)
126 #define BOARD_PMSM1_QEI_CLOCK_SOURCE clock_mot1
127 #define BOARD_PMSM1_QEI_FOC_PHASE_COUNT_PER_REV (4000U)
128 
133 #define BOARD_PMSM2_ADC_MODULE ADCX_MODULE_ADC16
134 #define BOARD_PMSM2_ADC_U_BASE HPM_ADC1
135 #define BOARD_PMSM2_ADC_V_BASE HPM_ADC0
136 #define BOARD_PMSM2_ADC_W_BASE HPM_ADC2
137 #define BOARD_PMSM2_ADC_TRIG_FLAG adc16_event_trig_complete
138 #define BOARD_PMSM2_ADC_CH_U (6U)
139 #define BOARD_PMSM2_ADC_CH_V (6U)
140 #define BOARD_PMSM2_ADC_CH_W (6U)
141 #define BOARD_PMSM2_ADC_IRQn IRQn_ADC0
142 #define BOARD_PMSM2_ADC_SEQ_DMA_SIZE_IN_4BYTES (40U)
143 #define BOARD_PMSM2_ADC_TRG ADC16_CONFIG_TRG2A
144 #define BOARD_PMSM2_ADC_PREEMPT_TRIG_LEN (1U)
145 #define BOARD_PMSM2_PWM_TRIG_CMP_INDEX (8U)
146 #define BOARD_PMSM2_PWM_TRIG_CMP_INDEX_CURRENTLOOP (9U)
147 #define BOARD_PMSM2_TRIGMUX_IN_NUM HPM_TRGM2_INPUT_SRC_PWM2_CH8REF
148 #define BOARD_PMSM2_TRG_NUM TRGM_TRGOCFG_ADCX_PTRGI0A
149 #define BOARD_PMSM2_ADC_IRQn IRQn_ADC0
154 #define BOARD_PMSM2PWM HPM_PWM2
155 #define BOARD_PMSM2_UH_PWM_OUTPIN (0U)
156 #define BOARD_PMSM2_UL_PWM_OUTPIN (1U)
157 #define BOARD_PMSM2_VH_PWM_OUTPIN (2U)
158 #define BOARD_PMSM2_VL_PWM_OUTPIN (3U)
159 #define BOARD_PMSM2_WH_PWM_OUTPIN (4U)
160 #define BOARD_PMSM2_WL_PWM_OUTPIN (5U)
161 #define BOARD_PMSM2PWM_TRGM HPM_TRGM2
162 #define BOARD_PMSM2APP_PWM_IRQ IRQn_PWM2
163 #define BOARD_PMSM2PWM_CMP_INDEX_0 (0U)
164 #define BOARD_PMSM2PWM_CMP_INDEX_1 (1U)
165 #define BOARD_PMSM2PWM_CMP_INDEX_2 (2U)
166 #define BOARD_PMSM2PWM_CMP_INDEX_3 (3U)
167 #define BOARD_PMSM2PWM_CMP_INDEX_4 (4U)
168 #define BOARD_PMSM2PWM_CMP_INDEX_5 (5U)
173 #define BOARD_PMSM2_QEI_BASE HPM_QEI2
174 #define BOARD_PMSM2_QEI_IRQ IRQn_QEI2
175 #define BOARD_PMSM2_QEI_TRGM HPM_TRGM2
176 #define BOARD_PMSM2_QEI_TRGM_QEI_A_SRC HPM_TRGM2_INPUT_SRC_TRGM2_P6
177 #define BOARD_PMSM2_QEI_TRGM_QEI_B_SRC HPM_TRGM2_INPUT_SRC_TRGM2_P7
178 #define BOARD_PMSM2_QEI_MOTOR_PHASE_COUNT_PER_REV (16U)
179 #define BOARD_PMSM2_QEI_CLOCK_SOURCE clock_mot2
180 #define BOARD_PMSM2_QEI_FOC_PHASE_COUNT_PER_REV (4000U)
181 
186 #define BOARD_PMSM3_ADC_MODULE ADCX_MODULE_ADC16
187 #define BOARD_PMSM3_ADC_U_BASE HPM_ADC1
188 #define BOARD_PMSM3_ADC_V_BASE HPM_ADC0
189 #define BOARD_PMSM3_ADC_W_BASE HPM_ADC2
190 #define BOARD_PMSM3_ADC_TRIG_FLAG adc16_event_trig_complete
191 #define BOARD_PMSM3_ADC_CH_U (7U)
192 #define BOARD_PMSM3_ADC_CH_V (7U)
193 #define BOARD_PMSM3_ADC_CH_W (7U)
194 #define BOARD_PMSM3_ADC_IRQn IRQn_ADC0
195 #define BOARD_PMSM3_ADC_SEQ_DMA_SIZE_IN_4BYTES (40U)
196 #define BOARD_PMSM3_ADC_TRG ADC16_CONFIG_TRG3A
197 #define BOARD_PMSM3_ADC_PREEMPT_TRIG_LEN (1U)
198 #define BOARD_PMSM3_PWM_TRIG_CMP_INDEX (8U)
199 #define BOARD_PMSM3_PWM_TRIG_CMP_INDEX_CURRENTLOOP (9U)
200 #define BOARD_PMSM3_TRIGMUX_IN_NUM HPM_TRGM3_INPUT_SRC_PWM3_CH8REF
201 #define BOARD_PMSM3_TRG_NUM TRGM_TRGOCFG_ADCX_PTRGI0A
202 #define BOARD_PMSM3_ADC_IRQn IRQn_ADC0
207 #define BOARD_PMSM3PWM HPM_PWM3
208 #define BOARD_PMSM3_UH_PWM_OUTPIN (0U)
209 #define BOARD_PMSM3_UL_PWM_OUTPIN (1U)
210 #define BOARD_PMSM3_VH_PWM_OUTPIN (2U)
211 #define BOARD_PMSM3_VL_PWM_OUTPIN (3U)
212 #define BOARD_PMSM3_WH_PWM_OUTPIN (4U)
213 #define BOARD_PMSM3_WL_PWM_OUTPIN (5U)
214 #define BOARD_PMSM3PWM_TRGM HPM_TRGM3
215 #define BOARD_PMSM3APP_PWM_IRQ IRQn_PWM3
216 #define BOARD_PMSM3PWM_CMP_INDEX_0 (0U)
217 #define BOARD_PMSM3PWM_CMP_INDEX_1 (1U)
218 #define BOARD_PMSM3PWM_CMP_INDEX_2 (2U)
219 #define BOARD_PMSM3PWM_CMP_INDEX_3 (3U)
220 #define BOARD_PMSM3PWM_CMP_INDEX_4 (4U)
221 #define BOARD_PMSM3PWM_CMP_INDEX_5 (5U)
226 #define BOARD_PMSM3_QEI_BASE HPM_QEI3
227 #define BOARD_PMSM3_QEI_IRQ IRQn_QEI3
228 #define BOARD_PMSM3_QEI_TRGM HPM_TRGM3
229 #define BOARD_PMSM3_QEI_TRGM_QEI_A_SRC HPM_TRGM3_INPUT_SRC_TRGM3_P1
230 #define BOARD_PMSM3_QEI_TRGM_QEI_B_SRC HPM_TRGM3_INPUT_SRC_TRGM3_P2
231 #define BOARD_PMSM3_QEI_MOTOR_PHASE_COUNT_PER_REV (16U)
232 #define BOARD_PMSM3_QEI_CLOCK_SOURCE clock_mot3
233 #define BOARD_PMSM3_QEI_FOC_PHASE_COUNT_PER_REV (4000U)
234 
239 #define BOARD_PMSM0PWM_TRGM HPM_TRGM0
240 #define BOARD_PMSM1PWM_TRGM HPM_TRGM1
241 #define BOARD_PMSM2PWM_TRGM HPM_TRGM2
242 #define BOARD_PMSM3PWM_TRGM HPM_TRGM3
243 #define MOTOR_PMSM_PWM_SYNC HPM_SYNT
244 #define BOARD_PMSM_MOTOR_CLOCK_SOURCE clock_mot0
245 
246 
248 
253 #define SPEEDLOOP_KP 50//60
254 #define SPEEDLOOP_KI 0.01
255 #define SPEEDLOOP_OUTMAX 500
256 
261 #define POSITIONLOOP_KP 0.0005//0.001
262 #define POSITIONLOOP_KI 0
263 #define POSITIONLOOP_OUTMAX 50
265 
270 #define MOVE_ABSOLUTE_POS_r 20
275 #define MOVE_SPEED 10
280 #define MOVE_ACC 100
285 #define MOVE_JERK 1000
290 #define CONSTANT_SPEED_TIME_s 5
295 #define CYCLE_CNT 1
300 #define CONTINOUS_RONUD_MOVE_TYPE 0
305 #define SIGNLE_MOVE_TYPE 1
310 #define MULTIPLE_MOVE_TYPE 2
315 #define DWELLTIME_ms 500
320 #define ISR_TIME_s 0.001
321 
326 typedef struct {
327 
330  uint8_t ControlWord[4];
333  uint8_t OpMode[4];
336  uint8_t flag_1ms;
339  float commu_theta;
342  float commu_IdRef;
344 
345 
350 typedef enum _tag_OpMode{
362 typedef struct {
365  BLDC_CONTROL_FOC_PARA foc_para;
368  BLDC_CONTRL_PID_PARA speedloop_para;
369 #if MOTOR0_SMC_EN
370  BLDC_CONTROL_SMC_PARA smc_para;
371 #endif
374  BLDC_CONTRL_PID_PARA position_para;
375  void (*adc_trig_event_callback)(void);
376 }MOTOR_PARA;
377 
378 
379 extern MOTOR_PARA motor0;
380 extern MOTOR_PARA motor1;
381 extern MOTOR_PARA motor2;
382 extern MOTOR_PARA motor3;
384 
387 #endif //__PARM_GLOBAL_H
MOTOR_PARA motor2
Definition: pmsm_init.c:15
MOTOR_CONTROL_Global Motor_Control_Global
Definition: pmsm_init.c:18
MOTOR_PARA motor1
Definition: pmsm_init.c:14
enum _tag_OpMode OpMode_Typ
enum for motor operation mode ;电机运行模式
MOTOR_PARA motor3
Definition: pmsm_init.c:16
MOTOR_PARA motor0
Definition: pmsm_init.c:13
@ POSITION_MODE
position mode ;位置模式
Definition: parm_global.h:353
@ SPEED_MODE
speed mode ;速度模式
Definition: parm_global.h:356
Global control variable ;全局控制变量
Definition: parm_global.h:326
uint8_t flag_1ms
flag 1ms ;1ms中断标志位
Definition: parm_global.h:336
float commu_theta
user define elec_theta ;预定位控制电角度
Definition: parm_global.h:339
float commu_IdRef
user define id value ;预定位控制d轴电流
Definition: parm_global.h:342
Motor parameter structure ;电机参数结构体
Definition: parm_global.h:362
BLDC_CONTRL_PID_PARA position_para
Positional parameter structure ;位置参数结构体
Definition: parm_global.h:374
BLDC_CONTROL_FOC_PARA foc_para
Control parameter structure ;控制参数结构体
Definition: parm_global.h:365
BLDC_CONTRL_PID_PARA speedloop_para
Velocity parameter structure ;速度参数结构体
Definition: parm_global.h:368