АЦП последовательного приближения



 

 

 

 

В    МК STM32 интегрирован высококачественный 12-битный АЦП на частоту преобразования 1 МГц со встроенными ИОН и датчиком температуры

Частота преобразования задается индивидуально для каждого из каналов АЦП

 

Каждый АЦП поддерживает два базовых режима преобразования: регулярный и инжектированный. В режиме регулярных преобразований задается канал или группа каналов, которые в дальнейшем преобразовываются поочередно. Число каналов в группе регулярных преобразований конфигурируется пользователем (до 16 каналов). Кроме того, можно задавать порядок преобразования каналов, а один и тот же канал канал в цикле преобразования может быть оцифрован несколько раз. Группа регулярных преобразований запускается программно или аппаратно различными сигналами таймеров или по 1-ой линии внешних прерываний (EXTI 1). Сразу после запуска, преобразования в       регулярной группе выполняются непрерывно. Альтернативно, группа может работать в       режиме с остановкой преобразования, когда по завершении оцифровки выбранных каналов преобразование приостанавливается вплоть до следующего запуска группы регулярных преобразований.

 

 

 

Последовательность преобразования в группе регулярных преобразований может быть непрерывной (циклической) или периодической, когда после каждого запуска преобразований выполняется преобразование выбранных каналов.

 

Каждый раз, когда завершается оцифровка в группе регулярных преобразований, результат преобразования помещается в единственный регистр результата преобразования и генерируется прерывание. 12-битный результат хранится в 16-битном регистре с левым или правым выравниванием бит.

 

 

12-битный результат хранится в 16-битном регистре результата с левым или правым выравниванием бит

 

У    АЦП1 имеется специальный канал ПДП, который может использоваться для передачи каждого результата преобразования в организованный в памяти буфер данных. Использование данного метода позволяет сократить частоту генерации прерываний до одного по завершении каждого цикла оцифровки группы регулярных преобразований. Более продвинутым методом является использование двойного буфера, который позволяет выполнять обработку накопленных данных из одной части буфера и, при этом, продолжать записывать результаты преобразований во вторую часть буфера,

А по завершении цикла преобразования наоборот - обрабатывать данные из второй части, а помещать новые данные в первую. Для реализации данного метода необходимо использовать прерывания по половинному и полному завершению ПДП, а также режим кольцевого буфера в блоке ПДП.

 

 

 

АЦП1 имеет поддержку ПДП для автоматической передачи в созданный пользователем в статическом ОЗУ буфер данных

 

Другая группа преобразований называется инжектированной. В последовательность преобразований инжектированной группы может входить до четырех каналов, а запуск преобразований выполняется программно или аппаратно. Сразу после запуска этой группы, приостанавливается оцифровка в группе регулярных преобразований, выполняется собственная последовательность преобразований, а затем возобновляется очередность преобразований в регулярной группе. Также, как и в случае регулярной группы, может быть заданы любая последовательность каналов и многократное преобразование одного и того же канала в одной последовательности преобразований. Однако, в отличие от регулярной группы, у каждого инжектированного преобразования имеется свой собственный регистр результата и регистр смещения.

 

 

Регистры результата преобразования инжектированной группы дополнены битом знака и могут быть с правым или левым выравниванием

 

В регистр смещения можно запрограммировать 16-битное значение, которое автоматически вычитается из результата преобразования АЦП. Если результирующее значение - отрицательное, то регистр результата инжектированной группы дополняется знаком. Также, как и в регулярной группе, результат может храниться с правым или левым выравниванием.

 

Функция оконного компаратора

 

Помимо двух режимов преобразования, АЦП поддерживают функцию оконного компаратора, которая заключается в генерации прерывания при выходе результата преобразования за пределы заданных пользователем нижней и верхней границ (условия снижения и превышения напряжения, соответственно). Оконный компаратор может использоваться для мониторинга выбранного регулярного или инжектированного канала, или же всех регулярных или инжектированных каналов. Помимо мониторинга напряжения, функция оконного компаратора может использоваться в качестве детектора пересечения нуля.

 

 

Функция оконного компаратора предназначена для мониторинга одного или всех каналов на предмет выхода за пределы заданной пользователем верхней и нижней границ

 

Оконный компаратор

У каждого модуля АЦП имеется оконный компаратор, который генерирует прерывание при выходе контролируемого напряжения за заданные верхнюю и нижнюю границы.

 

Базовая конфигурация АЦП

 

 

Регистры АЦП разделены на шесть групп. Конфигурация работы АЦП осуществляется через регистры управления и статуса

 

АЦП имеет блоки регистров для настройки: индивидуального времени преобразования, регулярных и инжектированных последовательностей преобразований, значений смещения для инжектированной группы и пороговых значений оконного компаратора. Вся настройка АЦП выполняется через регистры управления и статуса.

 

 

Режим работы АЦП задается через два регистра управления. Ниже показан пример конфигурации преобразования одного канала с генерацией прерывания.

ADC1->CR2 = 0x005E7003; //Включение АЦП и разрешение  
непрерывного

преобразования

//установка длины последовательности

 
ADC1->SQR1 = 0x0000;  
равной 1

=

0x0000;

//выбор преобразования канала 0

 
ADC1->SQR2  
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;

 

У АЦП должна быть включена поддержка ПДП.

 

ADC1->CR2 |= 0x0100;


Дата добавления: 2020-01-07; просмотров: 288; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!