АЦП микроконтроллера STM32F100RBT6 фирмы STMicroelectronics
АЦП
STM32F100_reference_manual
Каналы АЦП
Калибровка АЦП
Код калибровки
Настройка АЦП
Регистры АЦП
Запуск АЦП
DMA (ПДП)
DMA (ПДП)
368.50K
Category: programmingprogramming

АЦП микроконтроллера STM32F100RBT6 фирмы STMicroelectronics

1. АЦП микроконтроллера STM32F100RBT6 фирмы STMicroelectronics

1

2. АЦП

oразрядность – 12 бит
АЦП
oКоличество каналов – 16 шт
oВыравнивание данных – направо, налево
oКоэф. деления тактовой частоты – 2, 4, 6, 8
oВыводы преобразования – несимметричные (могут
быть – дифференциальные в других моделях).
oВыбор очередности преобразования
oЗапуск программный или по триггеру
oОдиночное преобразование и преобразование в
непрерывном режиме
2

3. STM32F100_reference_manual

Блок схема модуля ADC – стр. 159
3

4. Каналы АЦП

регулярные каналы (regular) – регистр ADC_DR
инжектированные (injected) - регистры ADC_JDRx
(x= 1..4)
4

5. Калибровка АЦП

•имеется встроенный механизм автоматической калибровки;
•Уменьшает погрешность оцифровки, которая вызывается
неоднородностью внутренних конденсаторов выборки и
хранения сигналов;
•Вычисляется цифровое значение АЦП для каждого
конденсатора в виде корректирующего кода, который
используется для компенсации ошибки преобразования
сигналов;
•Перед началом калибровки – АЦП выключен;
•Запуск калибровки – установка бита CAL в регистре
ADC_CR2;
•Как только калибровка закончена, бит CAL сбрасывается
аппаратно;
•Рекомендуется калибровать АЦП один раз при подаче
питания.
5

6. Код калибровки

// Выполним процедуру калибровки АЦП1 и АЦП2
// Выберем режим калибровки для АЦП1 и после запустим АПЦ1
LL_ADC_StartCalibration(ADC1); //
// Ожидаем завершения калибровки АЦП1 и АЦП2
while (LL_ADC_IsCalibrationOnGoing(ADC1) != RESET);
6

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

oData Alignment – выравнивание данных по левому или
правому краю
oScan Conversion Mode – разрешение опроса
нескольких каналов на одном АЦП
oContinuous Conversion Mode – включение/выключение
режима непрерывного/одиночного преобразования.
oDiscontinuous Conversion Mode – разрешение опроса
группы каналов
oNumber Of Discontinuous Conversions – количество
7
каналов для опроса в одной группе.

8. Регистры АЦП

ADC_SR – регистр флагов: EOC (EOS) – завершение
преобразования в регулярном канале.
ADC_СR1 – регистр управления1: EOCIE (EOSIE) –
разрешение прерывания по завершению
преобразования в регулярном канале.
ADC_СR2 – регистр управления2: ADON –
включение/выключение АЦП; SWSTART – запуск
преобразования в регулярном канале.
8

9. Запуск АЦП

// АЦП настройка
// Разрешение прерывания в регулярных каналах
LL_ADC_EnableIT_EOS(ADC1);
// включение АЦП1
LL_ADC_Enable(ADC1);
// запуск АПЦ1
LL_ADC_REG_StartConversionSWStart(ADC1);
9

10.

End Of Conversion Selection — позволяет выбрать, будет ли
установлен флаг конца преобразования (EOC) после каждого
преобразования или после завершения всей
последовательности преобразования. Если опрашивать два
(или более) канала, тогда в режиме End of single conversion
прерывание будет вызываться после преобразования каждого
канала, а в режиме End of sequence conversion только после
преобразования обоих.
10

11. DMA (ПДП)

DMA1 – 7 каналов, блок схема модуля DMA1 – стр. 147
DMA2 – 5 каналов, блок схема модуля DMA2 – стр. 150
Виды передачи данных:
- из памяти в память;
- из памяти в периферию;
- из периферии в память;
11

12. DMA (ПДП)

// Укажем размер массива для результатов преобразования
LL_DMA_SetDataLength(DMA1, LL_DMA_CHANNEL_1, 0x03);
// Укажем адрес массива в ОЗУ (для результатов преобразования)
LL_DMA_SetMemoryAddress(DMA1, LL_DMA_CHANNEL_1, (uint32_t) &adc12);
// Укажем адрес периферийного устройства (УВВ) т.е. АЦП
LL_DMA_SetPeriphAddress(DMA1, LL_DMA_CHANNEL_1, (uint32_t) &ADC12_COMMON>CDR);
// Включаем канал контроллера ПДП для опроса АЦП1 и АЦП2
LL_DMA_EnableChannel(DMA1, LL_DMA_CHANNEL_1);
12
English     Русский Rules