ADC control register 1 (ADC_CR1)
Первый регистр управления АЦП STM32F10x
Смещение (Address offset): 0x04
Reset value: 0x0000'0000
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
Reserved | |||||||
--- | --- | --- | --- | --- | --- | --- | --- |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
AWDEN | JAWDEN | Reserved | DUALMOD[3:0] | ||||
rw | rw | --- | --- | rw | rw | rw | rw |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
DISCNUM[2:0] | JDISCEN | DISCEN | JAUTO | AWDSGL | SCAN | ||
rw | rw | rw | rw | rw | rw | rw | rw |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
JEOCIE | AWDIE | EOCIE | AWDCH[4:0] | ||||
rw | rw | rw | rw | rw | rw | rw | rw |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 : таймер отключен;
1 : таймер включен.
0 : таймер отключен;
1 : таймер включен.
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 перед любым изменением конфигурации.
Определяет количество регулярных каналов для преобразования в прерывистом режиме работы после получения внешнего сигнала запуска.
000 : 1 канал
001 : 2 канала
...
111 : 8 каналов
0 : прерывистый режим работы запрещён
1 : прерывистый режим работы разрешён
0 : прерывистый режим работы запрещён
1 : прерывистый режим работы разрешён
Включает автоматическое преобразование группы инжектированных каналов по окончании преобразования группы регулярных каналов.
0 : автоматическое преобразование запрещёно
1 : автоматическое преобразование разрешёно
0 : аналоговый сторожевой таймер включен для всех каналов
1 : аналоговый сторожевой таймер включен для одного канала
В режиме сканирования будут оцифрованы каналы, заданные регистрами ADC_SQRx или ADC_JSQRx.
0 : сканирующий режим выключен
1 : сканирующий режим включен
0 : прерывание JEOC запрещёно
1 : прерывание JEOC разрешёно
В режиме сканирования (scan mode) при выходе за границы аналогового сторожевого таймера сканирование прерывается только при установленном этом бите.
0 : прерывание от аналогового сторожевого таймера запрещёно
1 : прерывание от аналогового сторожевого таймера разрешёно
0 : прерывание EOC запрещёно
1 : прерывание EOC разрешёно
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 */