I2C Control register 1 (I2C_CR1)

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

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

Reset value: 0x0000

15141312111098
SWRST Reserved ALERT PEC POS ACK STOP START
rw---rwrwrwrwrwrw
00000000
76543210
NOSTRETCH ENGC ENPEC ENARP SMBTYPE Reserved SMBUS PE
rwrwrwrwrw---rwrw
00000000


Bit 15
SWRST
Software reset
Программный сброс

При установке бита происходит программный сброс интерфейса I2C. Перед сбросом убедиться, что шина свободна.

Можно использовать для повторной инициализации устройства после ошибки или из состояния блокировки. Например: бит BUSY установлен и не сбрасывается из-за сбоя в работе шины.

 0 :  интерфейс I2C не находится в состоянии сброса

 1 :  сброс I2C. Интерфейс I2C находится в состоянии сброса

Bit 14
Reserved
Must be kept at reset value
Зарезервировано. Должно быть сохранено значение после сброса
Bit 13
ALERT
SMBus alert
Дополнительный сигнал с линией прерывания для подчинённых устройств, которые хотят передать мастеру сообщение.

Управляется программно, а так же сбрасывается аппаратно, когда PE=0.

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

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

Состояние обмена по SMBus с использованием сигнала Alert идентифицируется битом SMBALERT в регистре I2C_SR1.

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 */