Регистры АЦП STM32L1
Регистры 12-битного АЦП STM32L1: состояние и флаги, разрядность, прерывистый режим и сторож, запуск регулярной и инжектированной групп от таймеров, время выборки каждого канала, последовательности до 28 и 4 преобразований, результаты и общий делитель такта.
АЦП STM32L1 похож на АЦП STM32F4 (регулярная и инжектированная группы, SQR и JSQR, выравнивание, сторож), но тактируется от HSI 16 МГц через делитель ADCPRE в ADC_CCR, а не от шины. Каналов до 42; у категорий 3–6 они разбиты на банки A и B (бит ADC_CFG в CR2). Время выборки — 4…384 такта, по три бита на канал в SMPR0–SMPR3 (RM0038, раздел 12.15).
Своё у STM32L1 — экономия энергии: биты PDI и PDD выключают АЦП в паузах, а задержка DELS ждёт чтения результата перед следующим преобразованием, если шина медленнее АЦП. Перед запуском дождитесь флага ADONS после включения ADON.
| Экземпляр | Базовый адрес | Есть у |
|---|---|---|
| ADC1 | 0x4001 2400 | всех |
| ADC1_COMMON | 0x4001 2700 | всех |
Регистры блока
| Регистр | Смещение | Назначение | После сброса |
|---|---|---|---|
| ADC_SR | 0x00 | Флаги состояния | 0x0000 0000 |
| ADC_CR1 | 0x04 | Управление 1: сканирование, сторож, режимы | 0x0000 0000 |
| ADC_CR2 | 0x08 | Управление 2: включение, запуск, выравнивание, DMA | 0x0000 0000 |
| ADC_SMPR1 | 0x0C | Время выборки каналов 20–29 | 0x0000 0000 |
| ADC_SMPR2 | 0x10 | Время выборки каналов 10–19 | 0x0000 0000 |
| ADC_SMPR3 | 0x14 | Время выборки каналов 0–9 | 0x0000 0000 |
| ADC_JOFR1 | 0x18 | Смещение инжектированного канала 1 | 0x0000 0000 |
| ADC_JOFR2 | 0x1C | Смещение инжектированного канала 2 | 0x0000 0000 |
| ADC_JOFR3 | 0x20 | Смещение инжектированного канала 3 | 0x0000 0000 |
| ADC_JOFR4 | 0x24 | Смещение инжектированного канала 4 | 0x0000 0000 |
| ADC_HTR | 0x28 | Верхний порог аналогового сторожа | 0x0000 0FFF |
| ADC_LTR | 0x2C | Нижний порог аналогового сторожа | 0x0000 0000 |
| ADC_SQR1 | 0x30 | Длина регулярной последовательности и преобразования 25–28 | 0x0000 0000 |
| ADC_SQR2 | 0x34 | Регулярная последовательность, преобразования 19–24 | 0x0000 0000 |
| ADC_SQR3 | 0x38 | Регулярная последовательность, преобразования 13–18 | 0x0000 0000 |
| ADC_SQR4 | 0x3C | Регулярная последовательность, преобразования 7–12 | 0x0000 0000 |
| ADC_SQR5 | 0x40 | Регулярная последовательность, преобразования 1–6 | 0x0000 0000 |
| ADC_JSQR | 0x44 | Инжектированная последовательность | 0x0000 0000 |
| ADC_JDR1 | 0x48 | Результат инжектированного канала 1 | 0x0000 0000 |
| ADC_JDR2 | 0x4C | Результат инжектированного канала 2 | 0x0000 0000 |
| ADC_JDR3 | 0x50 | Результат инжектированного канала 3 | 0x0000 0000 |
| ADC_JDR4 | 0x54 | Результат инжектированного канала 4 | 0x0000 0000 |
| ADC_DR | 0x58 | Результат регулярного преобразования | 0x0000 0000 |
| ADC_SMPR0 | 0x5C | Время выборки каналов 30 и 31 | 0x0000 0000 |
| ADC_CSR | 0x00 | Общий регистр состояния АЦП | 0x0000 0000 |
| ADC_CCR | 0x04 | Общая настройка: делитель такта и датчик температуры | 0x0000 0000 |
Конструктор значения
Выберите регистр и значения полей — конструктор покажет 32-битное значение и строку на C с макросами CMSIS. Поля, которые вы не меняете, берутся из значения после сброса.
Значение: 0x00000000
0000 0000 0000 0000 0000 0000 0000 0000
ADC1->SR = 0x00000000;ADC_SR — флаги состояния
Смещение 0x00, адрес 0x4001 2400, 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 |
| — | JCNR | RCNR | — | ADONS | OVR | STRT | JSTRT | JEOS | EOCS | AWD | |||||
- JCNR (бит 9) — Инжектированные каналы не готовы к запуску (только чтение).
- RCNR (бит 8) — Регулярные каналы не готовы к запуску (только чтение).
- ADONS (бит 6) — АЦП включён и готов (только чтение).
- OVR (бит 5) — Переполнение: результат не прочитан вовремя.
- STRT (бит 4) — Началось преобразование регулярной группы.
- JSTRT (бит 3) — Началось преобразование инжектированной группы.
- JEOS (бит 2) — Преобразование инжектированной группы завершено.
- EOCS (бит 1) — Когда ставится флаг EOC.
EOCS Значение 0 После всей последовательности 1 После каждого преобразования - AWD (бит 0) — Сработал аналоговый сторож: напряжение вне порогов.
ADC_CR1 — управление 1: сканирование, сторож, режимы
Смещение 0x04, адрес 0x4001 2404, 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 | — | PDI | PDD | ||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| DISCNUM | JDISCEN | DISCEN | JAUTO | AWDSGL | SCAN | JEOSIE | AWDIE | EOCSIE | AWDCH | ||||||
- OVRIE (бит 26) — Прерывание по переполнению.
- RES (биты 25:24) — Разрядность преобразования.
RES Значение 00 12 бит (12 тактов ADCCLK) 01 10 бит (11 тактов) 10 8 бит (9 тактов) 11 6 бит (7 тактов) - AWDEN (бит 23) — Включение аналогового сторожа.
- JAWDEN (бит 22) — Аналоговый сторож на инжектированных каналах.
- PDI (бит 17) — Выключение АЦП в паузе между преобразованиями.
- PDD (бит 16) — Выключение АЦП на время задержки DELS.
- 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 (1) или за всеми (0).
- SCAN (бит 8) — Сканирование: каналы группы преобразуются по очереди.
- JEOSIE (бит 7) — Прерывание по окончании инжектированной группы.
- AWDIE (бит 6) — Прерывание аналогового сторожа.
- EOCSIE (бит 5) — Прерывание по концу преобразования (EOC).
- AWDCH (биты 4:0) — Канал аналогового сторожа при AWDSGL = 1.
ADC_CR2 — управление 2: включение, запуск, выравнивание, DMA
Смещение 0x08, адрес 0x4001 2408, 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 | — | DELS | — | CFG | CONT | ADON | |||||
- SWSTART (бит 30) — Программный запуск регулярной группы.
- EXTEN (биты 29:28) — Внешний запуск регулярной группы и его фронт.
EXTEN Значение 00 Внешний запуск выключен 01 Нарастающий фронт 10 Спадающий фронт 11 Оба фронта - EXTSEL (биты 27:24) — Событие запуска регулярной группы.
EXTSEL Значение 0000 TIM9 CC2 0001 TIM9 TRGO 0010 TIM2 CC3 0011 TIM2 CC2 0100 TIM3 TRGO 0101 TIM4 CC4 0110 TIM2 TRGO 0111 TIM3 CC1 1000 TIM3 CC3 1001 TIM4 TRGO 1010 TIM6 TRGO 1111 EXTI11 - JSWSTART (бит 22) — Программный запуск инжектированной группы.
- JEXTEN (биты 21:20) — Внешний запуск инжектированной группы и его фронт.
JEXTEN Значение 00 Внешний запуск выключен 01 Нарастающий фронт 10 Спадающий фронт 11 Оба фронта - JEXTSEL (биты 19:16) — Событие запуска инжектированной группы.
JEXTSEL Значение 0000 TIM9 CC1 0001 TIM9 TRGO 0010 TIM2 TRGO 0011 TIM2 CC1 0100 TIM3 CC4 0101 TIM4 TRGO 0110 TIM4 CC1 0111 TIM4 CC2 1000 TIM4 CC3 1001 TIM10 CC1 1010 TIM7 TRGO 1111 EXTI15 - ALIGN (бит 11) — Выравнивание результата в 16-битном регистре.
ALIGN Значение 0 По правому краю 1 По левому краю - EOCS (бит 10) — Когда ставится флаг EOC.
EOCS Значение 0 После всей последовательности 1 После каждого преобразования - DDS (бит 9) — Запросы DMA после последней передачи: прекращаются или продолжаются.
- DMA (бит 8) — Запрос DMA после каждого регулярного преобразования.
- DELS (биты 6:4) — Задержка после преобразования до следующего запуска.
DELS Значение 000 Без задержки 001 До чтения результата (DR или сброса EOC/JEOC) 010 7 тактов APB 011 15 тактов APB 100 31 такт APB 101 63 такта APB 110 127 тактов APB 111 255 тактов APB - CFG (бит 2) — Банк каналов: A или B (у категорий 3–6) (только у STM32L100xC, STM32L151xC/xCA/xD/xDX/xE, STM32L152xC/xCA/xD/xDX/xE, STM32L162).
CFG Значение 0 Банк A 1 Банк B - CONT (бит 1) — Непрерывные преобразования.
- ADON (бит 0) — Включение АЦП.
ADC_SMPR1 — время выборки каналов 20–29
Смещение 0x0C, адрес 0x4001 240C, 32 бит, после сброса 0x0000 0000. В коде: ADC1->SMPR1.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | SMP29 | SMP28 | SMP27 | SMP26 | SMP25 | ||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| SMP25 | SMP24 | SMP23 | SMP22 | SMP21 | SMP20 | ||||||||||
- SMP27–SMP29 (по 3 бита на каждый y, положение — на карте битов) — Время выборки канала y (только у STM32L151xC/xCA/xD/xDX/xE, STM32L152xCA/xD/xDX/xE, STM32L162xCA/xD/xDX/xE).
SMPy Значение 000 4 такта 001 9 тактов 010 16 тактов 011 24 такта 100 48 тактов 101 96 тактов 110 192 такта 111 384 такта - SMP20–SMP26 (по 3 бита на каждый y, положение — на карте битов) — Время выборки канала y.
SMPy Значение 000 4 такта 001 9 тактов 010 16 тактов 011 24 такта 100 48 тактов 101 96 тактов 110 192 такта 111 384 такта
ADC_SMPR2 — время выборки каналов 10–19
Смещение 0x10, адрес 0x4001 2410, 32 бит, после сброса 0x0000 0000. В коде: ADC1->SMPR2.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | SMP19 | 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–SMP19 (по 3 бита на каждый y, положение — на карте битов) — Время выборки канала y.
SMPy Значение 000 4 такта 001 9 тактов 010 16 тактов 011 24 такта 100 48 тактов 101 96 тактов 110 192 такта 111 384 такта
ADC_SMPR3 — время выборки каналов 0–9
Смещение 0x14, адрес 0x4001 2414, 32 бит, после сброса 0x0000 0000. В коде: ADC1->SMPR3.
| 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 4 такта 001 9 тактов 010 16 тактов 011 24 такта 100 48 тактов 101 96 тактов 110 192 такта 111 384 такта
ADC_JOFR1 — смещение инжектированного канала 1
Смещение 0x18, адрес 0x4001 2418, 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
Смещение 0x1C, адрес 0x4001 241C, 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
Смещение 0x20, адрес 0x4001 2420, 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
Смещение 0x24, адрес 0x4001 2424, 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 — верхний порог аналогового сторожа
Смещение 0x28, адрес 0x4001 2428, 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 — нижний порог аналогового сторожа
Смещение 0x2C, адрес 0x4001 242C, 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 — длина регулярной последовательности и преобразования 25–28
Смещение 0x30, адрес 0x4001 2430, 32 бит, после сброса 0x0000 0000. В коде: ADC1->SQR1.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | L | SQ28 | |||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| SQ28 | SQ27 | SQ26 | SQ25 | ||||||||||||
- L (биты 24:20) — Длина регулярной последовательности: 1…28 преобразований (L + 1).
- SQ28 (биты 19:15) — Канал 28-го преобразования регулярной последовательности (только у STM32L100xC, STM32L151xC/xCA/xD/xDX/xE, STM32L152xC/xCA/xD/xDX/xE, STM32L162).
- SQ25–SQ27 (по 5 бита на каждый y, положение — на карте битов) — Канал y-го преобразования регулярной последовательности.
ADC_SQR2 — регулярная последовательность, преобразования 19–24
Смещение 0x34, адрес 0x4001 2434, 32 бит, после сброса 0x0000 0000. В коде: ADC1->SQR2.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | SQ24 | SQ23 | SQ22 | ||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| SQ22 | SQ21 | SQ20 | SQ19 | ||||||||||||
- SQ19–SQ24 (по 5 бита на каждый y, положение — на карте битов) — Канал y-го преобразования регулярной последовательности.
ADC_SQR3 — регулярная последовательность, преобразования 13–18
Смещение 0x38, адрес 0x4001 2438, 32 бит, после сброса 0x0000 0000. В коде: ADC1->SQR3.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | SQ18 | SQ17 | SQ16 | ||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| SQ16 | SQ15 | SQ14 | SQ13 | ||||||||||||
- SQ13–SQ18 (по 5 бита на каждый y, положение — на карте битов) — Канал y-го преобразования регулярной последовательности.
ADC_SQR4 — регулярная последовательность, преобразования 7–12
Смещение 0x3C, адрес 0x4001 243C, 32 бит, после сброса 0x0000 0000. В коде: ADC1->SQR4.
| 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_SQR5 — регулярная последовательность, преобразования 1–6
Смещение 0x40, адрес 0x4001 2440, 32 бит, после сброса 0x0000 0000. В коде: ADC1->SQR5.
| 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 — инжектированная последовательность
Смещение 0x44, адрес 0x4001 2444, 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
Смещение 0x48, адрес 0x4001 2448, 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
Смещение 0x4C, адрес 0x4001 244C, 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
Смещение 0x50, адрес 0x4001 2450, 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
Смещение 0x54, адрес 0x4001 2454, 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 — результат регулярного преобразования
Смещение 0x58, адрес 0x4001 2458, 32 бит, после сброса 0x0000 0000. В коде: ADC1->DR.
| 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 |
| DATA | |||||||||||||||
- DATA (биты 15:0) — Результат регулярного преобразования.
ADC_SMPR0 — время выборки каналов 30 и 31
Смещение 0x5C, адрес 0x4001 245C, 32 бит, после сброса 0x0000 0000; регистр есть только у STM32L151xCA/xD/xDX/xE, STM32L152xCA/xD/xDX/xE, STM32L162xCA/xD/xDX/xE. В коде: ADC1->SMPR0.
| 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 |
| — | SMP31 | SMP30 | |||||||||||||
- SMP31 (биты 5:3) — Время выборки канала 31.
SMP31 Значение 000 4 такта 001 9 тактов 010 16 тактов 011 24 такта 100 48 тактов 101 96 тактов 110 192 такта 111 384 такта - SMP30 (биты 2:0) — Время выборки канала 30.
SMP30 Значение 000 4 такта 001 9 тактов 010 16 тактов 011 24 такта 100 48 тактов 101 96 тактов 110 192 такта 111 384 такта
ADC_CSR — общий регистр состояния АЦП
Смещение 0x00, адрес 0x4001 2700, 32 бит, после сброса 0x0000 0000. В коде: ADC1_COMMON->CSR.
| 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 |
| — | ADONS1 | OVR1 | STRT1 | JSTRT1 | JEOS1 | EOCS1 | AWD1 | ||||||||
- ADONS1 (бит 6) — АЦП включён (копия ADONS).
- OVR1 (бит 5) — Переполнение: результат не прочитан вовремя (АЦП1).
- STRT1 (бит 4) — Началось преобразование регулярной группы (АЦП1).
- JSTRT1 (бит 3) — Началось преобразование инжектированной группы (АЦП1).
- JEOS1 (бит 2) — Преобразование инжектированной группы завершено (АЦП1).
- EOCS1 (бит 1) — Конец преобразования АЦП (копия EOC).
- AWD1 (бит 0) — Сработал аналоговый сторож АЦП1: напряжение вне порогов.
ADC_CCR — общая настройка: делитель такта и датчик температуры
Смещение 0x04, адрес 0x4001 2704, 32 бит, после сброса 0x0000 0000. В коде: ADC1_COMMON->CCR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | TSVREFE | — | ADCPRE | ||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | |||||||||||||||
- TSVREFE (бит 23) — Включение датчика температуры и канала VREFINT.
- ADCPRE (биты 17:16) — Делитель частоты АЦП от HSI: 1, 2 или 4.
ADCPRE Значение 00 HSI / 1 01 HSI / 2 10 HSI / 4
Частые вопросы
Почему АЦП STM32L1 не работает без HSI?
АЦП всегда тактируется от HSI 16 МГц через ADCPRE, независимо от источника SYSCLK. Включите HSI (RCC_CR.HSION) и дождитесь HSIRDY, даже если система работает от MSI или HSE.
Как получить результаты, если APB медленнее АЦП?
Задайте задержку DELS = 001 в ADC_CR2: следующее преобразование начнётся только после чтения предыдущего результата, и данные не будут перезаписаны.
Источники
- STMicroelectronics. RM0038: Reference manual (Rev 18) — раздел 12.15: описание регистров, назначение полей и значения после сброса
- STMicroelectronics. cmsis-device-l1 v2.3.4: заголовки CMSIS stm32l100xb.h, stm32l100xba.h, stm32l100xc.h, stm32l151xb.h, stm32l151xba.h, stm32l151xc.h, stm32l151xca.h, stm32l151xd.h, stm32l151xdx.h, stm32l151xe.h, stm32l152xb.h, stm32l152xba.h, stm32l152xc.h, stm32l152xca.h, stm32l152xd.h, stm32l152xdx.h, stm32l152xe.h, stm32l162xc.h, stm32l162xca.h, stm32l162xd.h, stm32l162xdx.h, stm32l162xe.h — структуры периферии, смещения, адреса экземпляров и макросы полей; лицензия Apache-2.0
Нашли ошибку в регистрах? ·
Другие регистры STM32L1
- Все регистры STM32L1Блоки периферии и заголовки CMSIS
- RCC — тактирование и сбросRCC_CR, RCC_ICSCR, RCC_CFGR, RCC_CIR, RCC_AHBRSTR, RCC_APB2RSTR
- 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_ISR, DMA_IFCR, DMA_CCR, DMA_CNDTR, DMA_CPAR, DMA_CMAR
- 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
- PWR — управление питаниемPWR_CR, PWR_CSR
- FLASH — интерфейс флеш-памяти и EEPROMFLASH_ACR, FLASH_PECR, FLASH_PDKEYR, FLASH_PEKEYR, FLASH_PRGKEYR, FLASH_OPTKEYR
- RTC — часы реального времениRTC_TR, RTC_DR, RTC_CR, RTC_ISR, RTC_PRER, RTC_WUTR
- ЦАП — цифро-аналоговый преобразовательDAC_CR, DAC_SWTRIGR, DAC_DHR12R1, DAC_DHR12L1, DAC_DHR8R1, DAC_DHR12R2