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

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

. Подаем тактирование на АЦП. Для этого устанавливанием бит 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;

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

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

Преобразовательные устройства
«Силовая преобразовательная техника» - это дисциплина содержанием которой является разработка методов расчета электрических схем преобразователей, необходимых для проектирования преобразовательных устройств. Преобразователь ...

Главное меню

© 2019 / www.techsolid.ru