Настройка АЦП

Сконфигурируем наш блок АЦП в соответствии с поставленной задачей:

. Подаем тактирование на АЦП. Для этого устанавливанием бит ADC1EN регистра APB2ENR в «1».

>APB2ENR |= RCC_APB2ENR_ADC1EN;

. Так как будем использовать DMA для записи результатов преобразования в память, разрешаем DMA для ADC1. Для этого устанавливаем бит DMA регистра CR2 в «1».

->CR2 |= ADC_CR2_DMA;

. Включаем прерывание от АЦП. Для этого устанавливаем бит EOCIE регистра CR1 в «1».

ADC1->CR1 |= ADC_CR1_EOCIE;

. Запускаем калибровку АЦП и ждем ее окончания. Для этого устанавливаем бит CAL регистра CR2 в «1» и ждем его аппаратного сброса.

->CR2 |= ADC_CR2_CAL;(!(ADC1->CR2 & ADC_CR2_CAL)){};

. Задаем источник запуска преобразования. В нашем случае это будет бит SWSTART. Для этого устанавливаем бит EXTSEL регистра CR2 в «1»

->CR2 |= ADC_CR2_EXTSEL;

. Разрешаем запуск преобразования от внешнего источника. Для этого устанавливаем бит EXTTRIG регистра CR2 в «1».

->CR2 |= ADC_CR2_EXTTRIG;

. Задаем время преобразования для каждого канала. Установим его равным 239,5 циклов. Для этого устанавливаем биты SMPх (где х - номер канала) регистра SMPR1 в «1».

->SMPR1 |= ADC_SMPR1_SMP0;->SMPR1 |= ADC_SMPR1_SMP1;->SMPR1 |= ADC_SMPR1_SMP2;->SMPR1 |= ADC_SMPR1_SMP3;->SMPR1 |= ADC_SMPR1_SMP4;->SMPR1 |= ADC_SMPR1_SMP5;->SMPR1 |= ADC_SMPR1_SMP6;->SMPR1 |= ADC_SMPR1_SMP7;

. Составляем таблицу каналов, для которых нужно производить преобразования. И задаем количество этих каналов. Для этого в биты SQх[4:0] регистра SQR3 записываем номера каналов, а в бит L регистра SQR1 количество этих каналов. Нулевой канал АЦП не задаем, так как по умолчанию в биты SQ1[4:0] записаны нули.

->SQR3 |= ADC_SQR3_SQ2_0;->SQR3 |= ADC_SQR3_SQ3_1;->SQR3 |= ADC_SQR3_SQ4_0;->SQR3 |= ADC_SQR3_SQ4_1;->SQR3 |= ADC_SQR3_SQ5_2;->SQR3 |= ADC_SQR3_SQ6_0;->SQR3 |= ADC_SQR3_SQ6_2;->SQR3 |= ADC_SQR3_SQ7_1;->SQR3 |= ADC_SQR3_SQ7_2;->SQR3 |= ADC_SQR3_SQ8_0;->SQR3 |= ADC_SQR3_SQ8_1;->SQR3 |= ADC_SQR3_SQ8_2;->SQR1 |= ADC_SQR1_L_3;

. Включаем АЦП. Для этого в бит ADON регистра CR2 записываем «1».

->CR2 |= ADC_CR2_ADON;

Еще статьи по теме

Разработка универсальной микропроцессорной системы сбора сигналов с заданными параметрами
В металлургии одной из проблем на пути повышения качества производимого продукта, является проблема обнаружения шлака в струе металла, переливаемого из одной емкости в другую (из конвертора или печь-ковша в сталь-ковш, из ста ...

Разработка системы управления импульсным стабилизатором напряжения на основе двухтактного преобразователя
Преобразователь со средней точкой первичной обмотки трансформатора показан на рис. 1.1. Рисунок 1.1 - Преобразователь со средней точкой первичной обмотки В рассматриваемой схеме преобразователя все элеме ...

Главное меню

© 2019 / www.techsolid.ru