Регистры ADC STM32F4
Регистры ADC1, ADC2, ADC3 и общих регистров STM32F4: разрядность, последовательности каналов регулярной и инжектированной групп, время выборки, внешний запуск с выбором фронта, DMA, сторож, двойной и тройной режимы.
У STM32F4 три АЦП с разрядностью 12, 10, 8 или 6 бит (поле RES): 12-битное преобразование занимает 15 тактов ADCCLK при минимальной выборке 3 такта. Частота АЦП общая — PCLK2, делённая на 2, 4, 6 или 8 полем ADCPRE регистра ADC_CCR; её предел указан в даташите (RM0090, глава 13).
Регулярная группа — до 16 преобразований SQ1…SQ16, их число L + 1; инжектированная — до 4. Внешний запуск включают выбором фронта в EXTEN, событие — EXTSEL; программный — битом SWSTART. Бит EOCS выбирает, когда ставить флаг EOC — после всей последовательности или после каждого преобразования; переполнение OVR ловится при DMA или EOCS = 1.
Общие регистры ADC_CSR, ADC_CCR и ADC_CDR лежат по адресу ADC1 + 0x300: в ADC_CCR выбирают делитель, двойной или тройной режим, режим DMA и включают датчик температуры с VREFINT (TSVREFE) и канал VBAT (VBATE). У STM32F405/407 датчик температуры подключён к ADC1_IN16, у STM32F42x/43x — к ADC1_IN18 вместе с VBAT.
| Экземпляр | Базовый адрес | Есть у |
|---|---|---|
| ADC1 | 0x4001 2000 | всех |
| ADC2 | 0x4001 2100 | всех |
| ADC3 | 0x4001 2200 | всех |
| ADC123_COMMON | 0x4001 2300 | всех |
Регистры блока
| Регистр | Смещение | Назначение | После сброса |
|---|---|---|---|
| ADC_SR | 0x00 | Флаги состояния | 0x0000 0000 |
| ADC_CR1 | 0x04 | Управление 1: сканирование, сторож, режимы | 0x0000 0000 |
| ADC_CR2 | 0x08 | Управление 2: включение, запуск, выравнивание, DMA | 0x0000 0000 |
| ADC_SMPR1 | 0x0C | Время выборки каналов от 10-го | 0x0000 0000 |
| ADC_SMPR2 | 0x10 | Время выборки каналов 0–9 | 0x0000 0000 |
| ADC_JOFR1 | 0x14 | Смещение инжектированного канала 1 | 0x0000 0000 |
| ADC_JOFR2 | 0x18 | Смещение инжектированного канала 2 | 0x0000 0000 |
| ADC_JOFR3 | 0x1C | Смещение инжектированного канала 3 | 0x0000 0000 |
| ADC_JOFR4 | 0x20 | Смещение инжектированного канала 4 | 0x0000 0000 |
| ADC_HTR | 0x24 | Верхний порог аналогового сторожа | 0x0000 0FFF |
| ADC_LTR | 0x28 | Нижний порог аналогового сторожа | 0x0000 0000 |
| ADC_SQR1 | 0x2C | Регулярная последовательность: длина и места 13–16 | 0x0000 0000 |
| ADC_SQR2 | 0x30 | Регулярная последовательность: места 7–12 | 0x0000 0000 |
| ADC_SQR3 | 0x34 | Регулярная последовательность: места 1–6 | 0x0000 0000 |
| ADC_JSQR | 0x38 | Инжектированная последовательность | 0x0000 0000 |
| ADC_JDR1 | 0x3C | Результат инжектированного канала 1 | 0x0000 0000 |
| ADC_JDR2 | 0x40 | Результат инжектированного канала 2 | 0x0000 0000 |
| ADC_JDR3 | 0x44 | Результат инжектированного канала 3 | 0x0000 0000 |
| ADC_JDR4 | 0x48 | Результат инжектированного канала 4 | 0x0000 0000 |
| ADC_DR | 0x4C | Результат регулярного преобразования | 0x0000 0000 |
| ADC_CSR | 0x00 | Общие флаги трёх АЦП | 0x0000 0000 |
| ADC_CCR | 0x04 | Общие настройки: делитель, режимы, датчики | 0x0000 0000 |
| ADC_CDR | 0x08 | Данные двойного и тройного режимов | 0x0000 0000 |
Конструктор значения
Выберите регистр и значения полей — конструктор покажет 32-битное значение и строку на C с макросами CMSIS. Поля, которые вы не меняете, берутся из значения после сброса.
Значение: 0x00000000
0000 0000 0000 0000 0000 0000 0000 0000
ADC1->SR = 0x00000000;ADC_SR — флаги состояния
Смещение 0x00, 32 бит, после сброса 0x0000 0000. В коде: ADC1->SR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | OVR | STRT | JSTRT | JEOC | EOC | AWD | |||||||||
- OVR (бит 5) — Переполнение: результат не прочитан вовремя.
- STRT (бит 4) — Началось преобразование регулярной группы.
- JSTRT (бит 3) — Началось преобразование инжектированной группы.
- JEOC (бит 2) — Преобразование инжектированной группы завершено.
- EOC (бит 1) — Преобразование регулярной группы завершено.
- AWD (бит 0) — Сработал аналоговый сторож: напряжение вне порогов.
ADC_CR1 — управление 1: сканирование, сторож, режимы
Смещение 0x04, 32 бит, после сброса 0x0000 0000. В коде: ADC1->CR1.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | OVRIE | RES | AWDEN | JAWDEN | — | ||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| DISCNUM | JDISCEN | DISCEN | JAUTO | AWDSGL | SCAN | JEOCIE | AWDIE | EOCIE | AWDCH | ||||||
- OVRIE (бит 26) — Прерывание по переполнению.
- RES (биты 25:24) — Разрядность преобразования.
RES Значение 00 12 бит (15 тактов ADCCLK) 01 10 бит (13 тактов) 10 8 бит (11 тактов) 11 6 бит (9 тактов) - AWDEN (бит 23) — Аналоговый сторож на регулярных каналах.
- JAWDEN (бит 22) — Аналоговый сторож на инжектированных каналах.
- DISCNUM (биты 15:13) — Число каналов за один запуск в прерывистом режиме: DISCNUM + 1.
DISCNUM Значение 000 1 канал 001 2 канала 010 3 канала 011 4 канала 100 5 каналов 101 6 каналов 110 7 каналов 111 8 каналов - JDISCEN (бит 12) — Прерывистый режим инжектированной группы.
- DISCEN (бит 11) — Прерывистый режим регулярной группы.
- JAUTO (бит 10) — Автоматический запуск инжектированной группы после регулярной.
- AWDSGL (бит 9) — Сторож следит за одним каналом AWDCH или за всеми.
- SCAN (бит 8) — Сканирование: каналы группы преобразуются по очереди.
- JEOCIE (бит 7) — Прерывание по окончании инжектированной группы.
- AWDIE (бит 6) — Прерывание аналогового сторожа.
- EOCIE (бит 5) — Прерывание по окончании регулярной группы.
- AWDCH (биты 4:0) — Канал аналогового сторожа при AWDSGL = 1.
ADC_CR2 — управление 2: включение, запуск, выравнивание, DMA
Смещение 0x08, 32 бит, после сброса 0x0000 0000. В коде: ADC1->CR2.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | SWSTART | EXTEN | EXTSEL | — | JSWSTART | JEXTEN | JEXTSEL | ||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | ALIGN | EOCS | DDS | DMA | — | CONT | ADON | ||||||||
- SWSTART (бит 30) — Программный запуск регулярной группы.
- EXTEN (биты 29:28) — Внешний запуск регулярной группы и его фронт.
EXTEN Значение 00 Внешний запуск выключен 01 Нарастающий фронт 10 Спадающий фронт 11 Оба фронта - EXTSEL (биты 27:24) — Событие запуска регулярной группы.
EXTSEL Значение 0000 TIM1 CC1 0001 TIM1 CC2 0010 TIM1 CC3 0011 TIM2 CC2 0100 TIM2 CC3 0101 TIM2 CC4 0110 TIM2 TRGO 0111 TIM3 CC1 1000 TIM3 TRGO 1001 TIM4 CC4 1010 TIM5 CC1 1011 TIM5 CC2 1100 TIM5 CC3 1101 TIM8 CC1 1110 TIM8 TRGO 1111 EXTI11 - JSWSTART (бит 22) — Программный запуск инжектированной группы.
- JEXTEN (биты 21:20) — Внешний запуск инжектированной группы и его фронт.
JEXTEN Значение 00 Внешний запуск выключен 01 Нарастающий фронт 10 Спадающий фронт 11 Оба фронта - JEXTSEL (биты 19:16) — Событие запуска инжектированной группы.
JEXTSEL Значение 0000 TIM1 CC4 0001 TIM1 TRGO 0010 TIM2 CC1 0011 TIM2 TRGO 0100 TIM3 CC2 0101 TIM3 CC4 0110 TIM4 CC1 0111 TIM4 CC2 1000 TIM4 CC3 1001 TIM4 TRGO 1010 TIM5 CC4 1011 TIM5 TRGO 1100 TIM8 CC2 1101 TIM8 CC3 1110 TIM8 CC4 1111 EXTI15 - ALIGN (бит 11) — Выравнивание результата в 16-битном регистре.
ALIGN Значение 0 По правому краю 1 По левому краю - EOCS (бит 10) — Когда ставится флаг EOC.
EOCS Значение 0 После всей последовательности 1 После каждого преобразования - DDS (бит 9) — Запросы DMA после последней передачи: прекращаются или продолжаются.
- DMA (бит 8) — Запрос DMA после каждого регулярного преобразования.
- CONT (бит 1) — Непрерывные преобразования.
- ADON (бит 0) — Включение АЦП.
ADC_SMPR1 — время выборки каналов от 10-го
Смещение 0x0C, 32 бит, после сброса 0x0000 0000. В коде: ADC1->SMPR1.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | SMP18 | SMP17 | SMP16 | SMP15 | |||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| SMP15 | SMP14 | SMP13 | SMP12 | SMP11 | SMP10 | ||||||||||
- SMP10–SMP18 (по 3 бита на каждый y, положение — на карте битов) — Время выборки канала y.
SMPy Значение 000 3 тактов 001 15 тактов 010 28 тактов 011 56 тактов 100 84 тактов 101 112 тактов 110 144 тактов 111 480 тактов
ADC_SMPR2 — время выборки каналов 0–9
Смещение 0x10, 32 бит, после сброса 0x0000 0000. В коде: ADC1->SMPR2.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | SMP9 | SMP8 | SMP7 | SMP6 | SMP5 | ||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| SMP5 | SMP4 | SMP3 | SMP2 | SMP1 | SMP0 | ||||||||||
- SMP0–SMP9 (по 3 бита на каждый y, положение — на карте битов) — Время выборки канала y.
SMPy Значение 000 3 тактов 001 15 тактов 010 28 тактов 011 56 тактов 100 84 тактов 101 112 тактов 110 144 тактов 111 480 тактов
ADC_JOFR1 — смещение инжектированного канала 1
Смещение 0x14, 32 бит, после сброса 0x0000 0000. В коде: ADC1->JOFR1.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | JOFFSET1 | ||||||||||||||
- JOFFSET1 (биты 11:0) — Смещение, вычитаемое из результата инжектированного канала 1.
ADC_JOFR2 — смещение инжектированного канала 2
Смещение 0x18, 32 бит, после сброса 0x0000 0000. В коде: ADC1->JOFR2.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | JOFFSET2 | ||||||||||||||
- JOFFSET2 (биты 11:0) — Смещение, вычитаемое из результата инжектированного канала 2.
ADC_JOFR3 — смещение инжектированного канала 3
Смещение 0x1C, 32 бит, после сброса 0x0000 0000. В коде: ADC1->JOFR3.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | JOFFSET3 | ||||||||||||||
- JOFFSET3 (биты 11:0) — Смещение, вычитаемое из результата инжектированного канала 3.
ADC_JOFR4 — смещение инжектированного канала 4
Смещение 0x20, 32 бит, после сброса 0x0000 0000. В коде: ADC1->JOFR4.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | JOFFSET4 | ||||||||||||||
- JOFFSET4 (биты 11:0) — Смещение, вычитаемое из результата инжектированного канала 4.
ADC_HTR — верхний порог аналогового сторожа
Смещение 0x24, 32 бит, после сброса 0x0000 0FFF. В коде: ADC1->HTR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | HT | ||||||||||||||
- HT (биты 11:0) — Верхний порог аналогового сторожа.
ADC_LTR — нижний порог аналогового сторожа
Смещение 0x28, 32 бит, после сброса 0x0000 0000. В коде: ADC1->LTR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | LT | ||||||||||||||
- LT (биты 11:0) — Нижний порог аналогового сторожа.
ADC_SQR1 — регулярная последовательность: длина и места 13–16
Смещение 0x2C, 32 бит, после сброса 0x0000 0000. В коде: ADC1->SQR1.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | L | SQ16 | |||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| SQ16 | SQ15 | SQ14 | SQ13 | ||||||||||||
- L (биты 23:20) — Число преобразований регулярной группы: L + 1.
- SQ13–SQ16 (по 5 бита на каждый y, положение — на карте битов) — Номер канала на y-м месте регулярной последовательности.
ADC_SQR2 — регулярная последовательность: места 7–12
Смещение 0x30, 32 бит, после сброса 0x0000 0000. В коде: ADC1->SQR2.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | SQ12 | SQ11 | SQ10 | ||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| SQ10 | SQ9 | SQ8 | SQ7 | ||||||||||||
- SQ7–SQ12 (по 5 бита на каждый y, положение — на карте битов) — Номер канала на y-м месте регулярной последовательности.
ADC_SQR3 — регулярная последовательность: места 1–6
Смещение 0x34, 32 бит, после сброса 0x0000 0000. В коде: ADC1->SQR3.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | SQ6 | SQ5 | SQ4 | ||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| SQ4 | SQ3 | SQ2 | SQ1 | ||||||||||||
- SQ1–SQ6 (по 5 бита на каждый y, положение — на карте битов) — Номер канала на y-м месте регулярной последовательности.
ADC_JSQR — инжектированная последовательность
Смещение 0x38, 32 бит, после сброса 0x0000 0000. В коде: ADC1->JSQR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | JL | JSQ4 | |||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| JSQ4 | JSQ3 | JSQ2 | JSQ1 | ||||||||||||
- JL (биты 21:20) — Число преобразований инжектированной группы: JL + 1.
- JSQ4 (биты 19:15) — Номер канала в поле JSQ4; при JL < 3 последовательность начинается не с JSQ1, а заканчивается на JSQ4.
- JSQ3 (биты 14:10) — Номер канала в поле JSQ3; при JL < 3 последовательность начинается не с JSQ1, а заканчивается на JSQ4.
- JSQ2 (биты 9:5) — Номер канала в поле JSQ2; при JL < 3 последовательность начинается не с JSQ1, а заканчивается на JSQ4.
- JSQ1 (биты 4:0) — Номер канала в поле JSQ1; при JL < 3 последовательность начинается не с JSQ1, а заканчивается на JSQ4.
ADC_JDR1 — результат инжектированного канала 1
Смещение 0x3C, 32 бит, после сброса 0x0000 0000. В коде: ADC1->JDR1.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| JDATA | |||||||||||||||
- JDATA (биты 15:0) — Результат инжектированного канала за вычетом смещения JOFFSET.
ADC_JDR2 — результат инжектированного канала 2
Смещение 0x40, 32 бит, после сброса 0x0000 0000. В коде: ADC1->JDR2.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| JDATA | |||||||||||||||
- JDATA (биты 15:0) — Результат инжектированного канала за вычетом смещения JOFFSET.
ADC_JDR3 — результат инжектированного канала 3
Смещение 0x44, 32 бит, после сброса 0x0000 0000. В коде: ADC1->JDR3.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| JDATA | |||||||||||||||
- JDATA (биты 15:0) — Результат инжектированного канала за вычетом смещения JOFFSET.
ADC_JDR4 — результат инжектированного канала 4
Смещение 0x48, 32 бит, после сброса 0x0000 0000. В коде: ADC1->JDR4.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| JDATA | |||||||||||||||
- JDATA (биты 15:0) — Результат инжектированного канала за вычетом смещения JOFFSET.
ADC_DR — результат регулярного преобразования
Смещение 0x4C, 32 бит, после сброса 0x0000 0000. В коде: ADC1->DR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| ADC2DATA | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| DATA | |||||||||||||||
- ADC2DATA (биты 31:16) — По RM0090 биты зарезервированы; данные ADC2 в двойном режиме — в ADC_CDR.
- DATA (биты 15:0) — Результат регулярного преобразования.
ADC_CSR — общие флаги трёх АЦП
Смещение 0x00, адрес 0x4001 2300, 32 бит, после сброса 0x0000 0000. В коде: ADC123_COMMON->CSR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | OVR3 | STRT3 | JSTRT3 | JEOC3 | EOC3 | AWD3 | |||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | OVR2 | STRT2 | JSTRT2 | JEOC2 | EOC2 | AWD2 | — | OVR1 | STRT1 | JSTRT1 | JEOC1 | EOC1 | AWD1 | ||
- OVR1–OVR3 (по биту на каждый y, положение — на карте битов) — Переполнение: результат не прочитан вовремя (АЦПy).
- STRT1–STRT3 (по биту на каждый y, положение — на карте битов) — Началось преобразование регулярной группы (АЦПy).
- JSTRT1–JSTRT3 (по биту на каждый y, положение — на карте битов) — Началось преобразование инжектированной группы (АЦПy).
- JEOC1–JEOC3 (по биту на каждый y, положение — на карте битов) — Преобразование инжектированной группы завершено (АЦПy).
- EOC1–EOC3 (по биту на каждый y, положение — на карте битов) — Преобразование регулярной группы завершено (АЦПy).
- AWD1–AWD3 (по биту на каждый y, положение — на карте битов) — Сработал аналоговый сторож АЦПy: напряжение вне порогов.
ADC_CCR — общие настройки: делитель, режимы, датчики
Смещение 0x04, адрес 0x4001 2304, 32 бит, после сброса 0x0000 0000. В коде: ADC123_COMMON->CCR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | TSVREFE | VBATE | — | ADCPRE | |||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| DMA | DDS | — | DELAY | — | MULTI | ||||||||||
- TSVREFE (бит 23) — Включение датчика температуры и канала VREFINT.
- VBATE (бит 22) — Включение канала VBAT.
- ADCPRE (биты 17:16) — Делитель частоты всех АЦП от PCLK2.
ADCPRE Значение 00 PCLK2 / 2 01 PCLK2 / 4 10 PCLK2 / 6 11 PCLK2 / 8 - DMA (биты 15:14) — Режим DMA в двойном и тройном режимах.
DMA Значение 00 Выключен 01 Режим 1: полуслова по одному 10 Режим 2: полуслова парами 11 Режим 3: байты парами - DDS (бит 13) — Запросы DMA многоканального режима после последней передачи: прекращаются или продолжаются.
- DELAY (биты 11:8) — Пауза между выборками в чередующемся режиме: 5–20 тактов ADCCLK.
DELAY Значение 0000 5 тактов ADCCLK 0001 6 тактов ADCCLK 0010 7 тактов ADCCLK 0011 8 тактов ADCCLK 0100 9 тактов ADCCLK 0101 10 тактов ADCCLK 0110 11 тактов ADCCLK 0111 12 тактов ADCCLK 1000 13 тактов ADCCLK 1001 14 тактов ADCCLK 1010 15 тактов ADCCLK 1011 16 тактов ADCCLK 1100 17 тактов ADCCLK 1101 18 тактов ADCCLK 1110 19 тактов ADCCLK 1111 20 тактов ADCCLK - MULTI (биты 4:0) — Совместная работа АЦП: независимо, двойной или тройной режим.
MULTI Значение 00000 Все АЦП независимы 00001 Двойной: одновременные регулярные + одновременные инжектированные 00010 Двойной: одновременные регулярные + поочерёдный запуск 00101 Двойной: только одновременные инжектированные 00110 Двойной: только одновременные регулярные 00111 Двойной: только чередование 01001 Двойной: только поочерёдный запуск 10001 Тройной: одновременные регулярные + одновременные инжектированные 10010 Тройной: одновременные регулярные + поочерёдный запуск 10101 Тройной: только одновременные инжектированные 10110 Тройной: только одновременные регулярные 10111 Тройной: только чередование 11001 Тройной: только поочерёдный запуск
ADC_CDR — данные двойного и тройного режимов
Смещение 0x08, адрес 0x4001 2308, 32 бит, после сброса 0x0000 0000. В коде: ADC123_COMMON->CDR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| DATA2 | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| DATA1 | |||||||||||||||
- DATA2 (биты 31:16) — Второе значение пары: в двойном режиме — данные ADC2.
- DATA1 (биты 15:0) — Первое значение пары: в двойном режиме — данные ADC1.
Частые вопросы
Как запустить преобразование на STM32F407 программно?
Включите тактирование ADC1 (RCC_APB2ENR), задайте делитель ADCPRE в ADC->CCR, включите АЦП (ADON = 1), запишите канал в SQ1 регистра SQR3 и время выборки в SMPR. Запуск — битом SWSTART в ADC1->CR2, готовность — флаг EOC в SR, результат — в DR.
Как запускать АЦП от таймера?
Выберите событие в EXTSEL — например, 0110 для TRGO таймера TIM2 — и фронт в EXTEN (01 — нарастающий). В таймере настройте выход TRGO полем MMS регистра CR2, например событие обновления (010). Каждое переполнение таймера запустит преобразование.
Где взять результат в двойном режиме?
В регистре ADC_CDR: младшие 16 бит — данные ADC1, старшие — ADC2. Режим DMA для пар данных выбирают полем DMA регистра ADC_CCR; биты 31:16 регистра ADC_DR в RM0090 зарезервированы.
Источники
- STMicroelectronics. RM0090: Reference manual (Rev 22) — раздел 13.13: описание регистров, назначение полей и значения после сброса
- STMicroelectronics. cmsis-device-f4 v2.6.11: заголовки CMSIS stm32f405xx.h, stm32f407xx.h, stm32f415xx.h, stm32f417xx.h, stm32f427xx.h, stm32f429xx.h, stm32f437xx.h, stm32f439xx.h — структуры периферии, смещения, адреса экземпляров и макросы полей; лицензия Apache-2.0
Нашли ошибку в регистрах?
Другие регистры STM32F4
- Все регистры STM32F4Блоки периферии и заголовки CMSIS
- RCC — сброс и тактированиеRCC_CR, RCC_PLLCFGR, RCC_CFGR, RCC_CIR, RCC_AHB1RSTR, RCC_AHB2RSTR
- GPIO — порты ввода-выводаGPIOx_MODER, GPIOx_OTYPER, GPIOx_OSPEEDR, GPIOx_PUPDR, GPIOx_IDR, GPIOx_ODR
- SYSCFG — системная конфигурацияSYSCFG_MEMRMP, SYSCFG_PMC, SYSCFG_EXTICR1, SYSCFG_EXTICR2, SYSCFG_EXTICR3, SYSCFG_EXTICR4
- EXTI — контроллер внешних прерываний и событийEXTI_IMR, EXTI_EMR, EXTI_RTSR, EXTI_FTSR, EXTI_SWIER, EXTI_PR
- USART — последовательные порты USART и UARTUSART_SR, USART_DR, USART_BRR, USART_CR1, USART_CR2, USART_CR3
- SPI — интерфейсы SPI и I2SSPI_CR1, SPI_CR2, SPI_SR, SPI_DR, SPI_CRCPR, SPI_RXCRCR
- I2C — интерфейс I2CI2C_CR1, I2C_CR2, I2C_OAR1, I2C_OAR2, I2C_DR, I2C_SR1
- TIM — таймерыTIMx_CR1, TIMx_CR2, TIMx_SMCR, TIMx_DIER, TIMx_SR, TIMx_EGR
- DMA — контроллеры прямого доступа к памятиDMA_LISR, DMA_HISR, DMA_LIFCR, DMA_HIFCR, DMA_SxCR, DMA_SxNDT
- IWDG — независимый сторожевой таймерIWDG_KR, IWDG_PR, IWDG_RLR, IWDG_SR
- WWDG — оконный сторожевой таймерWWDG_CR, WWDG_CFR, WWDG_SR
- CRC — блок вычисления CRCCRC_DR, CRC_IDR, CRC_CR
- DBGMCU — регистры отладкиDBGMCU_IDCODE, DBGMCU_CR, DBGMCU_APB1_FZ, DBGMCU_APB2_FZ