Перейти к содержанию

Регистры АЦП STM32F7

Регистры трёх 12-битных АЦП STM32F74x/F75x: состояние, разрядность и сторож, запуск регулярной и инжектированной групп, время выборки, последовательности, смещения, результаты и общие настройки двойного и тройного режимов.

АЦП STM32F7 — тот же блок, что у STM32F4: регулярная группа до 16 каналов (SQR1–SQR3), инжектированная до 4 (JSQR), время выборки 3…480 тактов на канал. Такт АЦП = PCLK2 / 2, 4, 6 или 8 (ADCPRE в ADC_CCR). Таблицы триггеров у STM32F7 свои — с TRGO2 таймеров TIM1 и TIM8 (RM0385, таблицы 96 и 97, раздел 15.13).

Датчик температуры и VREFINT включает бит TSVREFE в ADC_CCR, VBAT — бит VBATE.

ЭкземплярБазовый адресЕсть у
ADC10x4001 2000всех
ADC20x4001 2100всех
ADC30x4001 2200всех
ADC0x4001 2300всех
ADC123_COMMON0x4001 2300всех

Регистры блока

РегистрСмещениеНазначениеПосле сброса
ADC_SR0x00Флаги состояния0x0000 0000
ADC_CR10x04Управление 1: сканирование, сторож, режимы0x0000 0000
ADC_CR20x08Управление 2: включение, запуск, выравнивание, DMA0x0000 0000
ADC_SMPR10x0CВремя выборки каналов от 10-го0x0000 0000
ADC_SMPR20x10Время выборки каналов 0–90x0000 0000
ADC_JOFR10x14Смещение инжектированного канала 10x0000 0000
ADC_JOFR20x18Смещение инжектированного канала 20x0000 0000
ADC_JOFR30x1CСмещение инжектированного канала 30x0000 0000
ADC_JOFR40x20Смещение инжектированного канала 40x0000 0000
ADC_HTR0x24Верхний порог аналогового сторожа0x0000 0FFF
ADC_LTR0x28Нижний порог аналогового сторожа0x0000 0000
ADC_SQR10x2CРегулярная последовательность: длина и места 13–160x0000 0000
ADC_SQR20x30Регулярная последовательность: места 7–120x0000 0000
ADC_SQR30x34Регулярная последовательность: места 1–60x0000 0000
ADC_JSQR0x38Инжектированная последовательность0x0000 0000
ADC_JDR10x3CРезультат инжектированного канала 10x0000 0000
ADC_JDR20x40Результат инжектированного канала 20x0000 0000
ADC_JDR30x44Результат инжектированного канала 30x0000 0000
ADC_JDR40x48Результат инжектированного канала 40x0000 0000
ADC_DR0x4CРезультат регулярного преобразования0x0000 0000
ADC_CSR0x00Общие флаги трёх АЦП0x0000 0000
ADC_CCR0x04Общие настройки: делитель, режимы, датчики0x0000 0000
ADC_CDR0x08Данные двойного и тройного режимов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.

31302928272625242322212019181716
—
1514131211109876543210
—OVRSTRTJSTRTJEOCEOCAWD
  • OVR (бит 5) — Переполнение: результат не прочитан вовремя.
  • STRT (бит 4) — Началось преобразование регулярной группы.
  • JSTRT (бит 3) — Началось преобразование инжектированной группы.
  • JEOC (бит 2) — Преобразование инжектированной группы завершено.
  • EOC (бит 1) — Преобразование регулярной группы завершено.
  • AWD (бит 0) — Сработал аналоговый сторож: напряжение вне порогов.

ADC_CR1 — управление 1: сканирование, сторож, режимы

Смещение 0x04, 32 бит, после сброса 0x0000 0000. В коде: ADC1->CR1.

31302928272625242322212019181716
—OVRIERESAWDENJAWDEN—
1514131211109876543210
DISCNUMJDISCENDISCENJAUTOAWDSGLSCANJEOCIEAWDIEEOCIEAWDCH
  • OVRIE (бит 26) — Прерывание по переполнению.
  • RES (биты 25:24) — Разрядность преобразования.
    RESЗначение
    0012 бит (15 тактов ADCCLK)
    0110 бит (13 тактов)
    108 бит (11 тактов)
    116 бит (9 тактов)
  • AWDEN (бит 23) — Аналоговый сторож на регулярных каналах.
  • JAWDEN (бит 22) — Аналоговый сторож на инжектированных каналах.
  • DISCNUM (биты 15:13) — Число каналов за один запуск в прерывистом режиме: DISCNUM + 1.
    DISCNUMЗначение
    0001 канал
    0012 канала
    0103 канала
    0114 канала
    1005 каналов
    1016 каналов
    1107 каналов
    1118 каналов
  • 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.

31302928272625242322212019181716
—SWSTARTEXTENEXTSEL—JSWSTARTJEXTENJEXTSEL
1514131211109876543210
—ALIGNEOCSDDSDMA—CONTADON
  • SWSTART (бит 30) — Программный запуск регулярной группы.
  • EXTEN (биты 29:28) — Внешний запуск регулярной группы и его фронт.
    EXTENЗначение
    00Внешний запуск выключен
    01Нарастающий фронт
    10Спадающий фронт
    11Оба фронта
  • EXTSEL (биты 27:24) — Событие запуска регулярной группы.
    EXTSELЗначение
    0000TIM1 CC1
    0001TIM1 CC2
    0010TIM1 CC3
    0011TIM2 CC2
    0100TIM5 TRGO
    0101TIM4 CC4
    0110TIM3 CC4
    0111TIM8 TRGO
    1000TIM8 TRGO2
    1001TIM1 TRGO
    1010TIM1 TRGO2
    1011TIM2 TRGO
    1100TIM4 TRGO
    1101TIM6 TRGO
    1111EXTI11
  • JSWSTART (бит 22) — Программный запуск инжектированной группы.
  • JEXTEN (биты 21:20) — Внешний запуск инжектированной группы и его фронт.
    JEXTENЗначение
    00Внешний запуск выключен
    01Нарастающий фронт
    10Спадающий фронт
    11Оба фронта
  • JEXTSEL (биты 19:16) — Событие запуска инжектированной группы.
    JEXTSELЗначение
    0000TIM1 TRGO
    0001TIM1 CC4
    0010TIM2 TRGO
    0011TIM2 CC1
    0100TIM3 CC4
    0101TIM4 TRGO
    0111TIM8 CC4
    1000TIM1 TRGO2
    1001TIM8 TRGO
    1010TIM8 TRGO2
    1011TIM3 CC3
    1100TIM5 TRGO
    1101TIM3 CC1
    1110TIM6 TRGO
  • 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.

31302928272625242322212019181716
—SMP18SMP17SMP16SMP15
1514131211109876543210
SMP15SMP14SMP13SMP12SMP11SMP10
  • SMP10–SMP18 (по 3 бита на каждый y, положение — на карте битов) — Время выборки канала y.
    SMPyЗначение
    0003 тактов
    00115 тактов
    01028 тактов
    01156 тактов
    10084 тактов
    101112 тактов
    110144 тактов
    111480 тактов

ADC_SMPR2 — время выборки каналов 0–9

Смещение 0x10, 32 бит, после сброса 0x0000 0000. В коде: ADC1->SMPR2.

31302928272625242322212019181716
—SMP9SMP8SMP7SMP6SMP5
1514131211109876543210
SMP5SMP4SMP3SMP2SMP1SMP0
  • SMP0–SMP9 (по 3 бита на каждый y, положение — на карте битов) — Время выборки канала y.
    SMPyЗначение
    0003 тактов
    00115 тактов
    01028 тактов
    01156 тактов
    10084 тактов
    101112 тактов
    110144 тактов
    111480 тактов

ADC_JOFR1 — смещение инжектированного канала 1

Смещение 0x14, 32 бит, после сброса 0x0000 0000. В коде: ADC1->JOFR1.

31302928272625242322212019181716
—
1514131211109876543210
—JOFFSET1
  • JOFFSET1 (биты 11:0) — Смещение, вычитаемое из результата инжектированного канала 1.

ADC_JOFR2 — смещение инжектированного канала 2

Смещение 0x18, 32 бит, после сброса 0x0000 0000. В коде: ADC1->JOFR2.

31302928272625242322212019181716
—
1514131211109876543210
—JOFFSET2
  • JOFFSET2 (биты 11:0) — Смещение, вычитаемое из результата инжектированного канала 2.

ADC_JOFR3 — смещение инжектированного канала 3

Смещение 0x1C, 32 бит, после сброса 0x0000 0000. В коде: ADC1->JOFR3.

31302928272625242322212019181716
—
1514131211109876543210
—JOFFSET3
  • JOFFSET3 (биты 11:0) — Смещение, вычитаемое из результата инжектированного канала 3.

ADC_JOFR4 — смещение инжектированного канала 4

Смещение 0x20, 32 бит, после сброса 0x0000 0000. В коде: ADC1->JOFR4.

31302928272625242322212019181716
—
1514131211109876543210
—JOFFSET4
  • JOFFSET4 (биты 11:0) — Смещение, вычитаемое из результата инжектированного канала 4.

ADC_HTR — верхний порог аналогового сторожа

Смещение 0x24, 32 бит, после сброса 0x0000 0FFF. В коде: ADC1->HTR.

31302928272625242322212019181716
—
1514131211109876543210
—HT
  • HT (биты 11:0) — Верхний порог аналогового сторожа.

ADC_LTR — нижний порог аналогового сторожа

Смещение 0x28, 32 бит, после сброса 0x0000 0000. В коде: ADC1->LTR.

31302928272625242322212019181716
—
1514131211109876543210
—LT
  • LT (биты 11:0) — Нижний порог аналогового сторожа.

ADC_SQR1 — регулярная последовательность: длина и места 13–16

Смещение 0x2C, 32 бит, после сброса 0x0000 0000. В коде: ADC1->SQR1.

31302928272625242322212019181716
—LSQ16
1514131211109876543210
SQ16SQ15SQ14SQ13
  • L (биты 23:20) — Число преобразований регулярной группы: L + 1.
  • SQ13–SQ16 (по 5 бита на каждый y, положение — на карте битов) — Номер канала на y-м месте регулярной последовательности.

ADC_SQR2 — регулярная последовательность: места 7–12

Смещение 0x30, 32 бит, после сброса 0x0000 0000. В коде: ADC1->SQR2.

31302928272625242322212019181716
—SQ12SQ11SQ10
1514131211109876543210
SQ10SQ9SQ8SQ7
  • SQ7–SQ12 (по 5 бита на каждый y, положение — на карте битов) — Номер канала на y-м месте регулярной последовательности.

ADC_SQR3 — регулярная последовательность: места 1–6

Смещение 0x34, 32 бит, после сброса 0x0000 0000. В коде: ADC1->SQR3.

31302928272625242322212019181716
—SQ6SQ5SQ4
1514131211109876543210
SQ4SQ3SQ2SQ1
  • SQ1–SQ6 (по 5 бита на каждый y, положение — на карте битов) — Номер канала на y-м месте регулярной последовательности.

ADC_JSQR — инжектированная последовательность

Смещение 0x38, 32 бит, после сброса 0x0000 0000. В коде: ADC1->JSQR.

31302928272625242322212019181716
—JLJSQ4
1514131211109876543210
JSQ4JSQ3JSQ2JSQ1
  • 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.

31302928272625242322212019181716
—
1514131211109876543210
JDATA
  • JDATA (биты 15:0) — Результат инжектированного канала за вычетом смещения JOFFSET.

ADC_JDR2 — результат инжектированного канала 2

Смещение 0x40, 32 бит, после сброса 0x0000 0000. В коде: ADC1->JDR2.

31302928272625242322212019181716
—
1514131211109876543210
JDATA
  • JDATA (биты 15:0) — Результат инжектированного канала за вычетом смещения JOFFSET.

ADC_JDR3 — результат инжектированного канала 3

Смещение 0x44, 32 бит, после сброса 0x0000 0000. В коде: ADC1->JDR3.

31302928272625242322212019181716
—
1514131211109876543210
JDATA
  • JDATA (биты 15:0) — Результат инжектированного канала за вычетом смещения JOFFSET.

ADC_JDR4 — результат инжектированного канала 4

Смещение 0x48, 32 бит, после сброса 0x0000 0000. В коде: ADC1->JDR4.

31302928272625242322212019181716
—
1514131211109876543210
JDATA
  • JDATA (биты 15:0) — Результат инжектированного канала за вычетом смещения JOFFSET.

ADC_DR — результат регулярного преобразования

Смещение 0x4C, 32 бит, после сброса 0x0000 0000. В коде: ADC1->DR.

31302928272625242322212019181716
ADC2DATA
1514131211109876543210
DATA
  • ADC2DATA (биты 31:16) — По RM0385 биты зарезервированы; данные ADC2 в двойном режиме — в ADC_CDR.
  • DATA (биты 15:0) — Результат регулярного преобразования.

ADC_CSR — общие флаги трёх АЦП

Смещение 0x00, 32 бит, после сброса 0x0000 0000. В коде: ADC->CSR.

31302928272625242322212019181716
—OVR3STRT3JSTRT3JEOC3EOC3AWD3
1514131211109876543210
—OVR2STRT2JSTRT2JEOC2EOC2AWD2—OVR1STRT1JSTRT1JEOC1EOC1AWD1
  • 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, 32 бит, после сброса 0x0000 0000. В коде: ADC->CCR.

31302928272625242322212019181716
—TSVREFEVBATE—ADCPRE
1514131211109876543210
DMADDS—DELAY—MULTI
  • TSVREFE (бит 23) — Включение датчика температуры и канала VREFINT.
  • VBATE (бит 22) — Включение канала VBAT.
  • ADCPRE (биты 17:16) — Делитель частоты всех АЦП от PCLK2.
    ADCPREЗначение
    00PCLK2 / 2
    01PCLK2 / 4
    10PCLK2 / 6
    11PCLK2 / 8
  • DMA (биты 15:14) — Режим DMA в двойном и тройном режимах.
    DMAЗначение
    00Выключен
    01Режим 1: полуслова по одному
    10Режим 2: полуслова парами
    11Режим 3: байты парами
  • DDS (бит 13) — Запросы DMA многоканального режима после последней передачи: прекращаются или продолжаются.
  • DELAY (биты 11:8) — Пауза между выборками в чередующемся режиме: 5–20 тактов ADCCLK.
    DELAYЗначение
    00005 тактов ADCCLK
    00016 тактов ADCCLK
    00107 тактов ADCCLK
    00118 тактов ADCCLK
    01009 тактов ADCCLK
    010110 тактов ADCCLK
    011011 тактов ADCCLK
    011112 тактов ADCCLK
    100013 тактов ADCCLK
    100114 тактов ADCCLK
    101015 тактов ADCCLK
    101116 тактов ADCCLK
    110017 тактов ADCCLK
    110118 тактов ADCCLK
    111019 тактов ADCCLK
    111120 тактов ADCCLK
  • MULTI (биты 4:0) — Совместная работа АЦП: независимо, двойной или тройной режим.
    MULTIЗначение
    00000Все АЦП независимы
    00001Двойной: одновременные регулярные + одновременные инжектированные
    00010Двойной: одновременные регулярные + поочерёдный запуск
    00101Двойной: только одновременные инжектированные
    00110Двойной: только одновременные регулярные
    00111Двойной: только чередование
    01001Двойной: только поочерёдный запуск
    10001Тройной: одновременные регулярные + одновременные инжектированные
    10010Тройной: одновременные регулярные + поочерёдный запуск
    10101Тройной: только одновременные инжектированные
    10110Тройной: только одновременные регулярные
    10111Тройной: только чередование
    11001Тройной: только поочерёдный запуск

ADC_CDR — данные двойного и тройного режимов

Смещение 0x08, 32 бит, после сброса 0x0000 0000. В коде: ADC->CDR.

31302928272625242322212019181716
DATA2
1514131211109876543210
DATA1
  • DATA2 (биты 31:16) — Второе значение пары: в двойном режиме — данные ADC2.
  • DATA1 (биты 15:0) — Первое значение пары: в двойном режиме — данные ADC1.

Частые вопросы

Как запускать АЦП STM32F7 от TIM2?

Настройте TIM2 с MMS = 010 (TRGO по обновлению), в ADC_CR2 задайте EXTSEL = 1011 (TIM2 TRGO по таблице 96 RM0385) и EXTEN = 01 (нарастающий фронт).

Источники

  1. STMicroelectronics. RM0385: Reference manual (Rev 9) — раздел 15.13: описание регистров, назначение полей и значения после сброса
  2. STMicroelectronics. cmsis-device-f7 v1.2.10: заголовки CMSIS stm32f745xx.h, stm32f746xx.h, stm32f750xx.h, stm32f756xx.h — структуры периферии, смещения, адреса экземпляров и макросы полей; лицензия Apache-2.0

Нашли ошибку в регистрах?

Другие регистры STM32F7

Калькуляторы и статьи