I2C Control register 2 (I2C_CR2)

Второй регистр управления интерфейсом I2C

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

Reset value: 0x0000

15141312111098
Reserved LAST DMAEN ITBUFEN ITEVTEN ITERREN
---------rwrwrwrwrw
00000000
76543210
Reserved FREQ[5:0]
------rwrwrwrwrwrw
00000000


Bit 15:13
Reserved
Must be kept at reset value
Зарезервировано. Должно быть сохранено значение после сброса
Bit 12
LAST
DMA last transfer
Окончание передачи DMA.

 0 :  устанавливает сигнал SMBA на высокий уровень. От ведомого устройства нет запроса на обмен с ведущим. При получении обращения от ведущего устройства ведомое не подтверждает обмен.

 1 :  устанавливает сигнал SMBA на низкий уровень, формируя запрос к ведущему на обмен. При получении обращения от ведущего устройства ведомое подтверждает обмен.

Этот бит используется в режиме приёма мастером.

Bit 12
PEC
Packet error checking

 0 : 

 1 : 

Bit 11
POS
Acknowledge/PEC Position (for data reception)

 0 : 

 1 : 

Bit 10
ACK
Acknowledge enable
Разрешает возврат подтверждения после приёма

Устанавливается и сбрасывается программно. Сбрасывается аппаратно при PE=0.

 0 :  нет возврата подтверждения

 1 :  подтверждение возвращается после получения байта (при совпадении адреса или данных)

Bit 9
STOP
Stop generation

Устанавливается и сбрасывается программно. Сбрасывается аппаратно при обнаружении состояния Stop. Устанавливается аппаратно при обнаружении ошибки тайм-аута.

 00 : Режим выравнивания по краям. Счетчик ведет отсчет вверх или вниз в зависимости от бита направления (DIR).

 01 : Режим выравнивания по центру 1. Счетчик ведет попеременный отсчет вверх и вниз. Флаги прерывания сравнения выходных данных для каналов, настроенных на вывод (регистр CCxS=00 в TIMx_CCMRx), устанавливаются только тогда, когда счетчик ведет обратный отсчет (вниз).

 10 : Режим выравнивания по центру 2. Счетчик ведет попеременный отсчет вверх и вниз. Флаги прерывания сравнения выходных данных для каналов, настроенных на вывод (регистр CCxS=00 в TIMx_CCMRx), устанавливаются только тогда, когда счетчик ведет прямой отсчет (вверх).

 11 : Режим выравнивания по центру 3. Счетчик ведет попеременный отсчет вверх и вниз. Флаги прерывания сравнения выходных данных для каналов, настроенных на вывод (регистр CCxS=00 в TIMx_CCMRx), устанавливаются, когда счетчик ведет как прямой, так и обратный отсчет.

Bit 4
DIR
Direction
Направление счета

 0 : прямой счет (вверх)

 1 : обратный счет (вниз)

Bit 3
OPM
One-pulse mode
Режим одного импульса

 0 : счетчик не останавливается при обновлении

 1 : счетчик останавливается при обновлении (очищается бит CEN)

Bit 2
URS
Update request source
Источник запроса на обновление счетчика

 0 : следующие события (если включены) генерируют прерывания для обновления счетчика или запрос DMA:

- окончание прямого или обратного счета (overflow/underflow)

- установка бита UG

- генерация сигнала на обновление счетчика через контроллер подчинённого режима.

 1 : только окончание прямого или обратного счета (overflow/underflow) генерирует прерывания для обновления счетчика или запрос DMA.

Bit 1
UDIS
Update disable
Запрет обновления счетчика

 0 : Событие обновления (UEV) генерируется при:

- окончание прямого или обратного счета (overflow/underflow)

- установка бита UG

- генерация сигнала на обновление счетчика через контроллер подчинённого режима.

 1 : События обновления не генерируются. Теневый регистры сохраняют свои значения (TIMx_ARR, TIMx_PSC, TIMx_CCRx). Однако счетчик и прескалер повторно инициализируются, если установлен бит UG, или если от контроллера ведомого режима получен аппаратный сброс.

Bit 0
CEN
Counter enable
Разрешение работы счетчика

 0 : стчетчик отключен

 1 : стчетчик включен

CEN автоматически сбрасывается в одноимпульсном режиме при возникновении события обновления.

Режим счета внешних импульсов (external clock), стробирующий режим (gated mode) и режим энкодера (encoder mode) будут работать только при программно установленом бите CEN. В режиме триггера (trigger mode) бит CEN может быть установлен автоматически аппаратно.




/*******************  Bit definition for TIM_CR1 register  ********************/
#define  TIM_CR1_CEN                ((uint16_t)0x0001)            /* Counter enable */
#define  TIM_CR1_UDIS               ((uint16_t)0x0002)            /* Update disable */
#define  TIM_CR1_URS                ((uint16_t)0x0004)            /* Update request source */
#define  TIM_CR1_OPM                ((uint16_t)0x0008)            /* One pulse mode */
#define  TIM_CR1_DIR                ((uint16_t)0x0010)            /* Direction */

#define  TIM_CR1_CMS                ((uint16_t)0x0060)            /* CMS[1:0] bits (Center-aligned mode selection) */
#define  TIM_CR1_CMS_0              ((uint16_t)0x0020)            /* Bit 0 */
#define  TIM_CR1_CMS_1              ((uint16_t)0x0040)            /* Bit 1 */

#define  TIM_CR1_ARPE               ((uint16_t)0x0080)            /* Auto-reload preload enable */

#define  TIM_CR1_CKD                ((uint16_t)0x0300)            /* CKD[1:0] bits (clock division) */
#define  TIM_CR1_CKD_0              ((uint16_t)0x0100)            /* Bit 0 */
#define  TIM_CR1_CKD_1              ((uint16_t)0x0200)            /* Bit 1 */