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

Регистры АЦП 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.

ЭкземплярБазовый адресЕсть у
ADC10x4001 2400всех
ADC1_COMMON0x4001 2700всех

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

РегистрСмещениеНазначениеПосле сброса
ADC_SR0x00Флаги состояния0x0000 0000
ADC_CR10x04Управление 1: сканирование, сторож, режимы0x0000 0000
ADC_CR20x08Управление 2: включение, запуск, выравнивание, DMA0x0000 0000
ADC_SMPR10x0CВремя выборки каналов 20–290x0000 0000
ADC_SMPR20x10Время выборки каналов 10–190x0000 0000
ADC_SMPR30x14Время выборки каналов 0–90x0000 0000
ADC_JOFR10x18Смещение инжектированного канала 10x0000 0000
ADC_JOFR20x1CСмещение инжектированного канала 20x0000 0000
ADC_JOFR30x20Смещение инжектированного канала 30x0000 0000
ADC_JOFR40x24Смещение инжектированного канала 40x0000 0000
ADC_HTR0x28Верхний порог аналогового сторожа0x0000 0FFF
ADC_LTR0x2CНижний порог аналогового сторожа0x0000 0000
ADC_SQR10x30Длина регулярной последовательности и преобразования 25–280x0000 0000
ADC_SQR20x34Регулярная последовательность, преобразования 19–240x0000 0000
ADC_SQR30x38Регулярная последовательность, преобразования 13–180x0000 0000
ADC_SQR40x3CРегулярная последовательность, преобразования 7–120x0000 0000
ADC_SQR50x40Регулярная последовательность, преобразования 1–60x0000 0000
ADC_JSQR0x44Инжектированная последовательность0x0000 0000
ADC_JDR10x48Результат инжектированного канала 10x0000 0000
ADC_JDR20x4CРезультат инжектированного канала 20x0000 0000
ADC_JDR30x50Результат инжектированного канала 30x0000 0000
ADC_JDR40x54Результат инжектированного канала 40x0000 0000
ADC_DR0x58Результат регулярного преобразования0x0000 0000
ADC_SMPR00x5CВремя выборки каналов 30 и 310x0000 0000
ADC_CSR0x00Общий регистр состояния АЦП0x0000 0000
ADC_CCR0x04Общая настройка: делитель такта и датчик температуры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.

31302928272625242322212019181716
—
1514131211109876543210
—JCNRRCNR—ADONSOVRSTRTJSTRTJEOSEOCSAWD
  • 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.

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

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

31302928272625242322212019181716
—SMP29SMP28SMP27SMP26SMP25
1514131211109876543210
SMP25SMP24SMP23SMP22SMP21SMP20
  • SMP27–SMP29 (по 3 бита на каждый y, положение — на карте битов) — Время выборки канала y (только у STM32L151xC/xCA/xD/xDX/xE, STM32L152xCA/xD/xDX/xE, STM32L162xCA/xD/xDX/xE).
    SMPyЗначение
    0004 такта
    0019 тактов
    01016 тактов
    01124 такта
    10048 тактов
    10196 тактов
    110192 такта
    111384 такта
  • SMP20–SMP26 (по 3 бита на каждый y, положение — на карте битов) — Время выборки канала y.
    SMPyЗначение
    0004 такта
    0019 тактов
    01016 тактов
    01124 такта
    10048 тактов
    10196 тактов
    110192 такта
    111384 такта

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

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

31302928272625242322212019181716
—SMP19SMP18SMP17SMP16SMP15
1514131211109876543210
SMP15SMP14SMP13SMP12SMP11SMP10
  • SMP10–SMP19 (по 3 бита на каждый y, положение — на карте битов) — Время выборки канала y.
    SMPyЗначение
    0004 такта
    0019 тактов
    01016 тактов
    01124 такта
    10048 тактов
    10196 тактов
    110192 такта
    111384 такта

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

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

31302928272625242322212019181716
—SMP9SMP8SMP7SMP6SMP5
1514131211109876543210
SMP5SMP4SMP3SMP2SMP1SMP0
  • SMP0–SMP9 (по 3 бита на каждый y, положение — на карте битов) — Время выборки канала y.
    SMPyЗначение
    0004 такта
    0019 тактов
    01016 тактов
    01124 такта
    10048 тактов
    10196 тактов
    110192 такта
    111384 такта

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ADC_SQR1 — длина регулярной последовательности и преобразования 25–28

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

31302928272625242322212019181716
—LSQ28
1514131211109876543210
SQ28SQ27SQ26SQ25
  • 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.

31302928272625242322212019181716
—SQ24SQ23SQ22
1514131211109876543210
SQ22SQ21SQ20SQ19
  • SQ19–SQ24 (по 5 бита на каждый y, положение — на карте битов) — Канал y-го преобразования регулярной последовательности.

ADC_SQR3 — регулярная последовательность, преобразования 13–18

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

31302928272625242322212019181716
—SQ18SQ17SQ16
1514131211109876543210
SQ16SQ15SQ14SQ13
  • SQ13–SQ18 (по 5 бита на каждый y, положение — на карте битов) — Канал y-го преобразования регулярной последовательности.

ADC_SQR4 — регулярная последовательность, преобразования 7–12

Смещение 0x3C, адрес 0x4001 243C, 32 бит, после сброса 0x0000 0000. В коде: ADC1->SQR4.

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

ADC_SQR5 — регулярная последовательность, преобразования 1–6

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

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

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

Смещение 0x44, адрес 0x4001 2444, 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

31302928272625242322212019181716
—
1514131211109876543210
—SMP31SMP30
  • SMP31 (биты 5:3) — Время выборки канала 31.
    SMP31Значение
    0004 такта
    0019 тактов
    01016 тактов
    01124 такта
    10048 тактов
    10196 тактов
    110192 такта
    111384 такта
  • SMP30 (биты 2:0) — Время выборки канала 30.
    SMP30Значение
    0004 такта
    0019 тактов
    01016 тактов
    01124 такта
    10048 тактов
    10196 тактов
    110192 такта
    111384 такта

ADC_CSR — общий регистр состояния АЦП

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

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

31302928272625242322212019181716
—TSVREFE—ADCPRE
1514131211109876543210
—
  • TSVREFE (бит 23) — Включение датчика температуры и канала VREFINT.
  • ADCPRE (биты 17:16) — Делитель частоты АЦП от HSI: 1, 2 или 4.
    ADCPREЗначение
    00HSI / 1
    01HSI / 2
    10HSI / 4

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

Почему АЦП STM32L1 не работает без HSI?

АЦП всегда тактируется от HSI 16 МГц через ADCPRE, независимо от источника SYSCLK. Включите HSI (RCC_CR.HSION) и дождитесь HSIRDY, даже если система работает от MSI или HSE.

Как получить результаты, если APB медленнее АЦП?

Задайте задержку DELS = 001 в ADC_CR2: следующее преобразование начнётся только после чтения предыдущего результата, и данные не будут перезаписаны.

Источники

  1. STMicroelectronics. RM0038: Reference manual (Rev 18) — раздел 12.15: описание регистров, назначение полей и значения после сброса
  2. 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

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