I2C Control register 1 (I2C_CR1)
Первый регистр управления интерфейсом I2C
Смещение (Address offset): 0x00
Reset value: 0x0000
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
SWRST | Reserved | ALERT | PEC | POS | ACK | STOP | START |
rw | --- | rw | rw | rw | rw | rw | rw |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
NOSTRETCH | ENGC | ENPEC | ENARP | SMBTYPE | Reserved | SMBUS | PE |
rw | rw | rw | rw | rw | --- | rw | rw |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
При установке бита происходит программный сброс интерфейса I2C. Перед сбросом убедиться, что шина свободна.
Можно использовать для повторной инициализации устройства после ошибки или из состояния блокировки. Например: бит BUSY установлен и не сбрасывается из-за сбоя в работе шины.
0 : интерфейс I2C не находится в состоянии сброса
1 : сброс I2C. Интерфейс I2C находится в состоянии сброса
Управляется программно, а так же сбрасывается аппаратно, когда PE=0.
0 : устанавливает сигнал SMBA на высокий уровень. От ведомого устройства нет запроса на обмен с ведущим. При получении обращения от ведущего устройства ведомое не подтверждает обмен.
1 : устанавливает сигнал SMBA на низкий уровень, формируя запрос к ведущему на обмен. При получении обращения от ведущего устройства ведомое подтверждает обмен.
Состояние обмена по SMBus с использованием сигнала Alert идентифицируется битом SMBALERT в регистре I2C_SR1.
0 :
1 :
0 :
1 :
Устанавливается и сбрасывается программно. Сбрасывается аппаратно при PE=0.
0 : нет возврата подтверждения
1 : подтверждение возвращается после получения байта (при совпадении адреса или данных)
Устанавливается и сбрасывается программно. Сбрасывается аппаратно при обнаружении состояния Stop. Устанавливается аппаратно при обнаружении ошибки тайм-аута.
00 : Режим выравнивания по краям. Счетчик ведет отсчет вверх или вниз в зависимости от бита направления (DIR).
01 : Режим выравнивания по центру 1. Счетчик ведет попеременный отсчет вверх и вниз. Флаги прерывания сравнения выходных данных для каналов, настроенных на вывод (регистр CCxS=00 в TIMx_CCMRx), устанавливаются только тогда, когда счетчик ведет обратный отсчет (вниз).
10 : Режим выравнивания по центру 2. Счетчик ведет попеременный отсчет вверх и вниз. Флаги прерывания сравнения выходных данных для каналов, настроенных на вывод (регистр CCxS=00 в TIMx_CCMRx), устанавливаются только тогда, когда счетчик ведет прямой отсчет (вверх).
11 : Режим выравнивания по центру 3. Счетчик ведет попеременный отсчет вверх и вниз. Флаги прерывания сравнения выходных данных для каналов, настроенных на вывод (регистр CCxS=00 в TIMx_CCMRx), устанавливаются, когда счетчик ведет как прямой, так и обратный отсчет.
0 : прямой счет (вверх)
1 : обратный счет (вниз)
0 : счетчик не останавливается при обновлении
1 : счетчик останавливается при обновлении (очищается бит CEN)
0 : следующие события (если включены) генерируют прерывания для обновления счетчика или запрос DMA:
- окончание прямого или обратного счета (overflow/underflow)
- установка бита UG
- генерация сигнала на обновление счетчика через контроллер подчинённого режима.
1 : только окончание прямого или обратного счета (overflow/underflow) генерирует прерывания для обновления счетчика или запрос DMA.
0 : Событие обновления (UEV) генерируется при:
- окончание прямого или обратного счета (overflow/underflow)
- установка бита UG
- генерация сигнала на обновление счетчика через контроллер подчинённого режима.
1 : События обновления не генерируются. Теневый регистры сохраняют свои значения (TIMx_ARR, TIMx_PSC, TIMx_CCRx). Однако счетчик и прескалер повторно инициализируются, если установлен бит UG, или если от контроллера ведомого режима получен аппаратный сброс.
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 */