Не работает АЦП stm32f205. Собственные мысли, где может быть ошибка, кончились, поэтому обращаюсь с просьбой помочь разобраться. Пытаюсь следить за напряжением на PA.1, там где положено быть первому каналу АЦП (как я понимаю любого из трех модулей АЦП). Опорное напряжение = 3,3В. Напряжение на PA.1 меняю от 0,2 до 1,5 В. Вот мой скромный код: RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN;//тактирование порта А GPIOA->MODER |= GPIO_MODER_MODER1; //analog mode PA.1 GPIOA->PUPDR &= ~GPIO_PUPDR_PUPDR1; //No pull-up, pull-down PA.1 RCC->APB2ENR |= RCC_APB2ENR_ADC1EN; //тактирование АЦП ADC1->CR1 &= ~ADC_CR1_RES; //12-битный результат ADC1->CR2 |= ADC_CR2_CONT;//Continuous conversion - не понимаю, что это такое, роли не играет //ADC1->CR1 |= ADC_CR1_JAUTO; //не играет роли ADC1->CR2 &= ~ADC_CR2_ALIGN;//выравнивание по правому краю ADC1->JSQR |= ADC_JSQR_JL;//разрешаю все четыре преобразования ADC1->JSQR |= ADC_JSQR_JSQ1_0;//выставляю, что первое преобразование - это будет с моего первого канала на PA.1 ADC1->CR2 |= ADC_CR2_ADON;//разрешаю АЦП ADC1->CR2 |= ADC_CR2_JSWSTART; //стартую while (!(ADC1->SR & ADC_SR_JEOC));//жду окончания INA = ADC1-> JDR1;//забираю результат в регистр INA
После выполнения этих нехитрых операций в регистре INA появляется результат в десятичном виде: 4001 счета при 0,2В на PA.1 и 4063 счета при 1,5В на PA.1. Получается контроллер нагло врет, выдавая мне эти результаты. Но почему?
|