|
|
@@ -66,7 +66,6 @@ static void adc01_dma_init(void)
|
|
|
{
|
|
|
dma_parameter_struct dma_init_struct;
|
|
|
rcu_periph_clock_enable(RCU_DMA0);
|
|
|
-
|
|
|
dma_deinit(DMA0, DMA_CH0);
|
|
|
dma_init_struct.direction = DMA_PERIPHERAL_TO_MEMORY;
|
|
|
dma_init_struct.memory_addr = (uint32_t)adc_buffer;
|
|
|
@@ -85,14 +84,7 @@ static void adc01_dma_init(void)
|
|
|
}
|
|
|
|
|
|
|
|
|
-static void adc01_init(void) {
|
|
|
- /* config ADC clock */
|
|
|
- rcu_adc_clock_config(RCU_CKADC_CKAPB2_DIV4); //APB2 clk 120M, adc clk 30M
|
|
|
- rcu_periph_clock_enable(RCU_ADC0);
|
|
|
- rcu_periph_clock_enable(RCU_ADC1);
|
|
|
- adc_deinit(ADC0);
|
|
|
- adc_deinit(ADC1);
|
|
|
-
|
|
|
+static void adc01_init(u32 reg_sampletime) {
|
|
|
/* config work mode */
|
|
|
adc_special_function_config(ADC0, ADC_CONTINUOUS_MODE, ENABLE);
|
|
|
adc_special_function_config(ADC0, ADC_SCAN_MODE, ENABLE);
|
|
|
@@ -107,46 +99,46 @@ static void adc01_init(void) {
|
|
|
|
|
|
#if (CONFIG_MC105_HW_VERSION==2)
|
|
|
adc_channel_length_config(ADC0, ADC_REGULAR_CHANNEL, ADC01_NUM);
|
|
|
- adc_regular_channel_config(ADC0, 0, MOS_TEMP_ADC_CHAN, ADC_REGCHAN_SAMPLE_TIME);
|
|
|
- adc_regular_channel_config(ADC0, 1, MOS_TEMP1_ADC_CHAN, ADC_REGCHAN_SAMPLE_TIME);
|
|
|
- adc_regular_channel_config(ADC0, 2, U_VOL_ADC_CHAN, ADC_REGCHAN_SAMPLE_TIME);
|
|
|
- adc_regular_channel_config(ADC0, 3, V_VOL_ADC_CHAN, ADC_REGCHAN_SAMPLE_TIME);
|
|
|
- adc_regular_channel_config(ADC0, 4, W_VOL_ADC_CHAN, ADC_REGCHAN_SAMPLE_TIME);
|
|
|
- adc_regular_channel_config(ADC0, 5, ADC_CHANNEL_17, ADC_REGCHAN_SAMPLE_TIME);//3.3vref
|
|
|
+ adc_regular_channel_config(ADC0, 0, MOS_TEMP_ADC_CHAN, reg_sampletime);
|
|
|
+ adc_regular_channel_config(ADC0, 1, MOS_TEMP1_ADC_CHAN, reg_sampletime);
|
|
|
+ adc_regular_channel_config(ADC0, 2, U_VOL_ADC_CHAN, reg_sampletime);
|
|
|
+ adc_regular_channel_config(ADC0, 3, V_VOL_ADC_CHAN, reg_sampletime);
|
|
|
+ adc_regular_channel_config(ADC0, 4, W_VOL_ADC_CHAN, reg_sampletime);
|
|
|
+ adc_regular_channel_config(ADC0, 5, ADC_CHANNEL_17, reg_sampletime);//3.3vref
|
|
|
|
|
|
adc_tempsensor_vrefint_enable();
|
|
|
|
|
|
adc_channel_length_config(ADC1, ADC_REGULAR_CHANNEL, ADC01_NUM);
|
|
|
- adc_regular_channel_config(ADC1, 0, VBUS_V_CHAN, ADC_REGCHAN_SAMPLE_TIME);
|
|
|
- adc_regular_channel_config(ADC1, 1, ACC_V_CHAN, ADC_REGCHAN_SAMPLE_TIME);
|
|
|
- adc_regular_channel_config(ADC1, 2, VBUS_I_CHAN, ADC_REGCHAN_SAMPLE_TIME);
|
|
|
- adc_regular_channel_config(ADC1, 3, THROTTLE_CHAN, ADC_REGCHAN_SAMPLE_TIME);
|
|
|
- adc_regular_channel_config(ADC1, 4, ADC_CHANNEL_10, ADC_REGCHAN_SAMPLE_TIME); //dumy
|
|
|
- adc_regular_channel_config(ADC1, 5, MOTOR_TEMP_ADC_CHAN, ADC_REGCHAN_SAMPLE_TIME);
|
|
|
+ adc_regular_channel_config(ADC1, 0, VBUS_V_CHAN, reg_sampletime);
|
|
|
+ adc_regular_channel_config(ADC1, 1, ACC_V_CHAN, reg_sampletime);
|
|
|
+ adc_regular_channel_config(ADC1, 2, VBUS_I_CHAN, reg_sampletime);
|
|
|
+ adc_regular_channel_config(ADC1, 3, THROTTLE_CHAN, reg_sampletime);
|
|
|
+ adc_regular_channel_config(ADC1, 4, ADC_CHANNEL_10, reg_sampletime); //dumy
|
|
|
+ adc_regular_channel_config(ADC1, 5, MOTOR_TEMP_ADC_CHAN, reg_sampletime);
|
|
|
#else
|
|
|
adc_channel_length_config(ADC0, ADC_REGULAR_CHANNEL, ADC01_NUM);
|
|
|
- adc_regular_channel_config(ADC0, 0, MOS_TEMP_ADC_CHAN, ADC_REGCHAN_SAMPLE_TIME);
|
|
|
- adc_regular_channel_config(ADC0, 1, MOTOR_TEMP_ADC_CHAN, ADC_REGCHAN_SAMPLE_TIME);
|
|
|
- adc_regular_channel_config(ADC0, 2, THROTTLE_CHAN, ADC_REGCHAN_SAMPLE_TIME);
|
|
|
- adc_regular_channel_config(ADC0, 3, U_VOL_ADC_CHAN, ADC_REGCHAN_SAMPLE_TIME);
|
|
|
- adc_regular_channel_config(ADC0, 4, ZERO_ADC_CHAN, ADC_REGCHAN_SAMPLE_TIME); //insert zero vol
|
|
|
- adc_regular_channel_config(ADC0, 5, ADC_CHANNEL_17, ADC_REGCHAN_SAMPLE_TIME); //mcu内部vref
|
|
|
- adc_regular_channel_config(ADC0, 6, THROTTLE2_5V_CHAN, ADC_REGCHAN_SAMPLE_TIME);
|
|
|
- adc_regular_channel_config(ADC0, 7, THROTTLE2_CHAN, ADC_REGCHAN_SAMPLE_TIME);
|
|
|
- adc_regular_channel_config(ADC0, 8, ZERO_ADC_CHAN, ADC_REGCHAN_SAMPLE_TIME); //insert zero vol
|
|
|
+ adc_regular_channel_config(ADC0, 0, MOS_TEMP_ADC_CHAN, reg_sampletime);
|
|
|
+ adc_regular_channel_config(ADC0, 1, MOTOR_TEMP_ADC_CHAN, reg_sampletime);
|
|
|
+ adc_regular_channel_config(ADC0, 2, THROTTLE_CHAN, reg_sampletime);
|
|
|
+ adc_regular_channel_config(ADC0, 3, U_VOL_ADC_CHAN, reg_sampletime);
|
|
|
+ adc_regular_channel_config(ADC0, 4, ZERO_ADC_CHAN, reg_sampletime); //insert zero vol
|
|
|
+ adc_regular_channel_config(ADC0, 5, ADC_CHANNEL_17, reg_sampletime); //mcu内部vref
|
|
|
+ adc_regular_channel_config(ADC0, 6, THROTTLE2_5V_CHAN, reg_sampletime);
|
|
|
+ adc_regular_channel_config(ADC0, 7, THROTTLE2_CHAN, reg_sampletime);
|
|
|
+ adc_regular_channel_config(ADC0, 8, ZERO_ADC_CHAN, reg_sampletime); //insert zero vol
|
|
|
|
|
|
adc_tempsensor_vrefint_enable();
|
|
|
|
|
|
adc_channel_length_config(ADC1, ADC_REGULAR_CHANNEL, ADC01_NUM);
|
|
|
- adc_regular_channel_config(ADC1, 0, VBUS_V_CHAN, ADC_REGCHAN_SAMPLE_TIME);
|
|
|
- adc_regular_channel_config(ADC1, 1, ACC_V_CHAN, ADC_REGCHAN_SAMPLE_TIME);
|
|
|
- adc_regular_channel_config(ADC1, 2, VBUS_I_CHAN, ADC_REGCHAN_SAMPLE_TIME);
|
|
|
- adc_regular_channel_config(ADC1, 3, V_VOL_ADC_CHAN, ADC_REGCHAN_SAMPLE_TIME);
|
|
|
- adc_regular_channel_config(ADC1, 4, W_VOL_ADC_CHAN, ADC_REGCHAN_SAMPLE_TIME);
|
|
|
- adc_regular_channel_config(ADC1, 5, ZERO_ADC_CHAN, ADC_REGCHAN_SAMPLE_TIME); //insert zero vol
|
|
|
- adc_regular_channel_config(ADC1, 6, THROTTLE_5V_CHAN, ADC_REGCHAN_SAMPLE_TIME);
|
|
|
- adc_regular_channel_config(ADC1, 7, ZERO_ADC_CHAN, ADC_REGCHAN_SAMPLE_TIME); //insert zero vol
|
|
|
- adc_regular_channel_config(ADC1, 8, DC5V_ADC_CHAN, ADC_REGCHAN_SAMPLE_TIME);
|
|
|
+ adc_regular_channel_config(ADC1, 0, VBUS_V_CHAN, reg_sampletime);
|
|
|
+ adc_regular_channel_config(ADC1, 1, ACC_V_CHAN, reg_sampletime);
|
|
|
+ adc_regular_channel_config(ADC1, 2, VBUS_I_CHAN, reg_sampletime);
|
|
|
+ adc_regular_channel_config(ADC1, 3, V_VOL_ADC_CHAN, reg_sampletime);
|
|
|
+ adc_regular_channel_config(ADC1, 4, W_VOL_ADC_CHAN, reg_sampletime);
|
|
|
+ adc_regular_channel_config(ADC1, 5, ZERO_ADC_CHAN, reg_sampletime); //insert zero vol
|
|
|
+ adc_regular_channel_config(ADC1, 6, THROTTLE_5V_CHAN, reg_sampletime);
|
|
|
+ adc_regular_channel_config(ADC1, 7, ZERO_ADC_CHAN, reg_sampletime); //insert zero vol
|
|
|
+ adc_regular_channel_config(ADC1, 8, DC5V_ADC_CHAN, reg_sampletime);
|
|
|
#endif
|
|
|
adc_buffer[VREF_BUFF_IDX] = VREF_ADC_DATA; //1.21/3.3*4095
|
|
|
|
|
|
@@ -208,16 +200,16 @@ static void adc_gpio_init(void) {
|
|
|
rcu_periph_clock_enable(RCU_AF);
|
|
|
/* configure ADC pin, current sampling -- ADC_IN1(PA1) ADC_IN12(PC2) ADC_IN13(PC3) */
|
|
|
#ifdef U_PHASE_ADC_GROUP
|
|
|
- rcu_periph_clock_enable(U_PHASE_ADC_RCU);
|
|
|
- gpio_init(U_PHASE_ADC_GROUP, U_PHASE_ADC_MODE, GPIO_OSPEED_50MHZ, U_PHASE_ADC_PIN);
|
|
|
+ rcu_periph_clock_enable(U_PHASE_ADC_RCU);
|
|
|
+ gpio_init(U_PHASE_ADC_GROUP, U_PHASE_ADC_MODE, GPIO_OSPEED_50MHZ, U_PHASE_ADC_PIN);
|
|
|
#endif
|
|
|
#ifdef V_PHASE_ADC_GROUP
|
|
|
- rcu_periph_clock_enable(V_PHASE_ADC_RCU);
|
|
|
- gpio_init(V_PHASE_ADC_GROUP, V_PHASE_ADC_MODE, GPIO_OSPEED_50MHZ, V_PHASE_ADC_PIN);
|
|
|
+ rcu_periph_clock_enable(V_PHASE_ADC_RCU);
|
|
|
+ gpio_init(V_PHASE_ADC_GROUP, V_PHASE_ADC_MODE, GPIO_OSPEED_50MHZ, V_PHASE_ADC_PIN);
|
|
|
#endif
|
|
|
#ifdef W_PHASE_ADC_GROUP
|
|
|
- rcu_periph_clock_enable(W_PHASE_ADC_RCU);
|
|
|
- gpio_init(W_PHASE_ADC_GROUP, W_PHASE_ADC_MODE, GPIO_OSPEED_50MHZ, W_PHASE_ADC_PIN);
|
|
|
+ rcu_periph_clock_enable(W_PHASE_ADC_RCU);
|
|
|
+ gpio_init(W_PHASE_ADC_GROUP, W_PHASE_ADC_MODE, GPIO_OSPEED_50MHZ, W_PHASE_ADC_PIN);
|
|
|
#endif
|
|
|
|
|
|
#ifdef VBUS_V_ADC_GROUP
|
|
|
@@ -297,10 +289,21 @@ static void adc_gpio_init(void) {
|
|
|
#endif
|
|
|
}
|
|
|
|
|
|
-void adc_init(void) {
|
|
|
+void adc_init(bool mot_ind) {
|
|
|
+ /* config ADC clock */
|
|
|
+ rcu_adc_clock_config(RCU_CKADC_CKAPB2_DIV4); //APB2 clk 120M, adc clk 30M
|
|
|
+ rcu_periph_clock_enable(RCU_ADC0);
|
|
|
+ rcu_periph_clock_enable(RCU_ADC1);
|
|
|
+ adc_deinit(ADC0);
|
|
|
+ adc_deinit(ADC1);
|
|
|
+
|
|
|
adc_gpio_init();
|
|
|
adc01_dma_init();
|
|
|
- adc01_init();
|
|
|
+ if (!mot_ind) {
|
|
|
+ adc01_init(ADC_REGCHAN_SAMPLE_TIME);
|
|
|
+ }else {
|
|
|
+ adc01_init(ADC_REGCHAN_MOT_IND_SAMPLE_TIME);
|
|
|
+ }
|
|
|
adc_current_sample_config(0);
|
|
|
}
|
|
|
|