Я начал разбираться с АЦП на STM32F4Discovery.
Вычитал, что у АЦП существуют два метода опроса: регулярные каналы и инжектированные каналы.
Разницу между ними я более менее понял. Первая группа запись данных в один регистр, вторая группа результат можно записать в один из 4-х регистров.
Я стараюсь писать код использую CMSIS. Но я столкнулся с проблемой инициализации. Я начал инициализировать но столкнулся с проблемой:
1. Включаю тактирование АЦП и портов;
2. Настройка модуля АЦП;
3. Включение модуля АЦП;
4. Настройка входа;
5. Калибровка;
(с)http://catethysis.ru/stm32-adc/
Для регулярной группы так должна выглядеть инициализация?
Код: Выделить всё
ADC1->SMPR2 |= (ADC_SMPR2_SMP1_2 | ADC_SMPR2_SMP1_1 | ADC_SMPR2_SMP1_0); //Задаем время выборки
ADC1->CR2 |= ADC_CR2_EXTSEL; //Преобразование регулярной группы
ADC1->CR2 |= ADC_CR2_EXTTRIG; //Разрешаем внешний запуск регулярной группы
ADC1->CR2 |= ADC_CR2_CONT; //Преобразования запускаются одно за другим
ADC1->SQR1 |= (1<<15); //Задаем номер канала - ADC1
ADC1->CR2 |= ADC_CR2_ADON;//Теперь включаем АЦП
ADC1->CR2 |= ADC_CR2_SWSTART; //Запуск преобразований
while (!(ADC1->SR & ADC_SR_EOC)); //ждем пока первое преобразование завершится