ADC control register 1 (ADC_CR1)

Первый регистр управления АЦП STM32F10x

Смещение (Address offset): 0x04

Reset value: 0x0000'0000

3130292827262524
Reserved
------------------------
00000000
2322212019181716
AWDEN JAWDEN Reserved DUALMOD[3:0]
rwrw------rwrwrwrw
00000000


15141312111098
DISCNUM[2:0] JDISCEN DISCEN JAUTO AWDSGL SCAN
rwrwrwrwrwrwrwrw
00000000
76543210
JEOCIE AWDIE EOCIE AWDCH[4:0]
rwrwrwrwrwrwrwrw
00000000


Bits 31:24
Reserved
Must be kept at reset value
Зарезервировано. Должно быть сохранено значение после сброса.
Bit 23
AWDEN
Analog watchdog enable on regular channels
Включает аналоговый сторожевой таймер на регулярных каналах:

 0 :  таймер отключен;

 1 :  таймер включен.

Bit 22
JAWDEN
Analog watchdog enable on injected channels
Включает аналоговый сторожевой таймер на инжектированных каналах:

 0 :  таймер отключен;

 1 :  таймер включен.

Bits 21:20
Reserved
Must be kept at reset value
Зарезервировано. Должно быть сохранено значение после сброса.
Bits 19:16
DUALMOD[3:0]
Dual mode selection
Выбор режима работы:

 0000 :  Independent mode - независимый режим

 0001 :  Combined regular simultaneous + injected simultaneous mode

 0010 :  Combined regular simultaneous + alternate trigger mode

 0011 :  Combined injected simultaneous + fast interleaved mode

 0100 :  Combined injected simultaneous + slow Interleaved mode

 0101 :  Injected simultaneous mode only

 0110 :  Regular simultaneous mode only

 0111 :  Fast interleaved mode only

 1000 :  Slow interleaved mode only

 1001 :  Alternate trigger mode only

Только для ADC1. Для ADC2 и ADC3 эти биты зарезервированы. В режиме Dual mode изменение конфигурации канала приводит к перезапуску, что может привести к потере синхронизации. Рекомендуется отключать режим Dual mode перед любым изменением конфигурации.

Bits 15:13
DISCNUM[2:0]
Discontinuous mode channel count
Количество каналов в прерывистом (discontinuous) режиме работы.

Определяет количество регулярных каналов для преобразования в прерывистом режиме работы после получения внешнего сигнала запуска.

 000 :  1 канал

 001 :  2 канала

 ...

 111 :  8 каналов

Bit 12
JDISCEN
Discontinuous mode on injected channels
Прерывистый (discontinuous) режим работы для группы инжектированных каналов

 0 :  прерывистый режим работы запрещён

 1 :  прерывистый режим работы разрешён

Bit 11
DISCEN
Discontinuous mode on regular channels
Прерывистый (discontinuous) режим работы для группы регулярных каналов

 0 :  прерывистый режим работы запрещён

 1 :  прерывистый режим работы разрешён

Bit 10
JAUTO
Automatic Injected Group conversion
Автоматическое преобразование группы инжектированных каналов

Включает автоматическое преобразование группы инжектированных каналов по окончании преобразования группы регулярных каналов.

 0 :  автоматическое преобразование запрещёно

 1 :  автоматическое преобразование разрешёно

Bit 9
AWDSGL
Enable the watchdog on a single channel in scan mode
Включает аналоговый сторожевой таймер для всех каналов или одного канала, определённого в AWDCH[4:0]

 0 :  аналоговый сторожевой таймер включен для всех каналов

 1 :  аналоговый сторожевой таймер включен для одного канала

Bit 8
SCAN
Scan mode
Включает сканирующий режим работы (Scan mode).

В режиме сканирования будут оцифрованы каналы, заданные регистрами ADC_SQRx или ADC_JSQRx.

 0 :  сканирующий режим выключен

 1 :  сканирующий режим включен

Bit 7
JEOCIE
Interrupt enable for injected channels
Разрешает прерывание JEOC для инжектированных каналов по окончании преобразования.

 0 :  прерывание JEOC запрещёно

 1 :  прерывание JEOC разрешёно

Bit 6
AWDIE
Analog watchdog interrupt enable
Разрешает прерывание аналогового сторожевого таймера.

В режиме сканирования (scan mode) при выходе за границы аналогового сторожевого таймера сканирование прерывается только при установленном этом бите.

 0 :  прерывание от аналогового сторожевого таймера запрещёно

 1 :  прерывание от аналогового сторожевого таймера разрешёно

Bit 5
EOCIE
Interrupt enable for EOC
Разрешает прерывание EOC по окончании преобразования.

 0 :  прерывание EOC запрещёно

 1 :  прерывание EOC разрешёно

Bits 4:0
AWDCH[4:0]
Analog watchdog channel select bits
Определяет входной канал, подключаемый к аналоговому сторожевому таймеру

 00000 :  канал 0

 00001 :  канал 1

 ...

 01111 :  канал 15

 10000 :  канал 16

 10001 :  канал 17

Остальные значения не используются

ADC1: аналоговые входы каналов 16 и 17 подключены соответственно к датчику температуры и входному опорному напряжению.

ADC2: аналоговые входы каналов 16 и 17 подключены к Vss ("земля").

ADC3: аналоговые входы каналов 9, 14, 15, 16, 17 подключены к Vss ("земля").



/*******************  Bit definition for ADC_CR1 register  ********************/

#define  ADC_CR1_AWDCH          ((uint32_t)0x0000001F)        /* AWDCH[4:0] bits (Analog watchdog channel select bits) */
#define  ADC_CR1_AWDCH_0        ((uint32_t)0x00000001)        /* Bit 0 */
#define  ADC_CR1_AWDCH_1        ((uint32_t)0x00000002)        /* Bit 1 */
#define  ADC_CR1_AWDCH_2        ((uint32_t)0x00000004)        /* Bit 2 */
#define  ADC_CR1_AWDCH_3        ((uint32_t)0x00000008)        /* Bit 3 */
#define  ADC_CR1_AWDCH_4        ((uint32_t)0x00000010)        /* Bit 4 */

#define  ADC_CR1_EOCIE          ((uint32_t)0x00000020)        /* Interrupt enable for EOC */
#define  ADC_CR1_AWDIE          ((uint32_t)0x00000040)        /* Analog Watchdog interrupt enable */
#define  ADC_CR1_JEOCIE         ((uint32_t)0x00000080)        /* Interrupt enable for injected channels */
#define  ADC_CR1_SCAN           ((uint32_t)0x00000100)        /* Scan mode */
#define  ADC_CR1_AWDSGL         ((uint32_t)0x00000200)        /* Enable the watchdog on a single channel in scan mode */
#define  ADC_CR1_JAUTO          ((uint32_t)0x00000400)        /* Automatic injected group conversion */
#define  ADC_CR1_DISCEN         ((uint32_t)0x00000800)        /* Discontinuous mode on regular channels */
#define  ADC_CR1_JDISCEN        ((uint32_t)0x00001000)        /* Discontinuous mode on injected channels */

#define  ADC_CR1_DISCNUM        ((uint32_t)0x0000E000)        /* DISCNUM[2:0] bits (Discontinuous mode channel count) */
#define  ADC_CR1_DISCNUM_0      ((uint32_t)0x00002000)        /* Bit 0 */
#define  ADC_CR1_DISCNUM_1      ((uint32_t)0x00004000)        /* Bit 1 */
#define  ADC_CR1_DISCNUM_2      ((uint32_t)0x00008000)        /* Bit 2 */

#define  ADC_CR1_DUALMOD        ((uint32_t)0x000F0000)        /* DUALMOD[3:0] bits (Dual mode selection) */
#define  ADC_CR1_DUALMOD_0      ((uint32_t)0x00010000)        /* Bit 0 */
#define  ADC_CR1_DUALMOD_1      ((uint32_t)0x00020000)        /* Bit 1 */
#define  ADC_CR1_DUALMOD_2      ((uint32_t)0x00040000)        /* Bit 2 */
#define  ADC_CR1_DUALMOD_3      ((uint32_t)0x00080000)        /* Bit 3 */

#define  ADC_CR1_JAWDEN         ((uint32_t)0x00400000)        /* Analog watchdog enable on injected channels */
#define  ADC_CR1_AWDEN          ((uint32_t)0x00800000)        /* Analog watchdog enable on regular channels */