Регистры АЦП STM32G4
Регистры АЦП STM32G4: регулятор и калибровка, регулярная последовательность до 16 каналов и инжектированная до 4, время выборки, смещения с насыщением, передискретизация до 256 отсчётов, коррекция усиления, три сторожа, DMA и двойной режим.
АЦП STM32G4 — 12-битные, до 4 млн выборок в секунду, того же устройства, что у STM32F3 и L4: регулярная группа (SQR1–SQR4, DR) и инжектированная (JSQR, JDR1–JDR4), смещения OFR1–OFR4 и три аналоговых сторожа. Перед работой нужно сбросить DEEPPWD, включить регулятор ADVREGEN, подождать tADCVREG_STUP и выполнить калибровку ADCAL (RM0440, раздел 21.7).
Новое у STM32G4 — режимы выборки по триггеру и «лампы» (CFGR2), коррекция усиления по ADC_GCOMP, насыщение смещённого результата (SATEN) и фильтр сторожа AWDFILT. Пары ADC1/ADC2 и ADC3/ADC4/ADC5 имеют общие регистры по смещению 0x300: двойной режим, предделитель, внутренние каналы VREFINT, датчик температуры и VBAT. Такт АЦП — PLLP или SYSCLK (ADC12SEL, ADC345SEL в RCC_CCIPR) или синхронный от HCLK.
| Экземпляр | Базовый адрес | Есть у |
|---|---|---|
| ADC1 | 0x5000 0000 | всех |
| ADC2 | 0x5000 0100 | всех |
| ADC3 | 0x5000 0400 | STM32G471, STM32G473, STM32G474, STM32G483, STM32G484, STM32G491, STM32G4A1 |
| ADC4 | 0x5000 0500 | STM32G473, STM32G474, STM32G483, STM32G484 |
| ADC5 | 0x5000 0600 | STM32G473, STM32G474, STM32G483, STM32G484 |
| ADC12_COMMON | 0x5000 0300 | всех |
| ADC345_COMMON | 0x5000 0700 | STM32G471, STM32G473, STM32G474, STM32G483, STM32G484, STM32G491, STM32G4A1 |
Регистры блока
| Регистр | Смещение | Назначение | После сброса |
|---|---|---|---|
| ADC_ISR | 0x00 | Флаги состояния и прерываний | 0x0000 0000 |
| ADC_IER | 0x04 | Разрешение прерываний | 0x0000 0000 |
| ADC_CR | 0x08 | Регулятор, калибровка, включение, запуск и остановка | 0x2000 0000 |
| ADC_CFGR | 0x0C | Режимы преобразования, внешний запуск, разрядность, DMA, сторож 1 | 0x8000 0000 |
| ADC_CFGR2 | 0x10 | Передискретизация и режимы выборки | 0x0000 0000 |
| ADC_SMPR1 | 0x14 | Время выборки каналов 0–9 | 0x0000 0000 |
| ADC_SMPR2 | 0x18 | Время выборки каналов 10–18 | 0x0000 0000 |
| ADC_TR1 | 0x20 | Пороги аналогового сторожа 1 | 0x0FFF 0000 |
| ADC_TR2 | 0x24 | Пороги аналогового сторожа 2 | 0x00FF 0000 |
| ADC_TR3 | 0x28 | Пороги аналогового сторожа 3 | 0x00FF 0000 |
| ADC_SQR1 | 0x30 | Длина регулярной последовательности и каналы 1–4 | 0x0000 0000 |
| ADC_SQR2 | 0x34 | Регулярная последовательность: каналы 5–9 | 0x0000 0000 |
| ADC_SQR3 | 0x38 | Регулярная последовательность: каналы 10–14 | 0x0000 0000 |
| ADC_SQR4 | 0x3C | Регулярная последовательность: каналы 15–16 | 0x0000 0000 |
| ADC_DR | 0x40 | Результат регулярного преобразования | 0x0000 0000 |
| ADC_JSQR | 0x4C | Инжектированная последовательность и её запуск | 0x0000 0000 |
| ADC_OFR1 | 0x60 | Смещение 1 | 0x0000 0000 |
| ADC_OFR2 | 0x64 | Смещение 2 | 0x0000 0000 |
| ADC_OFR3 | 0x68 | Смещение 3 | 0x0000 0000 |
| ADC_OFR4 | 0x6C | Смещение 4 | 0x0000 0000 |
| ADC_JDR1 | 0x80 | Результат инжектированного канала 1 | 0x0000 0000 |
| ADC_JDR2 | 0x84 | Результат инжектированного канала 2 | 0x0000 0000 |
| ADC_JDR3 | 0x88 | Результат инжектированного канала 3 | 0x0000 0000 |
| ADC_JDR4 | 0x8C | Результат инжектированного канала 4 | 0x0000 0000 |
| ADC_AWD2CR | 0xA0 | Каналы аналогового сторожа 2 | 0x0000 0000 |
| ADC_AWD3CR | 0xA4 | Каналы аналогового сторожа 3 | 0x0000 0000 |
| ADC_DIFSEL | 0xB0 | Дифференциальные входы | 0x0000 0000 |
| ADC_CALFACT | 0xB4 | Калибровочные коэффициенты | 0x0000 0000 |
| ADC_GCOMP | 0xC0 | Коэффициент коррекции усиления | 0x0000 0000 |
| ADC_CSR | 0x00 | Флаги ведущего и ведомого АЦП пары | 0x0000 0000 |
| ADC_CCR | 0x08 | Общие настройки: двойной режим, тактирование, внутренние каналы | 0x0000 0000 |
| ADC_CDR | 0x0C | Результаты пары АЦП в двойном режиме | 0x0000 0000 |
Конструктор значения
Выберите регистр и значения полей — конструктор покажет 32-битное значение и строку на C с макросами CMSIS. Поля, которые вы не меняете, берутся из значения после сброса.
Значение: 0x00000000
0000 0000 0000 0000 0000 0000 0000 0000
ADC1->ISR = 0x00000000;ADC_ISR — флаги состояния и прерываний
Смещение 0x00, 32 бит, после сброса 0x0000 0000. В коде: ADC1->ISR.
| 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 |
| — | JQOVF | AWD3 | AWD2 | AWD1 | JEOS | JEOC | OVR | EOS | EOC | EOSMP | ADRDY | ||||
- JQOVF (бит 10) — Переполнение очереди контекстов инжектированной группы (JSQR).
- AWD1–AWD3 (по биту на каждый y, положение — на карте битов) — Сработал аналоговый сторож y.
- JEOS (бит 6) — Окончание инжектированной последовательности.
- JEOC (бит 5) — Окончание инжектированного преобразования.
- OVR (бит 4) — Переполнение: новый результат, а DR не прочитан.
- EOS (бит 3) — Окончание регулярной последовательности.
- EOC (бит 2) — Окончание регулярного преобразования; сбрасывается чтением DR.
- EOSMP (бит 1) — Окончание выборки регулярного канала.
- ADRDY (бит 0) — АЦП готов к преобразованиям.
ADC_IER — разрешение прерываний
Смещение 0x04, 32 бит, после сброса 0x0000 0000. В коде: ADC1->IER.
| 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 |
| — | JQOVFIE | AWD3IE | AWD2IE | AWD1IE | JEOSIE | JEOCIE | OVRIE | EOSIE | EOCIE | EOSMPIE | ADRDYIE | ||||
- JQOVFIE (бит 10) — Прерывание по переполнению очереди контекстов инжектированной группы (JSQR).
- AWD3IE (бит 9) — Прерывание аналогового сторожа 3.
- AWD2IE (бит 8) — Прерывание аналогового сторожа 2.
- AWD1IE (бит 7) — Прерывание аналогового сторожа 1.
- JEOSIE (бит 6) — Прерывание по окончании инжектированной последовательности.
- JEOCIE (бит 5) — Прерывание по окончании инжектированного преобразования.
- OVRIE (бит 4) — Прерывание по переполнению.
- EOSIE (бит 3) — Прерывание по окончании регулярной последовательности.
- EOCIE (бит 2) — Прерывание по окончании регулярного преобразования.
- EOSMPIE (бит 1) — Прерывание по окончании выборки регулярного канала.
- ADRDYIE (бит 0) — Прерывание: АЦП готов к преобразованиям.
ADC_CR — регулятор, калибровка, включение, запуск и остановка
Смещение 0x08, 32 бит, после сброса 0x2000 0000. В коде: ADC1->CR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| ADCAL | ADCALDIF | DEEPPWD | ADVREGEN | — | |||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | JADSTP | ADSTP | JADSTART | ADSTART | ADDIS | ADEN | |||||||||
- ADCAL (бит 31) — Запуск калибровки; сбрасывается по окончании. АЦП должен быть выключен.
- ADCALDIF (бит 30) — Калибровка для дифференциальных (1) или несимметричных (0) входов.
- DEEPPWD (бит 29) — Глубокое отключение АЦП; после сброса установлен — сбросьте перед включением регулятора.
- ADVREGEN (бит 28) — Включение регулятора напряжения АЦП; после него — пауза tADCVREG_STUP.
- JADSTP (бит 5) — Остановка инжектированных преобразований.
- ADSTP (бит 4) — Остановка регулярных преобразований.
- JADSTART (бит 3) — Запуск инжектированных преобразований (или ожидание триггера).
- ADSTART (бит 2) — Запуск регулярных преобразований (или ожидание триггера).
- ADDIS (бит 1) — Выключение АЦП.
- ADEN (бит 0) — Включение АЦП; готовность — флаг ADRDY.
ADC_CFGR — режимы преобразования, внешний запуск, разрядность, DMA, сторож 1
Смещение 0x0C, 32 бит, после сброса 0x8000 0000. В коде: ADC1->CFGR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| JQDIS | AWD1CH | JAUTO | JAWD1EN | AWD1EN | AWD1SGL | JQM | JDISCEN | DISCNUM | DISCEN | ||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| ALIGN | AUTDLY | CONT | OVRMOD | EXTEN | EXTSEL | RES | — | DMACFG | DMAEN | ||||||
- JQDIS (бит 31) — Запрет очереди контекстов инжектированной группы; после сброса установлен.
- AWD1CH (биты 30:26) — Канал аналогового сторожа 1 при AWD1SGL = 1.
- JAUTO (бит 25) — Автоматический запуск инжектированной группы после регулярной.
- JAWD1EN (бит 24) — Сторож 1 следит за инжектированными каналами.
- AWD1EN (бит 23) — Сторож 1 следит за регулярными каналами.
- AWD1SGL (бит 22) — Сторож 1 следит за одним каналом (AWD1CH) или за всеми.
- JQM (бит 21) — Режим очереди JSQR: при пустой очереди ждать триггер (0) или выключить инжектированную группу (1).
- JDISCEN (бит 20) — Прерывистый режим инжектированной группы: по каналу на каждый триггер.
- DISCNUM (биты 19:17) — Число регулярных каналов на один триггер в прерывистом режиме: 1…8.
- DISCEN (бит 16) — Прерывистый режим регулярной группы.
- ALIGN (бит 15) — Выравнивание результата: вправо или влево.
- AUTDLY (бит 14) — Автозадержка: следующее преобразование ждёт чтения результата.
- CONT (бит 13) — Непрерывное преобразование регулярной группы.
- OVRMOD (бит 12) — При переполнении: сохранить старый результат (0) или записать новый (1).
- EXTEN (биты 11:10) — Внешний запуск регулярной группы: выключен, по нарастающему, спадающему или обоим фронтам.
- EXTSEL (биты 9:5) — Источник внешнего запуска регулярной группы (таблица триггеров в RM0440).
- RES (биты 4:3) — Разрядность: 12, 10, 8 или 6 бит.
- DMACFG (бит 1) — DMA: однократный (0) или циклический (1) режим.
- DMAEN (бит 0) — Запрос DMA после каждого регулярного преобразования.
ADC_CFGR2 — передискретизация и режимы выборки
Смещение 0x10, 32 бит, после сброса 0x0000 0000. В коде: ADC1->CFGR2.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | SMPTRIG | BULB | SWTRIG | — | GCOMP | ||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | ROVSM | TROVS | OVSS | OVSR | JOVSE | ROVSE | |||||||||
- SMPTRIG (бит 27) — Выборка по триггеру: идёт от нарастающего до спадающего фронта сигнала запуска.
- BULB (бит 26) — Режим «лампы»: выборка начинается сразу после конца предыдущего преобразования.
- SWTRIG (бит 25) — Программный триггер выборки при SMPTRIG = 1: 1 — начать, 0 — преобразовать.
- GCOMP (бит 16) — Коррекция усиления по коэффициенту ADC_GCOMP на всех каналах.
- ROVSM (бит 10) — Регулярная передискретизация при прерывании инжектированной группой: продолжить или начать заново.
- TROVS (бит 9) — Передискретизация по триггеру: каждый отсчёт — по своему запуску.
- OVSS (биты 8:5) — Сдвиг суммы при передискретизации: 0…8 бит.
- OVSR (биты 4:2) — Коэффициент передискретизации: 2…256 отсчётов.
- JOVSE (бит 1) — Передискретизация инжектированных каналов.
- ROVSE (бит 0) — Передискретизация регулярных каналов.
ADC_SMPR1 — время выборки каналов 0–9
Смещение 0x14, 32 бит, после сброса 0x0000 0000. В коде: ADC1->SMPR1.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| SMPPLUS | — | 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 | ||||||||||
- SMPPLUS (бит 31) — Время выборки 2,5 такта становится 3,5 такта.
- SMP0–SMP9 (по 3 бита на каждый y, положение — на карте битов) — Время выборки канала y: 2,5…640,5 такта АЦП.
- SMP5 (биты 17:15) — Время выборки канала 5: 2,5…640,5 такта АЦП.
- SMP2 (биты 8:6) — Время выборки канала 2: 2,5…640,5 такта АЦП.
ADC_SMPR2 — время выборки каналов 10–18
Смещение 0x18, 32 бит, после сброса 0x0000 0000. В коде: ADC1->SMPR2.
| 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: 2,5…640,5 такта АЦП.
ADC_TR1 — пороги аналогового сторожа 1
Смещение 0x20, 32 бит, после сброса 0x0FFF 0000. В коде: ADC1->TR1.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | HT1 | ||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | AWDFILT | LT1 | |||||||||||||
- HT1 (биты 27:16) — Верхний порог аналогового сторожа 1 (12 бит).
- AWDFILT (биты 14:12) — Фильтр сторожа 1: флаг после 1…8 подряд срабатываний.
- LT1 (биты 11:0) — Нижний порог аналогового сторожа 1 (12 бит).
ADC_TR2 — пороги аналогового сторожа 2
Смещение 0x24, 32 бит, после сброса 0x00FF 0000. В коде: ADC1->TR2.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | HT2 | ||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | LT2 | ||||||||||||||
- HT2 (биты 23:16) — Верхний порог аналогового сторожа 2 (старшие 8 бит результата).
- LT2 (биты 7:0) — Нижний порог аналогового сторожа 2 (старшие 8 бит результата).
ADC_TR3 — пороги аналогового сторожа 3
Смещение 0x28, 32 бит, после сброса 0x00FF 0000. В коде: ADC1->TR3.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | HT3 | ||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | LT3 | ||||||||||||||
- HT3 (биты 23:16) — Верхний порог аналогового сторожа 3 (старшие 8 бит результата).
- LT3 (биты 7:0) — Нижний порог аналогового сторожа 3 (старшие 8 бит результата).
ADC_SQR1 — длина регулярной последовательности и каналы 1–4
Смещение 0x30, 32 бит, после сброса 0x0000 0000. В коде: ADC1->SQR1.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | SQ4 | — | SQ3 | — | SQ2 | ||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| SQ2 | — | SQ1 | — | L | |||||||||||
- SQ1–SQ4 (по 5 бита на каждый y, положение — на карте битов) — Номер канала на y-м месте регулярной последовательности.
- L (биты 3:0) — Длина регулярной последовательности: 1…16 каналов (записывается L − 1).
ADC_SQR2 — регулярная последовательность: каналы 5–9
Смещение 0x34, 32 бит, после сброса 0x0000 0000. В коде: ADC1->SQR2.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | SQ9 | — | SQ8 | — | SQ7 | ||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| SQ7 | — | SQ6 | — | SQ5 | |||||||||||
- SQ5–SQ9 (по 5 бита на каждый y, положение — на карте битов) — Номер канала на y-м месте регулярной последовательности.
ADC_SQR3 — регулярная последовательность: каналы 10–14
Смещение 0x38, 32 бит, после сброса 0x0000 0000. В коде: ADC1->SQR3.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | SQ14 | — | SQ13 | — | SQ12 | ||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| SQ12 | — | SQ11 | — | SQ10 | |||||||||||
- SQ10–SQ14 (по 5 бита на каждый y, положение — на карте битов) — Номер канала на y-м месте регулярной последовательности.
ADC_SQR4 — регулярная последовательность: каналы 15–16
Смещение 0x3C, 32 бит, после сброса 0x0000 0000. В коде: ADC1->SQR4.
| 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 |
| — | SQ16 | — | SQ15 | ||||||||||||
- SQ16 (биты 10:6) — Номер канала на 16-м месте регулярной последовательности.
- SQ15 (биты 4:0) — Номер канала на 15-м месте регулярной последовательности.
ADC_DR — результат регулярного преобразования
Смещение 0x40, 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 |
| RDATA | |||||||||||||||
- RDATA (биты 15:0) — Результат регулярного преобразования.
ADC_JSQR — инжектированная последовательность и её запуск
Смещение 0x4C, 32 бит, после сброса 0x0000 0000. В коде: ADC1->JSQR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| JSQ4 | — | JSQ3 | — | JSQ2 | |||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| JSQ2 | — | JSQ1 | JEXTEN | JEXTSEL | JL | ||||||||||
- JSQ1–JSQ4 (по 5 бита на каждый y, положение — на карте битов) — Номер канала на y-м месте инжектированной последовательности.
- JEXTEN (биты 8:7) — Внешний запуск инжектированной группы: выключен, по нарастающему, спадающему или обоим фронтам.
- JEXTSEL (биты 6:2) — Источник внешнего запуска инжектированной группы (таблица триггеров в RM0440).
- JL (биты 1:0) — Длина инжектированной последовательности: 1…4 канала (записывается JL − 1).
ADC_OFR1 — смещение 1
Смещение 0x60, 32 бит, после сброса 0x0000 0000. В коде: ADC1->OFR1.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| OFFSET1_EN | OFFSET1_CH | SATEN | OFFSETPOS | — | |||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | OFFSET1 | ||||||||||||||
- OFFSET1_EN (бит 31) — Включение смещения 1.
- OFFSET1_CH (биты 30:26) — Канал, к которому применяется смещение 1.
- SATEN (бит 25) — Насыщение результата со смещением на 0x000 и 0xFFF (без знака).
- OFFSETPOS (бит 24) — Знак смещения: вычитание (0) или прибавление (1).
- OFFSET1 (биты 11:0) — Значение смещения 1: вычитается из результата канала.
ADC_OFR2 — смещение 2
Смещение 0x64, 32 бит, после сброса 0x0000 0000. В коде: ADC1->OFR2.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| OFFSET2_EN | OFFSET2_CH | SATEN | OFFSETPOS | — | |||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | OFFSET2 | ||||||||||||||
- OFFSET2_EN (бит 31) — Включение смещения 2.
- OFFSET2_CH (биты 30:26) — Канал, к которому применяется смещение 2.
- SATEN (бит 25) — Насыщение результата со смещением на 0x000 и 0xFFF (без знака).
- OFFSETPOS (бит 24) — Знак смещения: вычитание (0) или прибавление (1).
- OFFSET2 (биты 11:0) — Значение смещения 2: вычитается из результата канала.
ADC_OFR3 — смещение 3
Смещение 0x68, 32 бит, после сброса 0x0000 0000. В коде: ADC1->OFR3.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| OFFSET3_EN | OFFSET3_CH | SATEN | OFFSETPOS | — | |||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | OFFSET3 | ||||||||||||||
- OFFSET3_EN (бит 31) — Включение смещения 3.
- OFFSET3_CH (биты 30:26) — Канал, к которому применяется смещение 3.
- SATEN (бит 25) — Насыщение результата со смещением на 0x000 и 0xFFF (без знака).
- OFFSETPOS (бит 24) — Знак смещения: вычитание (0) или прибавление (1).
- OFFSET3 (биты 11:0) — Значение смещения 3: вычитается из результата канала.
ADC_OFR4 — смещение 4
Смещение 0x6C, 32 бит, после сброса 0x0000 0000. В коде: ADC1->OFR4.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| OFFSET4_EN | OFFSET4_CH | SATEN | OFFSETPOS | — | |||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | OFFSET4 | ||||||||||||||
- OFFSET4_EN (бит 31) — Включение смещения 4.
- OFFSET4_CH (биты 30:26) — Канал, к которому применяется смещение 4.
- SATEN (бит 25) — Насыщение результата со смещением на 0x000 и 0xFFF (без знака).
- OFFSETPOS (бит 24) — Знак смещения: вычитание (0) или прибавление (1).
- OFFSET4 (биты 11:0) — Значение смещения 4: вычитается из результата канала.
ADC_JDR1 — результат инжектированного канала 1
Смещение 0x80, 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) — Результат инжектированного преобразования.
ADC_JDR2 — результат инжектированного канала 2
Смещение 0x84, 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) — Результат инжектированного преобразования.
ADC_JDR3 — результат инжектированного канала 3
Смещение 0x88, 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) — Результат инжектированного преобразования.
ADC_JDR4 — результат инжектированного канала 4
Смещение 0x8C, 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) — Результат инжектированного преобразования.
ADC_AWD2CR — каналы аналогового сторожа 2
Смещение 0xA0, 32 бит, после сброса 0x0000 0000. В коде: ADC1->AWD2CR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | AWD2CH | ||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| AWD2CH | |||||||||||||||
- AWD2CH (биты 18:0) — Каналы аналогового сторожа 2: по биту на канал.
ADC_AWD3CR — каналы аналогового сторожа 3
Смещение 0xA4, 32 бит, после сброса 0x0000 0000. В коде: ADC1->AWD3CR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | AWD3CH | ||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| AWD3CH | |||||||||||||||
- AWD3CH (биты 18:0) — Каналы аналогового сторожа 3: по биту на канал.
ADC_DIFSEL — дифференциальные входы
Смещение 0xB0, 32 бит, после сброса 0x0000 0000. В коде: ADC1->DIFSEL.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | DIFSEL | ||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| DIFSEL | |||||||||||||||
- DIFSEL (биты 18:0) — Дифференциальный режим каналов: по биту на канал.
ADC_CALFACT — калибровочные коэффициенты
Смещение 0xB4, 32 бит, после сброса 0x0000 0000. В коде: ADC1->CALFACT.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | CALFACT_D | ||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | CALFACT_S | ||||||||||||||
- CALFACT_D (биты 22:16) — Калибровочный коэффициент дифференциального режима.
- CALFACT_S (биты 6:0) — Калибровочный коэффициент несимметричного режима.
ADC_GCOMP — коэффициент коррекции усиления
Смещение 0xC0, 32 бит, после сброса 0x0000 0000. В коде: ADC1->GCOMP.
| 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 |
| — | GCOMPCOEFF | ||||||||||||||
- GCOMPCOEFF (биты 13:0) — Коэффициент коррекции усиления: 0…3,999756 с шагом 1/4096.
ADC_CSR — флаги ведущего и ведомого АЦП пары
Смещение 0x00, 32 бит, после сброса 0x0000 0000. В коде: ADC12_COMMON->CSR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | JQOVF_SLV | AWD3_SLV | AWD2_SLV | AWD1_SLV | JEOS_SLV | JEOC_SLV | OVR_SLV | EOS_SLV | EOC_SLV | EOSMP_SLV | ADRDY_SLV | ||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | JQOVF_MST | AWD3_MST | AWD2_MST | AWD1_MST | JEOS_MST | JEOC_MST | OVR_MST | EOS_MST | EOC_MST | EOSMP_MST | ADRDY_MST | ||||
- JQOVF_SLV (бит 26) — Копия флага JQOVF ведомого АЦП пары (только чтение).
- AWD3_SLV (бит 25) — Копия флага AWD3 ведомого АЦП пары (только чтение).
- AWD2_SLV (бит 24) — Копия флага AWD2 ведомого АЦП пары (только чтение).
- AWD1_SLV (бит 23) — Копия флага AWD1 ведомого АЦП пары (только чтение).
- JEOS_SLV (бит 22) — Копия флага JEOS ведомого АЦП пары (только чтение).
- JEOC_SLV (бит 21) — Копия флага JEOC ведомого АЦП пары (только чтение).
- OVR_SLV (бит 20) — Копия флага OVR ведомого АЦП пары (только чтение).
- EOS_SLV (бит 19) — Копия флага EOS ведомого АЦП пары (только чтение).
- EOC_SLV (бит 18) — Копия флага EOC ведомого АЦП пары (только чтение).
- EOSMP_SLV (бит 17) — Копия флага EOSMP ведомого АЦП пары (только чтение).
- ADRDY_SLV (бит 16) — Копия флага ADRDY ведомого АЦП пары (только чтение).
- JQOVF_MST (бит 10) — Копия флага JQOVF ведущего АЦП пары (только чтение).
- AWD3_MST (бит 9) — Копия флага AWD3 ведущего АЦП пары (только чтение).
- AWD2_MST (бит 8) — Копия флага AWD2 ведущего АЦП пары (только чтение).
- AWD1_MST (бит 7) — Копия флага AWD1 ведущего АЦП пары (только чтение).
- JEOS_MST (бит 6) — Копия флага JEOS ведущего АЦП пары (только чтение).
- JEOC_MST (бит 5) — Копия флага JEOC ведущего АЦП пары (только чтение).
- OVR_MST (бит 4) — Копия флага OVR ведущего АЦП пары (только чтение).
- EOS_MST (бит 3) — Копия флага EOS ведущего АЦП пары (только чтение).
- EOC_MST (бит 2) — Копия флага EOC ведущего АЦП пары (только чтение).
- EOSMP_MST (бит 1) — Копия флага EOSMP ведущего АЦП пары (только чтение).
- ADRDY_MST (бит 0) — Копия флага ADRDY ведущего АЦП пары (только чтение).
ADC_CCR — общие настройки: двойной режим, тактирование, внутренние каналы
Смещение 0x08, 32 бит, после сброса 0x0000 0000. В коде: ADC12_COMMON->CCR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | VBATSEL | VSENSESEL | VREFEN | PRESC | CKMODE | ||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| MDMA | DMACFG | — | DELAY | — | DUAL | ||||||||||
- VBATSEL (бит 24) — Внутренний канал VBAT / 3.
- VSENSESEL (бит 23) — Внутренний канал датчика температуры.
- VREFEN (бит 22) — Внутренний канал опорного напряжения VREFINT.
- PRESC (биты 21:18) — Предделитель асинхронного такта АЦП: 1…256.
- CKMODE (биты 17:16) — Тактирование: асинхронный такт из RCC (00) или синхронный HCLK / 1, / 2, / 4.
- MDMA (биты 15:14) — DMA в двойном режиме: выключен, 12/10 бит или 8/6 бит.
- DMACFG (бит 13) — DMA: однократный (0) или циклический (1) режим.
- DELAY (биты 11:8) — Задержка между выборками ведущего и ведомого АЦП в чередующемся режиме.
- DUAL (биты 4:0) — Режим пары АЦП: независимый, одновременный, чередующийся, поочерёдный запуск.
ADC_CDR — результаты пары АЦП в двойном режиме
Смещение 0x0C, 32 бит, после сброса 0x0000 0000. В коде: ADC12_COMMON->CDR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| RDATA_SLV | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RDATA_MST | |||||||||||||||
- RDATA_SLV (биты 31:16) — Результат ведомого АЦП в двойном режиме.
- RDATA_MST (биты 15:0) — Результат ведущего АЦП в двойном режиме.
Частые вопросы
С чего начать работу с АЦП STM32G4?
Включите тактирование ADC12EN и источник ADC12SEL, сбросьте DEEPPWD, установите ADVREGEN и подождите 20 мкс. Затем ADCAL = 1 при ADEN = 0 и ожидание конца калибровки, после — ADEN = 1 и ожидание ADRDY.
Как получить 16 бит вместо 12?
Передискретизацией: ROVSE = 1, OVSR = 111 (256 отсчётов) и OVSS = 0100 (сдвиг на 4) дают 16-битный результат ценой частоты преобразований.
Источники
- STMicroelectronics. RM0440: Reference manual (Rev 9) — раздел 21.7–21.8: описание регистров, назначение полей и значения после сброса
- STMicroelectronics. cmsis-device-g4 v1.2.6: заголовки CMSIS stm32g431xx.h, stm32g441xx.h, stm32g471xx.h, stm32g473xx.h, stm32g474xx.h, stm32g483xx.h, stm32g484xx.h, stm32g491xx.h, stm32g4a1xx.h — структуры периферии, смещения, адреса экземпляров и макросы полей; лицензия Apache-2.0
Нашли ошибку в регистрах?
Другие регистры STM32G4
- Все регистры STM32G4Блоки периферии и заголовки CMSIS
- RCC — тактирование и сбросRCC_CR, RCC_ICSCR, RCC_CFGR, RCC_PLLCFGR, RCC_CIER, RCC_CIFR
- GPIO — порты ввода-выводаGPIOx_MODER, GPIOx_OTYPER, GPIOx_OSPEEDR, GPIOx_PUPDR, GPIOx_IDR, GPIOx_ODR
- SYSCFG — системная конфигурацияSYSCFG_MEMRMP, SYSCFG_CFGR1, SYSCFG_EXTICR1, SYSCFG_EXTICR2, SYSCFG_EXTICR3, SYSCFG_EXTICR4
- EXTI — внешние прерыванияEXTI_IMR1, EXTI_EMR1, EXTI_RTSR1, EXTI_FTSR1, EXTI_SWIER1, EXTI_PR1
- USART — последовательные порты USART и LPUARTUSART_CR1, USART_CR2, USART_CR3, USART_BRR, USART_GTPR, USART_RTOR
- SPI — интерфейсы SPI и I2SSPI_CR1, SPI_CR2, SPI_SR, SPI_DR, SPI_CRCPR, SPI_RXCRCR
- I2C — интерфейс I2CI2C_CR1, I2C_CR2, I2C_OAR1, I2C_OAR2, I2C_TIMINGR, I2C_TIMEOUTR
- TIM — таймерыTIMx_CR1, TIMx_CR2, TIMx_SMCR, TIMx_DIER, TIMx_SR, TIMx_EGR
- LPTIM — маломощный таймерLPTIM_ISR, LPTIM_ICR, LPTIM_IER, LPTIM_CFGR, LPTIM_CR, LPTIM_CMP
- DMA — прямой доступ к памятиDMA_ISR, DMA_IFCR, DMA_CCR, DMA_CNDTR, DMA_CPAR, DMA_CMAR
- IWDG — независимый сторожевой таймерIWDG_KR, IWDG_PR, IWDG_RLR, IWDG_SR, IWDG_WINR
- WWDG — оконный сторожевой таймерWWDG_CR, WWDG_CFR, WWDG_SR
- CRC — вычислитель CRCCRC_DR, CRC_IDR, CRC_CR, CRC_INIT, CRC_POL
- DBGMCU — отладкаDBGMCU_IDCODE, DBGMCU_CR, DBGMCU_APB1FZR1, DBGMCU_APB1FZR2, DBGMCU_APB2FZR
- PWR — управление питаниемPWR_CR1, PWR_CR2, PWR_CR3, PWR_CR4, PWR_SR1, PWR_SR2
- FLASH — флеш-памятьFLASH_ACR, FLASH_PDKEYR, FLASH_KEYR, FLASH_OPTKEYR, FLASH_SR, FLASH_CR
- RTC — часы реального времени и вмешательствоRTC_TR, RTC_DR, RTC_SSR, RTC_ICSR, RTC_PRER, RTC_WUTR
- ЦАП — цифро-аналоговые преобразователиDAC_CR, DAC_SWTRIGR, DAC_DHR12R1, DAC_DHR12L1, DAC_DHR8R1, DAC_DHR12R2
- CORDIC — сопроцессор тригонометрии CORDICCORDIC_CSR, CORDIC_WDATA, CORDIC_RDATA
- FMAC — фильтровый ускоритель FMACFMAC_X1BUFCFG, FMAC_X2BUFCFG, FMAC_YBUFCFG, FMAC_PARAM, FMAC_CR, FMAC_SR