ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
21 января
1483691
FDA (14.12.2024 00:32, просмотров: 1646)
Artery AT32F407, АЦП. Всё время получаю значение 0. Настроил всё верно, проверял раз сто уже. И тактирование, и порты, и настройку самого измерения. В чём может быть проблема ещё, никто с таким не сталкивался? 

crm_periph_clock_enable(CRM_ADC1_PERIPH_CLOCK, TRUE);

crm_adc_clock_div_set(CRM_ADC_DIV_6);

gpio_default_para_init(&gpio_init_struct);

gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_MODERATE;

gpio_init_struct.gpio_out_type = GPIO_OUTPUT_PUSH_PULL;

gpio_init_struct.gpio_mode = GPIO_MODE_ANALOG;

gpio_init_struct.gpio_pins = GPIO_PINS_0 | GPIO_PINS_1;

gpio_init_struct.gpio_pull = GPIO_PULL_NONE;

gpio_init(GPIOB, &gpio_init_struct);


adc_base_config_type adc_base_struct;

adc_combine_mode_select(ADC_INDEPENDENT_MODE);

adc_tempersensor_vintrv_enable(TRUE);

adc_base_default_para_init(&adc_base_struct);

adc_base_struct.sequence_mode = FALSE;

adc_base_struct.repeat_mode = FALSE;

adc_base_struct.data_align = ADC_RIGHT_ALIGNMENT;

adc_base_struct.ordinary_channel_length = 1;

adc_base_config(ADC1, &adc_base_struct);

adc_ordinary_channel_set(ADC1, ADC_CHANNEL_8, 1, ADC_SAMPLETIME_1_5);

adc_ordinary_conversion_trigger_set(ADC1, ADC12_ORDINARY_TRIG_SOFTWARE, TRUE);

adc_ordinary_part_mode_enable(ADC1, FALSE);

adc_enable(ADC1, TRUE);

adc_calibration_init(ADC1);

while (adc_calibration_init_status_get(ADC1));

adc_calibration_start(ADC1);

while (adc_calibration_status_get(ADC1));


----------


В прерывании раз в секунду вызываю:


adc_ordinary_software_trigger_enable(ADC1, TRUE);


Дальше в основном цикле проверяю флаг:
if (adc_flag_get(ADC1, ADC_CCE_FLAG))
{

adc_flag_clear(ADC1, ADC_CCE_FLAG);

XXX = adc_ordinary_conversion_data_get(ADC1);

}

И вот тут в XXX всегда 0!!!