Регистры АЦП STM32F3
Регистры АЦП STM32F3: регулятор напряжения и калибровка, включение, регулярная последовательность до 16 каналов и инжектированная до 4, время выборки, смещения, три аналоговых сторожа, дифференциальные входы, DMA и двойной режим пар ADC1/ADC2 и ADC3/ADC4.
АЦП STM32F3 — другой блок, чем у STM32F0 и F1: 12-битный, до 5 млн выборок в секунду, с регулярной группой (SQR1–SQR4, результат в DR) и инжектированной (JSQR, результаты в JDR1–JDR4) и очередью контекстов JSQR. Перед работой включается регулятор напряжения ADVREGEN (переход через состояние 00, затем пауза tADCVREG_STUP), выполняется калибровка ADCAL отдельно для несимметричных и дифференциальных входов, и только потом ADEN (RM0316, раздел 15.5).
Пары ADC1/ADC2 и ADC3/ADC4 имеют общие регистры ADC_CSR, ADC_CCR и ADC_CDR (по смещению 0x300 от ведущего): двойной режим, внутренние каналы VREFINT, датчик температуры и VBAT, тактирование CKMODE — асинхронно от PLL (делитель ADCPRE в RCC_CFGR2) или синхронно от HCLK. У STM32F303x6/x8 и F328 АЦП два, у остальных четыре.
| Экземпляр | Базовый адрес | Есть у |
|---|---|---|
| ADC1 | 0x5000 0000 | всех |
| ADC2 | 0x5000 0100 | всех |
| ADC3 | 0x5000 0400 | STM32F303xC/xE, STM32F358, STM32F398 |
| ADC4 | 0x5000 0500 | STM32F303xC/xE, STM32F358, STM32F398 |
| ADC12_COMMON | 0x5000 0300 | всех |
| ADC34_COMMON | 0x5000 0700 | STM32F303xC/xE, STM32F358, STM32F398 |
Регистры блока
| Регистр | Смещение | Назначение | После сброса |
|---|---|---|---|
| ADC_ISR | 0x00 | Флаги состояния и прерываний | 0x0000 0000 |
| ADC_IER | 0x04 | Разрешение прерываний | 0x0000 0000 |
| ADC_CR | 0x08 | Регулятор, калибровка, включение, запуск и остановка | 0x2000 0000 |
| ADC_CFGR | 0x0C | Режимы преобразования, внешний запуск, разрядность, DMA, сторож 1 | 0x0000 0000 (в описании регистра напечатано 0x0000 00000; значение — по карте регистров на с. 417) |
| 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_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 | 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) входов.
- ADVREGEN (биты 29:28) — Регулятор напряжения АЦП: 01 — включён, 10 — выключен; переход идёт через 00. После включения — пауза tADCVREG_STUP.
- JADSTP (бит 5) — Остановка инжектированных преобразований.
- ADSTP (бит 4) — Остановка регулярных преобразований.
- JADSTART (бит 3) — Запуск инжектированных преобразований (или ожидание триггера).
- ADSTART (бит 2) — Запуск регулярных преобразований (или ожидание триггера).
- ADDIS (бит 1) — Выключение АЦП.
- ADEN (бит 0) — Включение АЦП; готовность — флаг ADRDY.
ADC_CFGR — режимы преобразования, внешний запуск, разрядность, DMA, сторож 1
Смещение 0x0C, 32 бит, после сброса 0x0000 0000 (в описании регистра напечатано 0x0000 00000; значение — по карте регистров на с. 417). В коде: ADC1->CFGR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | 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 |
| — | AUTDLY | CONT | OVRMOD | EXTEN | EXTSEL | ALIGN | RES | — | DMACFG | DMAEN | |||||
- 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) — Прерывистый режим регулярной группы.
- AUTDLY (бит 14) — Автозадержка: следующее преобразование ждёт чтения результата.
- CONT (бит 13) — Непрерывное преобразование регулярной группы.
- OVRMOD (бит 12) — При переполнении: сохранить старый результат (0) или записать новый (1).
- EXTEN (биты 11:10) — Внешний запуск регулярной группы: выключен, по нарастающему, спадающему или обоим фронтам.
- EXTSEL (биты 9:6) — Источник внешнего запуска регулярной группы (таблица триггеров в RM0316).
- ALIGN (бит 5) — Выравнивание результата: вправо или влево.
- RES (биты 4:3) — Разрядность: 12, 10, 8 или 6 бит.
- DMACFG (бит 1) — DMA: однократный (0) или циклический (1) режим.
- DMAEN (бит 0) — Запрос DMA после каждого регулярного преобразования.
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 |
| — | 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: 1,5…601,5 такта АЦП.
- SMP5 (биты 17:15) — Время выборки канала 5: 1,5…601,5 такта АЦП.
- SMP1 (биты 5:3) — Время выборки канала 1: 1,5…601,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: 1,5…601,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 |
| — | LT1 | ||||||||||||||
- HT1 (биты 27:16) — Верхний порог аналогового сторожа 1 (12 бит).
- 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 (биты 7:6) — Внешний запуск инжектированной группы: выключен, по нарастающему, спадающему или обоим фронтам.
- JEXTSEL (биты 5:2) — Источник внешнего запуска инжектированной группы (таблица триггеров в RM0316).
- 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 | — | |||||||||||||
| 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.
- 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 | — | |||||||||||||
| 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.
- 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 | — | |||||||||||||
| 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.
- 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 | — | |||||||||||||
| 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.
- 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:1) — Каналы аналогового сторожа 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:1) — Каналы аналогового сторожа 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:1) — Дифференциальный режим каналов: по биту на канал.
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_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 |
| — | VBATEN | TSEN | VREFEN | — | CKMODE | ||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| MDMA | DMACFG | — | DELAY | — | DUAL | ||||||||||
- VBATEN (бит 24) — Внутренний канал VBAT / 3.
- TSEN (бит 23) — Внутренний канал датчика температуры.
- VREFEN (бит 22) — Внутренний канал опорного напряжения VREFINT.
- 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) — Результат ведущего АЦП в двойном режиме.
Частые вопросы
Почему АЦП STM32F303 не включается после ADEN?
Сначала нужен регулятор: ADVREGEN = 00, затем 01 и пауза около 10 мкс. Затем калибровка — ADCAL = 1 при ADEN = 0 — и ожидание её конца. Только после этого ADEN = 1 и ожидание флага ADRDY.
Чем инжектированная группа отличается от регулярной?
Инжектированная группа (до 4 каналов) прерывает регулярную по своему триггеру и кладёт результаты в отдельные регистры JDR1–JDR4. Её удобно запускать от таймера в момент середины ШИМ, а регулярную группу оставить для медленных измерений.
Источники
- STMicroelectronics. RM0316: Reference manual (Rev 10) — раздел 15.5–15.6: описание регистров, назначение полей и значения после сброса
- STMicroelectronics. cmsis-device-f3 v2.3.9: заголовки CMSIS stm32f303x8.h, stm32f303xc.h, stm32f303xe.h, stm32f328xx.h, stm32f358xx.h, stm32f398xx.h — структуры периферии, смещения, адреса экземпляров и макросы полей; лицензия Apache-2.0
Нашли ошибку в регистрах?
Другие регистры STM32F3
- Все регистры STM32F3Блоки периферии и заголовки CMSIS
- RCC — тактирование и сбросRCC_CR, RCC_CFGR, RCC_CIR, RCC_APB2RSTR, RCC_APB1RSTR, RCC_AHBENR
- GPIO — порты ввода-выводаGPIOx_MODER, GPIOx_OTYPER, GPIOx_OSPEEDR, GPIOx_PUPDR, GPIOx_IDR, GPIOx_ODR
- SYSCFG — системная конфигурацияSYSCFG_CFGR1, SYSCFG_RCR, SYSCFG_EXTICR1, SYSCFG_EXTICR2, SYSCFG_EXTICR3, SYSCFG_EXTICR4
- EXTI — внешние прерыванияEXTI_IMR1, EXTI_EMR1, EXTI_RTSR1, EXTI_FTSR1, EXTI_SWIER1, EXTI_PR1
- USART — последовательные порты USARTUSART_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
- 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_APB1_FZ, DBGMCU_APB2_FZ
- PWR — управление питаниемPWR_CR, PWR_CSR
- FLASH — флеш-памятьFLASH_ACR, FLASH_KEYR, FLASH_OPTKEYR, FLASH_SR, FLASH_CR, FLASH_AR
- 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
- CAN — контроллер CANCAN_MCR, CAN_MSR, CAN_TSR, CAN_RF0R, CAN_RF1R, CAN_IER