5.1.3.3. Базовая конфигурация АЦП
Регистры АЦП разделены на шесть групп. Конфигурация работы АЦП осуществляется через регистры управления и статуса
АЦП имеет блоки регистров для настройки: индивидуального времени преобразования, регулярных и инжектированных последовательностей преобразований, значений смещения для инжектированной группы и пороговых значений оконного компаратора. Вся настройка АЦП выполняется через регистры управления и статуса.
Режим работы АЦП задается через два регистра управления. Ниже показан пример конфигурации преобразования одного канала с генерацией прерывания
ADC1->CR2 = 0x005E7003; //Включение АЦП и разрешение непрерывного преобразования
ADC1->SQR1 = 0x0000; //установка длины последовательности равной 1
ADC1->SQR2 = 0x0000; //выбор преобразования канала 0
ADC1->SQR3 = 0x0001;
ADC1->CR2 |= 0x005E7003; //перезапись бита разрешения работы
ADC1->CR1 = 0x000100; //запуск преобразования регулярных каналов,
//разрешение прерывания АЦП
NVIC->Enable[0] = 0x00040000; //разрешение прерывания АЦП
NVIC->Enable[1] = 0x00000000;
|
В процедуре обработки прерывания результат преобразования считывается из регистра результата и выводится на линии порта ввода-вывода.
void ADC_IRQHandler (void)
{
GPIOB->ODR = ADC1->DR<<5; // копирование результата АЦП в ПВВ
}
|
Вместо процедуры обработки прерывания, для передачи результата АЦП в ПВВ можно использовать канал ПДП.
DMA_Channel1->CCR = 0x00003A28; //кольцевой режим,
//инкрементирование УВВ и памяти отключено
//Задание адреса назначения - регистр данных ПВВ
DMA_Channel1->CPAR = (unsigned int) 0x4001244C;
//Загрузка адреса источника в регистр памяти
DMA_Channel1->CMAR = (unsigned int) 0x40010C0C;
DMA_Channel1->CNDTR = 0x1; //количество слов для передачи
DMA_Channel1->CCR |= 0x00000001; //Разрешение ПДП передачи
|
У АЦП должна быть включена поддержка ПДП.
|