Преглед изворни кода

远驱控制器调试

Signed-off-by: huhui <huhui@sharkgulf.com>
huhui пре 3 година
родитељ
комит
49fdc1be84

+ 5 - 0
Applications/bsp/board_gd32demo.h

@@ -6,6 +6,11 @@
 #include "gd32e10x.h"
 #endif
 
+#define SCHED_TIMER TIMER5
+#define SCHED_TIMER_RCU RCU_TIMER5
+#define SCHED_TIMER_IRQ TIMER5_IRQn
+#define SCHED_TIMER_IRQHandler TIMER5_IRQHandler
+
 /* mos 参数,电流采集需要 */
 #define MOSDEV_DLY      550U
 #define MOSDRV_DT_NS     400U

+ 36 - 20
Applications/bsp/board_mc_v1.h

@@ -6,6 +6,11 @@
 #include "gd32e10x.h"
 #endif
 
+#define SCHED_TIMER TIMER5
+#define SCHED_TIMER_RCU RCU_TIMER5
+#define SCHED_TIMER_IRQ TIMER5_IRQn
+#define SCHED_TIMER_IRQHandler TIMER5_IRQHandler
+
 #define HW_DEAD_TIME_NS  200u
 #define HW_RISE_TIME_NS  500u
 #define HW_NOISE_TIME_NS 300u
@@ -76,9 +81,19 @@
 
 /* 温度,母线,油门等采集*/
 #define MOTOR_TEMP_CHAN ADC_CHANNEL_0
+
+#define VBUS_V_CHAN 		ADC_CHANNEL_7
+#define VBUS_V_ADC_GROUP 	GPIOA
+#define VBUS_V_ADC_PIN 		GPIO_PIN_7
+#define VBUS_V_ADC_RCU 		RCU_GPIOA
+#define VBUS_V_ADC_MODE 	GPIO_MODE_AIN
+
 #define THROTTLE_CHAN ADC_CHANNEL_1 //转把信号
-#define VBUS_V_CHAN 	ADC_CHANNEL_2
-#define VBUS_I_CHAN     ADC_CHANNEL_9
+#define THROTTLE_V_ADC_GROUP 	GPIOA
+#define THROTTLE_V_ADC_PIN 		GPIO_PIN_1
+#define THROTTLE_V_ADC_RCU 		RCU_GPIOA
+#define THROTTLE_V_ADC_MODE 	GPIO_MODE_AIN
+
 
 #define ADC_TO_CURR_ceof (0.0942f)
 #define VBUS_VOL_CEOF (ADC_REFERENCE_VOLTAGE*45/4096.0f)
@@ -99,43 +114,44 @@
 #define USE_ENCODER_ABI
 
 /* 编码器 */
-#define ENC_A_GROUP GPIOA
-#define ENC_A_PIN GPIO_PIN_6
-#define ENC_A_RCU RCU_GPIOA
+#define ENC_A_GROUP GPIOB
+#define ENC_A_PIN GPIO_PIN_4
+#define ENC_A_RCU RCU_GPIOB
 #define ENC_A_MODE GPIO_MODE_IN_FLOATING
 
-#define ENC_B_GROUP GPIOA
-#define ENC_B_PIN GPIO_PIN_7
-#define ENC_B_RCU RCU_GPIOA
+#define ENC_B_GROUP GPIOB
+#define ENC_B_PIN GPIO_PIN_5
+#define ENC_B_RCU RCU_GPIOB
 #define ENC_B_MODE GPIO_MODE_IN_FLOATING
 
-#define ENC_PWM_GROUP GPIOB
-#define ENC_PWM_PIN GPIO_PIN_6
-#define ENC_PWM_RCU RCU_GPIOB
+#define TIMER2_PB4_PB5_REMAP GPIO_TIMER2_PARTIAL_REMAP
+
+#define ENC_PWM_GROUP GPIOA
+#define ENC_PWM_PIN GPIO_PIN_15
+#define ENC_PWM_RCU RCU_GPIOA
 #define ENC_PWM_MODE GPIO_MODE_IN_FLOATING
 
 #define ENC_I_GROUP GPIOB     /*测量编码器的ABI的I信号,360度同步一次*/
-#define ENC_I_PIN GPIO_PIN_0
+#define ENC_I_PIN GPIO_PIN_8
 #define ENC_I_RCU RCU_GPIOB
 #define ENC_I_MODE GPIO_MODE_IPU
-#define ENC_I_IRQ  EXTI0_IRQn
-#define ENC_I_EXTI EXTI_0
+#define ENC_I_IRQ  EXTI5_9_IRQn
+#define ENC_I_EXTI EXTI_8
 #define ENC_I_EXIT_SRC_GROUP GPIO_PORT_SOURCE_GPIOB
-#define ENC_I_EXIT_SRC_PIN GPIO_PIN_SOURCE_0
+#define ENC_I_EXIT_SRC_PIN GPIO_PIN_SOURCE_8
 
 #define ENC_TIMER TIMER2  /* 测量编码器的ABI信号的AB信号 */
 #define ENC_TIMER_RCU RCU_TIMER2
 #define ENC_TIMER_IRQ TIMER2_IRQn
 #define ENC_TIMER_IRQHandler TIMER2_IRQHandler
 
-#define ENC_PWM_TIMER TIMER3    /* 测量绝对编码器PWM输出的占空比,获取转子angle*/
-#define ENC_PWM_TIMER_RCU RCU_TIMER3
-#define ENC_PWM_TIMER_IRQ TIMER3_IRQn
+#define ENC_PWM_TIMER TIMER1    /* 测量绝对编码器PWM输出的占空比,获取转子angle*/
+#define ENC_PWM_TIMER_RCU RCU_TIMER1
+#define ENC_PWM_TIMER_IRQ TIMER1_IRQn
 #define ENC_PWM_TIMER_CHAN  TIMER_CH_0
 #define ENC_PWM_TIMER_IRQ_CH TIMER_INT_CH0
 #define ENC_PWM_TIMER_INT_FLG TIMER_INT_FLAG_CH0
-#define ENC_PWM_IRQHandler TIMER3_IRQHandler
-
+#define ENC_PWM_IRQHandler TIMER1_IRQHandler
 
 #endif /*_BOARD_MC_V1_H__ */
 

+ 3 - 0
Applications/bsp/enc_intf.c

@@ -6,6 +6,9 @@ static void _io_init(void) {
 	rcu_periph_clock_enable(ENC_B_RCU);
 	rcu_periph_clock_enable(ENC_PWM_RCU);
 	rcu_periph_clock_enable(ENC_I_RCU);
+#ifdef TIMER2_PB4_PB5_REMAP
+	gpio_pin_remap_config(TIMER2_PB4_PB5_REMAP, ENABLE);
+#endif
 	gpio_init(ENC_A_GROUP, ENC_A_MODE, GPIO_OSPEED_50MHZ, ENC_A_PIN);
 	gpio_init(ENC_B_GROUP, ENC_B_MODE, GPIO_OSPEED_50MHZ, ENC_B_PIN);
 	gpio_init(ENC_PWM_GROUP, ENC_PWM_MODE, GPIO_OSPEED_50MHZ, ENC_PWM_PIN);

+ 3 - 6
Applications/bsp/mc_irqs.c

@@ -116,12 +116,11 @@ void TIMER0_BRK_IRQHandler(void) {
 	}
 }
 
-#ifdef GD32_FOC_DEMO
 void EXTI0_IRQHandler(void)
 {
 	if(RESET != exti_interrupt_flag_get(EXTI_0)){
 		exti_interrupt_flag_clear(EXTI_0);
-#ifdef USE_ENCODER_ABI
+#if (ENC_I_EXTI == EXTI_0)
 		ABI_I_IRQHandler();
 #elif defined (USE_ENCODER_HALL)
 		HALL_IRQHandler();
@@ -131,8 +130,6 @@ void EXTI0_IRQHandler(void)
 	}	
 }
 
-#endif
-
 void EXTI2_IRQHandler(void)
 {
 	if(RESET != exti_interrupt_flag_get(EXTI_2)){
@@ -174,8 +171,8 @@ void EXTI5_9_IRQHandler(void){
 	}
 	if(RESET != exti_interrupt_flag_get(EXTI_8)){
 		exti_interrupt_flag_clear(EXTI_8);
-#ifndef GD32_FOC_DEMO		
-		HALL_IRQHandler();
+#if (ENC_I_EXTI == EXTI_8)
+		ABI_I_IRQHandler();
 #endif
 	}
 	if(RESET != exti_interrupt_flag_get(EXTI_9)){

+ 1 - 1
Applications/bsp/sched_timer.c

@@ -8,7 +8,7 @@ void sched_timer_enable(u32 us) {
     timer_deinit(SCHED_TIMER);
     /* initialize TIMER init parameter struct */
     timer_struct_para_init(&timer_initpara);
-    /* TIMER1 configuration */
+
     timer_initpara.prescaler         = TIM_CLOCK_MHz-1;
     timer_initpara.alignedmode       = TIMER_COUNTER_EDGE;
     timer_initpara.counterdirection  = TIMER_COUNTER_UP;

+ 0 - 4
Applications/bsp/sched_timer.h

@@ -2,10 +2,6 @@
 #define _Sched_Timer_H__
 #include "bsp/bsp.h"
 #include "os/os_types.h"
-#define SCHED_TIMER TIMER5
-#define SCHED_TIMER_RCU RCU_TIMER5
-#define SCHED_TIMER_IRQ TIMER5_IRQn
-#define SCHED_TIMER_IRQHandler TIMER5_IRQHandler
 
 void sched_timer_enable(u32 us);
 

+ 0 - 4
Project/GD32_DEMO.uvoptx

@@ -117,10 +117,6 @@
         <pMon>Segger\JL2CM3.dll</pMon>
       </DebugOpt>
       <TargetDriverDllRegistry>
-        <SetRegEntry>
-          <Number>0</Number>
-          <Key>DLGUARM</Key>
-        </SetRegEntry>
         <SetRegEntry>
           <Number>0</Number>
           <Key>ARMRTXEVENTFLAGS</Key>