Эх сурвалжийг харах

1. 加入MT编码器支持
2. adc2 不过采样,通用通道采样改为28.s

Signed-off-by: huhui <huhui@sharkgulf.com>

huhui 3 жил өмнө
parent
commit
30d2c26ae8

+ 1 - 0
Applications/app/app.c

@@ -99,6 +99,7 @@ static u32 _app_report_task(void *p) {
 		//sys_debug("modulation %f, %f\n", PMSM_FOC_Get()->out.f_vdqRation, PMSM_FOC_Get()->rtLim.rpmLimRamp.interpolation);
 		sys_debug("Slow: %d - %d\n", g_meas_MCTask.intval_time, g_meas_MCTask.exec_time);
 		sys_debug("Fast: %d - %d, err: %d-%d\n", g_meas_foc.intval_time, g_meas_foc.exec_time, g_meas_foc.intval_hi_err, g_meas_foc.intval_low_err);
+		sys_debug("acc vol %d, mos2 %d\n", get_acc_vol(), get_mos_temp2());
 		//encoder_log();
 		//err_code_log();
 	}

+ 1 - 6
Applications/bsp/adc.c

@@ -11,7 +11,7 @@
 #define ADC01_NUM 7
 #define ADC2_NUM 0
 #else
-#define ADC01_NUM 5
+#define ADC01_NUM (5)
 #define ADC2_NUM 4
 #endif
 #define REG_CHAN_NUM (ADC01_NUM + ADC2_NUM)
@@ -186,8 +186,6 @@ static void adc1_init(void){
 
 #ifdef MC100_HW_V1
 static void adc2_init(void){
-    /* config ADC clock */
-    rcu_adc_clock_config(RCU_CKADC_CKAPB2_DIV4); //APB2 clk 120M, adc clk 30M
 
 	rcu_periph_clock_enable(RCU_ADC2);
 
@@ -199,9 +197,6 @@ static void adc2_init(void){
     /* configure ADC data alignment */
     adc_data_alignment_config(ADC2, ADC_DATAALIGN_RIGHT);
 	
-	adc_oversample_mode_config(ADC2, ADC_OVERSAMPLING_ALL_CONVERT, ADC_OVERSAMPLING_SHIFT_1B, ADC_OVERSAMPLING_RATIO_MUL2);
-	adc_oversample_mode_enable(ADC2);
-
 #ifdef REG_CHAN_DMA
     /* configure ADC regular channel */
     adc_channel_length_config(ADC2, ADC_REGULAR_CHANNEL, ADC2_NUM);

+ 13 - 2
Applications/bsp/board_mc100_v1.h

@@ -270,13 +270,24 @@
 
 /* 编码器参数      */
 #define ENC_MAX_RES  1024
-#define ENC_PWM_Min_P (1.0f/131.0f)
-
 #define ENC_Duty_2_Pluse_Nr(duty) (duty * ENC_MAX_RES) //通过占空比计算有几个脉冲
 #define ENC_Pluse_Nr_2_angle(Nr) (360.0f/(float)ENC_MAX_RES * (Nr))
 
+#if ENCODER_TYPE==ENCODER_MPS
+#define ENC_PWM_Min_P (1.0f/131.0f)
 #define ENC_Duty(d, t) ((1.0f/128.0f) * (130.0f * (d)/(t) - 1.0f))
+#elif ENCODER_TYPE==ENCODER_MT
+/*min. 994 hz*/
+#define ENC_PWM_MAX_RES    4119.0F
+#define ENC_PWM_INIT_WIDTH 16.0F //PWM 起始宽度
+#define ENC_PWM_END_WIDTH   4.0F
+#define ENC_PWM_Min_P      (ENC_PWM_INIT_WIDTH/ENC_PWM_MAX_RES)
+#define PWM_Duty(d, t) ((d)/(t))
+#define ENC_Duty(d, t) ((PWM_Duty(d, t)*ENC_PWM_MAX_RES - ENC_PWM_INIT_WIDTH)/(ENC_PWM_MAX_RES - ENC_PWM_END_WIDTH - ENC_PWM_INIT_WIDTH)
+#else
+#error "Postion sensor ERROR"
 
+#endif
 #define DEBUG_PORT_UART2
 
 //#define MOTOR_BLUESHARK_NEW1  //蓝鲨大功率电机,双E形

+ 5 - 1
Applications/bsp/bsp.h

@@ -27,7 +27,7 @@
 
 #define FOC_CTRL_US (1.0f/(float)FOC_PWM_FS)
 
-#define ADC_REGCHAN_SAMPLE_TIME ADC_SAMPLETIME_13POINT5
+#define ADC_REGCHAN_SAMPLE_TIME ADC_SAMPLETIME_28POINT5
 #define ADC_TRIG_CONV_LATENCY_CYCLES 12.5f
 #define ADC_SAMPLING_CYCLES 13.5f
 
@@ -49,6 +49,10 @@
 #define GPIO_HIGH_BRK_MODE 1
 #define GPIO_LOW_BRK_MODE 2
 
+#define ENCODER_MPS 1
+#define ENCODER_MT  2
+
+#define ENCODER_TYPE ENCODER_MPS
 
 #ifdef GD32_FOC_DEMO
 #include "bsp/board_gd32demo.h"