|
|
@@ -39,11 +39,10 @@ static void _adc0_init(void) {
|
|
|
u32 adc_dev = ADC0;
|
|
|
/* enable ADC1 clock */
|
|
|
rcu_periph_clock_enable(RCU_ADC0);
|
|
|
-
|
|
|
/* ADC mode config,adc0 master, adc1 slave */
|
|
|
- adc_mode_config(ADC_DAUL_INSERTED_PARALLEL);
|
|
|
+ adc_mode_config(ADC_DAUL_INSERTED_PARALLEL);
|
|
|
/* ADC special function config */
|
|
|
- adc_special_function_config(adc_dev, ADC_SCAN_MODE, DISABLE);
|
|
|
+ adc_special_function_config(adc_dev, ADC_SCAN_MODE, ENABLE);
|
|
|
adc_special_function_config(adc_dev, ADC_CONTINUOUS_MODE, DISABLE);
|
|
|
/* ADC data alignment config */
|
|
|
adc_data_alignment_config(adc_dev, ADC_DATAALIGN_RIGHT);
|
|
|
@@ -62,12 +61,11 @@ static void _adc1_init(void) {
|
|
|
u32 adc_dev = ADC1;
|
|
|
/* enable ADC1 clock */
|
|
|
rcu_periph_clock_enable(RCU_ADC1);
|
|
|
-
|
|
|
/* ADC mode config,adc0 master, adc1 slave */
|
|
|
adc_mode_config(ADC_DAUL_INSERTED_PARALLEL);
|
|
|
/* ADC special function config */
|
|
|
- adc_special_function_config(adc_dev, ADC_SCAN_MODE, DISABLE);
|
|
|
- adc_special_function_config(adc_dev, ADC_CONTINUOUS_MODE, ENABLE);
|
|
|
+ adc_special_function_config(adc_dev, ADC_SCAN_MODE, ENABLE);
|
|
|
+ adc_special_function_config(adc_dev, ADC_CONTINUOUS_MODE, DISABLE);
|
|
|
/* ADC data alignment config */
|
|
|
adc_data_alignment_config(adc_dev, ADC_DATAALIGN_RIGHT);
|
|
|
/* init insert chans*/
|
|
|
@@ -82,60 +80,62 @@ static void _adc1_init(void) {
|
|
|
|
|
|
}
|
|
|
|
|
|
-/* ADC0 insert chan sample vbus I */
|
|
|
+/* ADC0 insert chan sample phase I(use two chan, selected by foc) */
|
|
|
static void _adc0_insert_chan_init(void) {
|
|
|
u32 adc_dev = ADC0;
|
|
|
- adc_discontinuous_mode_config(adc_dev, ADC_INSERTED_CHANNEL, 1); //每次转化一个
|
|
|
+ //adc_discontinuous_mode_config(adc_dev, ADC_INSERTED_CHANNEL, 0);
|
|
|
/* ADC channel length config */
|
|
|
- adc_channel_length_config(adc_dev, ADC_INSERTED_CHANNEL, 2);
|
|
|
- /* ADC inserted channel config */
|
|
|
- adc_inserted_channel_config(adc_dev, 0, VBUS_I_CHAN, ADC_SAMPLETIME_7POINT5);
|
|
|
- adc_inserted_channel_config(adc_dev, 1, VBUS_I_CHAN, ADC_SAMPLETIME_7POINT5);
|
|
|
+ adc_channel_length_config(adc_dev, ADC_INSERTED_CHANNEL, 1);
|
|
|
+ /* ADC inserted channel ran config, use ISQ2,ISQ3 */
|
|
|
+ adc0_update_insert_sample_rank(U_PHASE_I_CHAN);
|
|
|
+ /* config inserted channel sample time */
|
|
|
+ adc0_update_insert_sample_time(U_PHASE_I_CHAN, ADC_SAMPLETIME_7POINT5);
|
|
|
+ adc0_update_insert_sample_time(V_PHASE_I_CHAN, ADC_SAMPLETIME_7POINT5);
|
|
|
+ adc0_update_insert_sample_time(W_PHASE_I_CHAN, ADC_SAMPLETIME_7POINT5);
|
|
|
/* ADC trigger config */
|
|
|
-// adc_external_trigger_source_config(adc_dev, ADC_INSERTED_CHANNEL, ADC0_1_EXTTRIG_INSERTED_T1_CH0);
|
|
|
+ adc_external_trigger_source_config(adc_dev, ADC_INSERTED_CHANNEL, ADC0_1_EXTTRIG_INSERTED_T0_CH3);
|
|
|
+ /* ADC external trigger enable */
|
|
|
+ adc_external_trigger_config(adc_dev, ADC_INSERTED_CHANNEL, ENABLE);
|
|
|
}
|
|
|
|
|
|
-/* ADC1 insert chan sample phase I(use two chan, selected by foc) */
|
|
|
+/* ADC1 insert chan sample vbus I */
|
|
|
static void _adc1_insert_chan_init(void) {
|
|
|
u32 adc_dev = ADC1;
|
|
|
- adc_discontinuous_mode_config(adc_dev, ADC_INSERTED_CHANNEL, 1); //每次转化一个
|
|
|
+ //adc_discontinuous_mode_config(adc_dev, ADC_INSERTED_CHANNEL, 0);
|
|
|
/* ADC channel length config */
|
|
|
- adc_channel_length_config(adc_dev, ADC_INSERTED_CHANNEL, 2);
|
|
|
- /* ADC inserted channel ran config, use ISQ2,ISQ3 */
|
|
|
- adc1_update_insert_sample_rank(U_PHASE_I_CHAN, V_PHASE_I_CHAN);
|
|
|
- /* config inserted channel sample time */
|
|
|
- adc1_update_insert_sample_time(U_PHASE_I_CHAN, ADC_SAMPLETIME_7POINT5);
|
|
|
- adc1_update_insert_sample_time(V_PHASE_I_CHAN, ADC_SAMPLETIME_7POINT5);
|
|
|
- adc1_update_insert_sample_time(W_PHASE_I_CHAN, ADC_SAMPLETIME_7POINT5);
|
|
|
- /* ADC trigger config */
|
|
|
-// adc_external_trigger_source_config(adc_dev, ADC_INSERTED_CHANNEL, ADC0_1_EXTTRIG_INSERTED_T1_CH0);
|
|
|
+ adc_channel_length_config(adc_dev, ADC_INSERTED_CHANNEL, 1);
|
|
|
+ /* ADC inserted channel config */
|
|
|
+ adc_inserted_channel_config(adc_dev, 0, VBUS_I_CHAN, ADC_SAMPLETIME_7POINT5);
|
|
|
+ //adc_inserted_channel_config(adc_dev, 1, VBUS_I_CHAN, ADC_SAMPLETIME_7POINT5);
|
|
|
+ /* ADC trigger config, slave must config to software trigger */
|
|
|
+ adc_external_trigger_source_config(adc_dev, ADC_INSERTED_CHANNEL, ADC0_1_2_EXTTRIG_REGULAR_NONE);
|
|
|
+ /* ADC external trigger enable */
|
|
|
+ adc_external_trigger_config(adc_dev, ADC_INSERTED_CHANNEL, ENABLE);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
static void _adc0_regular_chan_init(void) {
|
|
|
adc_discontinuous_mode_config(ADC0, ADC_REGULAR_CHANNEL, 1); //每次转化一个
|
|
|
/* ADC channel length config */
|
|
|
adc_channel_length_config(ADC0, ADC_REGULAR_CHANNEL, 1);
|
|
|
- adc_external_trigger_config(ADC0, ADC_REGULAR_CHANNEL, DISABLE);
|
|
|
+ adc_external_trigger_config(ADC0, ADC_REGULAR_CHANNEL, ENABLE);
|
|
|
+ adc_external_trigger_source_config(ADC0, ADC_REGULAR_CHANNEL, ADC0_1_2_EXTTRIG_REGULAR_NONE);
|
|
|
adc_regular_channel_config(ADC0, 0, MOTOR_TEMP_CHAN, ADC_SAMPLETIME_55POINT5);
|
|
|
- adc_regular_channel_config(ADC0, 1, HANDLERBAR_CHAN, ADC_SAMPLETIME_55POINT5);
|
|
|
- adc_regular_channel_config(ADC0, 2, VBUS_V_CHAN, ADC_SAMPLETIME_55POINT5);
|
|
|
+ //adc_regular_channel_config(ADC0, 1, HANDLERBAR_CHAN, ADC_SAMPLETIME_55POINT5);
|
|
|
+ //adc_regular_channel_config(ADC0, 2, VBUS_V_CHAN, ADC_SAMPLETIME_55POINT5);
|
|
|
}
|
|
|
|
|
|
static void _adc1_regular_chan_init(void) {
|
|
|
adc_discontinuous_mode_config(ADC1, ADC_REGULAR_CHANNEL, 1); //每次转化一个
|
|
|
/* ADC channel length config */
|
|
|
adc_channel_length_config(ADC1, ADC_REGULAR_CHANNEL, 1);
|
|
|
- adc_external_trigger_config(ADC1, ADC_REGULAR_CHANNEL, DISABLE);
|
|
|
+ adc_external_trigger_config(ADC1, ADC_REGULAR_CHANNEL, ENABLE);
|
|
|
+ adc_external_trigger_source_config(ADC1, ADC_REGULAR_CHANNEL, ADC0_1_2_EXTTRIG_REGULAR_NONE);
|
|
|
adc_regular_channel_config(ADC1, 0, W_PHASE_V_CHAN, ADC_SAMPLETIME_55POINT5);
|
|
|
- adc_regular_channel_config(ADC1, 1, V_PHASE_V_CHAN, ADC_SAMPLETIME_55POINT5);
|
|
|
- adc_regular_channel_config(ADC1, 2, U_PHASE_V_CHAN, ADC_SAMPLETIME_55POINT5);
|
|
|
+ //adc_regular_channel_config(ADC1, 1, V_PHASE_V_CHAN, ADC_SAMPLETIME_55POINT5);
|
|
|
+ //adc_regular_channel_config(ADC1, 2, U_PHASE_V_CHAN, ADC_SAMPLETIME_55POINT5);
|
|
|
}
|
|
|
|
|
|
void adc_start_insert_convert(void) {
|
|
|
- /* ADC external trigger enable */
|
|
|
- adc_external_trigger_config(ADC0, ADC_INSERTED_CHANNEL, ENABLE);
|
|
|
- adc_external_trigger_config(ADC1, ADC_INSERTED_CHANNEL, ENABLE);
|
|
|
/* clear the ADC flag */
|
|
|
adc_interrupt_flag_clear(ADC0, ADC_INT_FLAG_EOC);
|
|
|
adc_interrupt_flag_clear(ADC0, ADC_INT_FLAG_EOIC);
|
|
|
@@ -156,6 +156,7 @@ s32 adc_sample_regular_channel(int channel, int times) {
|
|
|
int min = 0xFFFFF;
|
|
|
int max = -0xFFFFF;
|
|
|
u64 start_time;
|
|
|
+ adc_regular_channel_config(adc_device, 0, channel, ADC_SAMPLETIME_55POINT5);
|
|
|
while(count < times){
|
|
|
restart:
|
|
|
start_time = get_mseconds();
|