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

去掉单电阻采样

Signed-off-by: huhui <huhui@sharkgulf.com>
huhui пре 3 година
родитељ
комит
c5a432105d
4 измењених фајлова са 96 додато и 254 уклоњено
  1. 0 78
      Applications/bsp/adc.h
  2. 91 1
      Applications/bsp/board_mc_v1.h
  3. 2 152
      Applications/bsp/pwm.c
  4. 3 23
      Applications/bsp/pwm.h

+ 0 - 78
Applications/bsp/adc.h

@@ -27,59 +27,7 @@ inserted ADC 由timer0 ch3触发,
 #define ADC_RANK_CHANNEL(c)  ((c)<<ISO3_OFFSET | (0)<<IL_OFFSET) 
 #define ADC_CALI_RANK_CHANEL(c)  ((c)<<ISO3_OFFSET | (0)<<IL_OFFSET) 
 
-#if 0
-static u32 adc0_rank_channels[6] = {
-	ADC_RANK_CHANNEL(V_PHASE_I_CHAN),//1, B, BC
-	ADC_RANK_CHANNEL(U_PHASE_I_CHAN),//2, A, AC 
-	ADC_RANK_CHANNEL(W_PHASE_I_CHAN),//3, C, CA
-	ADC_RANK_CHANNEL(V_PHASE_I_CHAN),//4, B, BA
-	ADC_RANK_CHANNEL(U_PHASE_I_CHAN),//5, A, AB
-	ADC_RANK_CHANNEL(W_PHASE_I_CHAN),//6, C, CB
-};
-static u32 adc1_rank_channels[6] = {
-	ADC_RANK_CHANNEL(W_PHASE_I_CHAN),//1, C
-	ADC_RANK_CHANNEL(W_PHASE_I_CHAN),//2, C
-	ADC_RANK_CHANNEL(U_PHASE_I_CHAN),//3, A
-	ADC_RANK_CHANNEL(U_PHASE_I_CHAN),//4, A
-	ADC_RANK_CHANNEL(V_PHASE_I_CHAN),//5, B
-	ADC_RANK_CHANNEL(V_PHASE_I_CHAN),//5, B
-};
-
 
-static u32 volatile * adc_phase_reg1[6] = {
-	&ADC_IDATA0(ADC0),//1, B
-	&ADC_IDATA0(ADC0),//2, A
-	&ADC_IDATA0(ADC1),//3, A
-	&ADC_IDATA0(ADC0),//4, B
-	&ADC_IDATA0(ADC1),//5, B 
-	&ADC_IDATA0(ADC1),//6, B
-};
-static u32 volatile * adc_phase_reg2[6] = {
-	&ADC_IDATA0(ADC1),//1, C
-	&ADC_IDATA0(ADC1),//2, C
-	&ADC_IDATA0(ADC0),//3, C
-	&ADC_IDATA0(ADC1),//4, A
-	&ADC_IDATA0(ADC0),//5, A
-	&ADC_IDATA0(ADC0),//6, C
-};
-
-static void __inline adc_phase_current_read(u8 sector, s32 *v1, s32 *v2) {
-#if SHUNT_NUM==THREE_SHUNTS_SAMPLE	
-	*v1 = (s32)(*adc_phase_reg1[sector]) ;
-	*v2 = (s32)(*adc_phase_reg2[sector]) ;
-#else
-	*v1 =  (ADC_IDATA0(ADC0) & 0xFFF);
-	*v2 =  (ADC_IDATA0(ADC1) & 0xFFF);
-#endif
-}
-
-static void __inline adc_current_sample_config(u8 sector) {
-#if SHUNT_NUM==THREE_SHUNTS_SAMPLE
-	ADC_ISQ(ADC0) = adc0_rank_channels[sector];
-	ADC_ISQ(ADC1) = adc1_rank_channels[sector];
-#endif	
-}
-#else
 static u32 adc0_rank_channels[3] = {
 	ADC_RANK_CHANNEL(U_PHASE_I_CHAN),//0, A, AB
 	ADC_RANK_CHANNEL(U_PHASE_I_CHAN),//1, A, AC
@@ -104,35 +52,21 @@ static u32 volatile * adc_phase_reg2[3] = {
 };
 
 static void __inline adc_phase_current_read(u8 phases, s32 *v1, s32 *v2) {
-#if SHUNT_NUM==THREE_SHUNTS_SAMPLE	
 	*v1 = (s32)(*adc_phase_reg1[phases]) ;
 	*v2 = (s32)(*adc_phase_reg2[phases]) ;
-#else
-	*v1 =  (ADC_IDATA0(ADC0) & 0xFFF);
-	*v2 =  (ADC_IDATA0(ADC1) & 0xFFF);
-#endif
 }
 
 static void __inline adc_current_sample_config(u8 phases) {
-#if SHUNT_NUM==THREE_SHUNTS_SAMPLE
 	ADC_ISQ(ADC0) = adc0_rank_channels[phases];
 	ADC_ISQ(ADC1) = adc1_rank_channels[phases];
-#endif
 }
-#endif
 
 static void __inline adc_disable_ext_trigger(void) {   
 	ADC_CTL1(ADC0) &= ~ADC_CTL1_ETEIC;
-#if SHUNT_NUM==ONE_SHUNT_SAMPLE
-	ADC_CTL1(ADC1) &= ~ADC_CTL1_ETEIC;
-#endif
 }
 
 static void __inline adc_enable_ext_trigger(void) {	
 	ADC_CTL1(ADC0) |= ADC_CTL1_ETEIC;
-#if SHUNT_NUM==ONE_SHUNT_SAMPLE	
-	ADC_CTL1(ADC1) |= ADC_CTL1_ETEIC;
-#endif
 }
 
 /* insert len fixed to 2(IL=1), ISQ2 >> ISQ3*/
@@ -159,27 +93,15 @@ static __inline__ void adc_update_insert_sample_time(u32 adc, uint8_t adc_channe
 
 static __inline__ bool adc_eoic_interrupt(void)
 {
-#if SHUNT_NUM==THREE_SHUNTS_SAMPLE
 	if (ADC_STAT(ADC0) & ADC_STAT_EOIC){
 		return true;
 	}
-#endif
-#if SHUNT_NUM==ONE_SHUNT_SAMPLE
-	if (ADC_STAT(ADC1) & ADC_STAT_EOIC){
-		return true;
-	}
-#endif
 	return false;
 }
 
 static __inline__ void adc_clear_irq_flags(void) {
-#if SHUNT_NUM==THREE_SHUNTS_SAMPLE
-	ADC_STAT(ADC0) &= ~((u32) ADC_INT_FLAG_EOIC);
-	ADC_STAT(ADC1) &= ~((u32) ADC_INT_FLAG_EOIC);
-#else
 	ADC_STAT(ADC0) &= ~((u32) ADC_INT_FLAG_EOIC);
 	ADC_STAT(ADC1) &= ~((u32) ADC_INT_FLAG_EOIC);
-#endif
 }
 
 

+ 91 - 1
Applications/bsp/board_mc_v1.h

@@ -20,13 +20,60 @@
 #define ADC_REFERENCE_VOLTAGE  (3.3F)
 
 #define pwm_timer TIMER0
+#define PWM_U_P_GROUP 	GPIOA
+#define PWM_U_P_PIN 	GPIO_PIN_8
+#define PWM_U_P_RCU 	RCU_GPIOA
+#define PWM_U_P_MODE 	GPIO_MODE_AF_PP
+
+#define PWM_U_N_GROUP 	GPIOB
+#define PWM_U_N_PIN 	GPIO_PIN_13
+#define PWM_U_N_RCU 	RCU_GPIOB
+#define PWM_U_N_MODE 	GPIO_MODE_AF_PP
+
+#define PWM_V_P_GROUP 	GPIOA
+#define PWM_V_P_PIN 	GPIO_PIN_9
+#define PWM_V_P_RCU 	RCU_GPIOA
+#define PWM_V_P_MODE 	GPIO_MODE_AF_PP
+
+#define PWM_V_N_GROUP 	GPIOB
+#define PWM_V_N_PIN 	GPIO_PIN_14
+#define PWM_V_N_RCU 	RCU_GPIOB
+#define PWM_V_N_MODE 	GPIO_MODE_AF_PP
+
+#define PWM_W_P_GROUP 	GPIOA
+#define PWM_W_P_PIN 	GPIO_PIN_10
+#define PWM_W_P_RCU 	RCU_GPIOA
+#define PWM_W_P_MODE 	GPIO_MODE_AF_PP
+
+#define PWM_W_N_GROUP 	GPIOB
+#define PWM_W_N_PIN 	GPIO_PIN_15
+#define PWM_W_N_RCU 	RCU_GPIOB
+#define PWM_W_N_MODE 	GPIO_MODE_AF_PP
+
 
 /* 三电阻采样 */
 #define SHUNT_NUM THREE_SHUNTS_SAMPLE
+
 #define W_PHASE_I_CHAN  ADC_CHANNEL_6
 #define V_PHASE_I_CHAN  ADC_CHANNEL_7
 #define U_PHASE_I_CHAN  ADC_CHANNEL_8
 
+#define U_PHASE_ADC_GROUP 	GPIOA
+#define U_PHASE_ADC_PIN 	GPIO_PIN_1
+#define U_PHASE_ADC_RCU 	RCU_GPIOA
+#define U_PHASE_ADC_MODE 	GPIO_MODE_AIN
+
+#define V_PHASE_ADC_GROUP 	GPIOC
+#define V_PHASE_ADC_PIN 	GPIO_PIN_2
+#define V_PHASE_ADC_RCU 	RCU_GPIOC
+#define V_PHASE_ADC_MODE 	GPIO_MODE_AIN
+
+#define W_PHASE_ADC_GROUP 	GPIOC
+#define W_PHASE_ADC_PIN 	GPIO_PIN_3
+#define W_PHASE_ADC_RCU 	RCU_GPIOC
+#define W_PHASE_ADC_MODE 	GPIO_MODE_AIN
+
+
 /* 温度,母线,油门等采集*/
 #define MOTOR_TEMP_CHAN ADC_CHANNEL_0
 #define THROTTLE_CHAN ADC_CHANNEL_1 //转把信号
@@ -40,7 +87,50 @@
 #define VBUS_VOL_CEOF (ADC_REFERENCE_VOLTAGE*45/4096.0f)
 #define THROTTLE_VOL_CEOF (1)
 
-#define USE_ENCODER_HALL
+
+/* 是否用编码器 */
+#define USE_ENCODER_ABI
+
+#define USER_ITMER_BRAKE 0
+
+/* 编码器 */
+#define ENC_A_GROUP GPIOA
+#define ENC_A_PIN GPIO_PIN_6
+#define ENC_A_RCU RCU_GPIOA
+#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_MODE GPIO_MODE_IN_FLOATING
+
+#define ENC_PWM_GROUP GPIOB
+#define ENC_PWM_PIN GPIO_PIN_6
+#define ENC_PWM_RCU RCU_GPIOB
+#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_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_EXIT_SRC_GROUP GPIO_PORT_SOURCE_GPIOB
+#define ENC_I_EXIT_SRC_PIN GPIO_PIN_SOURCE_0
+
+#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_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
+
 
 #endif /*_BOARD_MC_V1_H__ */
 

+ 2 - 152
Applications/bsp/pwm.c

@@ -18,13 +18,6 @@ DMA0 ch4 -> timer0 update event
 */
 
 static void _init_pwm_timer(void);
-#ifdef ENABLE_AUX_TIMER
-static void _init_adc_timer(void);
-static void _init_aux_timer(void);
-#endif
-#if SHUNT_NUM==ONE_SHUNT_SAMPLE
-static void timer0_dma_config(void);
-#endif
 static void _pwm_gpio_config(void);
 #if USER_ITMER_BRAKE==0
 static void _gpio_brakein_irq_enable(void);
@@ -33,13 +26,6 @@ u16 timer_update_buffer[6] = {0};
 
 void pwm_3phase_init(void){
     _init_pwm_timer();
-#ifdef ENABLE_AUX_TIMER
-	_init_adc_timer();
-	_init_aux_timer();
-#endif	
-#if SHUNT_NUM==ONE_SHUNT_SAMPLE	
-	timer0_dma_config();
-#endif	
 	_pwm_gpio_config();
 }
 
@@ -167,23 +153,7 @@ static void _init_pwm_timer(void) {
 	_gpio_brakein_irq_enable();
 #endif
 
-#ifdef ENABLE_AUX_TIMER
-	/* select the master slave mode */
-	timer_master_slave_mode_config(timer,TIMER_MASTER_SLAVE_MODE_ENABLE);
-	/* slave mode selection: enabled when time2 is enable*/
-	timer_slave_mode_select(timer,TIMER_SLAVE_MODE_EVENT);
-	timer_input_trigger_source_select(timer,TIMER_SMCFG_TRGSEL_ITI2);
-#endif
-#if SHUNT_NUM==ONE_SHUNT_SAMPLE
-	timer_channel_output_shadow_config(timer,TIMER_CH_0,TIMER_OC_SHADOW_DISABLE);
-	timer_channel_output_shadow_config(timer,TIMER_CH_1,TIMER_OC_SHADOW_DISABLE);
-	timer_channel_output_shadow_config(timer,TIMER_CH_2,TIMER_OC_SHADOW_DISABLE);
-	
-	timer_dma_transfer_config(TIMER0, TIMER_DMACFG_DMATA_CH0CV, TIMER_DMACFG_DMATC_3TRANSFER);
-	timer_dma_enable(TIMER0, TIMER_DMA_UPD);
-#else
 	timer_master_slave_mode_config(timer,TIMER_MASTER_SLAVE_MODE_DISABLE);
-#endif /* ONE_SHUNT_SAMPLE_1 */
 
 	pwm_enable_channel();
 
@@ -192,9 +162,7 @@ static void _init_pwm_timer(void) {
 #ifdef ENABLE_PWM_UP_IRQ	
 	nvic_irq_enable(TIMER0_UP_IRQn, TIMER_UP_IRQ_PRIORITY, 0);
 #endif
-#if SHUNT_NUM==THREE_SHUNTS_SAMPLE	
     timer_enable(timer);
-#endif
 
 #ifdef GD32_FOC_DEMO
 	/* IR2136S enable */
@@ -203,107 +171,7 @@ static void _init_pwm_timer(void) {
 
 }
 
-#ifdef ENABLE_AUX_TIMER
-static void _init_adc_timer(void) {
-    timer_oc_parameter_struct timer_ocintpara;
-    timer_parameter_struct timer_initpara;
-    u32 timer = adc_timer;
-    u32 half_period = FOC_PWM_Half_Period;
-
-    rcu_periph_clock_enable(_rcu_clk(timer));
-
-    timer_deinit(timer);
-	memset(&timer_initpara, 0, sizeof(timer_initpara));
-	memset(&timer_ocintpara, 0, sizeof(timer_ocintpara));
-
-    timer_initpara.prescaler        = 0;
-    timer_initpara.alignedmode      = TIMER_COUNTER_CENTER_UP;
-    timer_initpara.period          = half_period;
-    timer_initpara.clockdivision    = TIMER_CKDIV_DIV1;
-    timer_initpara.repetitioncounter = 0;
-    timer_init(timer,&timer_initpara);
-
-    timer_ocintpara.outputstate  = TIMER_CCX_ENABLE;
-    timer_ocintpara.outputnstate = TIMER_CCXN_DISABLE;
-    timer_ocintpara.ocpolarity   = TIMER_OC_POLARITY_HIGH;
-	timer_ocintpara.ocnpolarity  = TIMER_OCN_POLARITY_HIGH;
-    timer_ocintpara.ocidlestate  = TIMER_OC_IDLE_STATE_LOW;
-    timer_ocintpara.ocnidlestate = TIMER_OCN_IDLE_STATE_LOW;
 
-    timer_channel_output_config(timer,TIMER_CH_0,&timer_ocintpara);
-
-    timer_channel_output_pulse_value_config(timer,TIMER_CH_0,half_period-1);
-#if SHUNT_NUM==ONE_SHUNT_SAMPLE	
-    timer_channel_output_mode_config(timer,TIMER_CH_0,TIMER_OC_MODE_PWM1);
-#else
-	timer_channel_output_mode_config(timer,TIMER_CH_0,TIMER_OC_MODE_PWM0);
-#endif
-    timer_channel_output_shadow_config(timer,TIMER_CH_0,TIMER_OC_SHADOW_ENABLE);
-
-    /* select the master slave mode */
-    timer_master_slave_mode_config(timer,TIMER_MASTER_SLAVE_MODE_ENABLE);
-    /* slave mode selection: enabled when time2 is enable*/
-    timer_slave_mode_select(timer,TIMER_SLAVE_MODE_EVENT);
-    timer_input_trigger_source_select(timer,TIMER_SMCFG_TRGSEL_ITI2);
-	
-    //timer_primary_output_config(timer,ENABLE);
-
-    /* auto-reload preload enable */
-    timer_auto_reload_shadow_enable(timer);
-	
-    //timer_enable(timer);
-}
-
-static void _init_aux_timer(void) {
-    timer_parameter_struct timer_initpara;
-    u32 timer = aux_timer;
-    rcu_periph_clock_enable(_rcu_clk(timer));
-
-    timer_deinit(timer);
-	memset(&timer_initpara, 0, sizeof(timer_initpara));
-
-    timer_initpara.prescaler        = 0;
-    timer_initpara.alignedmode      = TIMER_COUNTER_CENTER_UP;
-    timer_initpara.period          = FOC_PWM_period;
-    timer_initpara.clockdivision    = TIMER_CKDIV_DIV1;
-    timer_initpara.repetitioncounter = 0;
-
-    timer_init(timer,&timer_initpara);
-
-    /* select the master slave mode */
-    timer_master_slave_mode_config(timer,TIMER_MASTER_SLAVE_MODE_ENABLE);
-    /* timer update event is used as trigger output */
-    timer_master_output_trigger_source_select(timer,TIMER_TRI_OUT_SRC_ENABLE);
-
-	timer_primary_output_config(timer,ENABLE);
-
-	timer_enable(timer);
-}
-
-#endif
-
-#if SHUNT_NUM==ONE_SHUNT_SAMPLE
-static void timer0_dma_config(void)
-{
-    dma_parameter_struct dma_init_struct;
-    rcu_periph_clock_enable(RCU_DMA0);
-
-    /* TIMER0 update */
-    dma_deinit(DMA0, DMA_CH4);
-    dma_init_struct.direction    = DMA_MEMORY_TO_PERIPHERAL;
-    dma_init_struct.memory_addr  = (uint32_t)timer_update_buffer;
-    dma_init_struct.memory_inc   = DMA_MEMORY_INCREASE_ENABLE;
-    dma_init_struct.memory_width = DMA_MEMORY_WIDTH_16BIT;
-    dma_init_struct.number       = 6;
-    dma_init_struct.periph_addr  = (uint32_t)0x40012C4C;
-    dma_init_struct.periph_inc   = DMA_PERIPH_INCREASE_DISABLE;
-    dma_init_struct.periph_width = DMA_PERIPHERAL_WIDTH_16BIT;
-    dma_init_struct.priority     = DMA_PRIORITY_ULTRA_HIGH;
-    dma_init(DMA0, DMA_CH4, &dma_init_struct);
-    dma_circulation_enable(DMA0, DMA_CH4);
-    dma_memory_to_memory_disable(DMA0, DMA_CH4);
-}
-#endif
 
 #if USER_ITMER_BRAKE==0
 static void _gpio_brakein_irq_enable(void){
@@ -335,9 +203,7 @@ void pwm_start(void){
 	timer_flag_clear(pwm_timer, TIMER_FLAG_UP);
 
 	timer_primary_output_config(pwm_timer,ENABLE);
-#ifdef ENABLE_AUX_TIMER	
-	timer_primary_output_config(adc_timer,ENABLE);
-#endif
+
 	timer_flag_clear(pwm_timer, TIMER_FLAG_UP);
 #ifdef ENABLE_PWM_UP_IRQ
 	timer_interrupt_enable(pwm_timer, TIMER_INT_UP);
@@ -346,9 +212,7 @@ void pwm_start(void){
 
 void pwm_stop(void){
 	timer_primary_output_config(pwm_timer,DISABLE);
-#ifdef ENABLE_AUX_TIMER	
-	timer_primary_output_config(adc_timer,DISABLE);
-#endif
+
 	timer_interrupt_disable(pwm_timer, TIMER_INT_UP);
 	/* wait for a new PWM period to flush last HF task */
 	timer_flag_clear(pwm_timer, TIMER_FLAG_UP);
@@ -375,22 +239,9 @@ void pwm_turn_on_low_side(void)
   	while (timer_flag_get(pwm_timer,TIMER_FLAG_UP) == RESET );
   	/* Main PWM Output Enable */
   	timer_primary_output_config(pwm_timer, ENABLE);
-#ifdef ENABLE_AUX_TIMER	
-	timer_primary_output_config(adc_timer, ENABLE);
-#endif
 }
 
 void pwm_update_sample(u32 samp1, u32 samp2, u8 sector) {
-#if 0
-	pwm_update_2smaples(samp1, samp2);
-#ifdef ENABLE_AUX_TIMER
-	if (samp1 < FOC_PWM_Half_Period) {
-		adc_update_ext_trigger(ADC_TRIGGER_PHASE);
-	}else {
-		adc_update_ext_trigger(ADC_TRIGGER_PHASE2);
-	}
-#endif
-#else
 	if (samp1 < FOC_PWM_Half_Period) {
 		TIMER_CH3CV(pwm_timer) = samp1;
 		pwm_change_t3_mode(TIMER_OC_MODE_PWM1);
@@ -398,6 +249,5 @@ void pwm_update_sample(u32 samp1, u32 samp2, u8 sector) {
 		TIMER_CH3CV(pwm_timer) = samp2;
 		pwm_change_t3_mode(TIMER_OC_MODE_PWM0);
 	}
-#endif
 	adc_current_sample_config(sector);
 }

+ 3 - 23
Applications/bsp/pwm.h

@@ -23,37 +23,17 @@
 		ch1_update_duty(dutyB);\
 		ch2_update_duty(dutyC);\
 	}while(0)
-#ifdef ENABLE_AUX_TIMER
-#define pwm_update_2smaples(samp1, samp2) \
-	do { \
-		TIMER_CH3CV(pwm_timer) = (uint32_t)samp1; \
-		TIMER_CH0CV(adc_timer) = (uint32_t)samp2; \
-	}while(0)
-#else
+
 #define pwm_update_2smaples(samp1, sampl2) \
 	do { \
 		TIMER_CH3CV(pwm_timer) = (uint32_t)samp1; \
 	}while(0)
-#endif
-#define update_sample_time(samp1, samp2) do{adc_timer_dma_buf[2] = samp1; adc_timer_dma_buf[0] = samp2;}while(0)
-#define update_distort_chxcv(duty) do {pwm_timer_dma_buf[1] = duty;}while(0)
+
+
 
 #define enable_pwm_timer_dma() TIMER_DMAINTEN(pwm_timer) |= (uint32_t) TIMER_DMA_CH3D
 #define disable_pwm_timer_dma() TIMER_DMAINTEN(pwm_timer) &= ~((uint32_t) TIMER_DMA_CH3D)
 
-#define enable_sample_timer_dma() TIMER_DMAINTEN(adc_timer) |= (uint32_t) TIMER_DMA_CH0D
-#define disable_sample_timer_dma() TIMER_DMAINTEN(adc_timer) &= ~((uint32_t) TIMER_DMA_CH0D)
-
-extern u16 timer_update_buffer[6];
-#define pwm_update_duty_dma(a, b, c, na, nb, nc) \
-	do { \
-		timer_update_buffer[0] = a; \
-		timer_update_buffer[1] = b; \
-		timer_update_buffer[2] = c; \
-		timer_update_buffer[3] = na; \
-		timer_update_buffer[4] = nb; \
-		timer_update_buffer[5] = nc; \
-	}while(0)
 
 #define pwm_clear_updata() \
 	timer_flag_clear(pwm_timer, TIMER_FLAG_UP);