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


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

 0 :  следующий DMA EOT не завершает передачу

 1 :  следующий DMA EOT завершает передачу

Этот бит используется в режиме приёма мастером, чтобы разрешить генерацию NAСK по окончании приёма.

Bit 11
DMAEN
DMA requests enable
Разрешить запрос DMA

 0 :  запрет запроса DMA

 1 :  разрешает запрос DMA, когда TxE=1 или RxNE =1

Bit 10
ITBUFEN
Buffer interrupt enable
Разрешить прерывание по состоянию аппаратных буферов интерфейса I2C

 0 :  состояния TxE = 1 or RxNE = 1 не вызывают никакого прерывания

 1 :  состояния TxE = 1 or RxNE = 1 вызывают прерывание по событию (Event Interrupt) независимо от состояния DMAEN.

Bit 9
ITEVTEN
Event interrupt enable
Разрешить прерывание по событию

 0 :  прерывание по событию запрещено

 1 :  прерывание по событию разрешено

Прерывание генерируется когда:

 -  SB = 1 (Master)

 -  ADDR = 1 (Master/Slave)

 -  ADD10= 1 (Master)

 -  STOPF = 1 (Slave)

 -  BTF = 1 with no TxE or RxNE event

 -  TxE event to 1 if ITBUFEN = 1

 -  RxNE event to 1 if ITBUFEN = 1

Bit 8
ITERREN
Error interrupt enable
Разрешение прерывания из-за ошибок

 0 :  прерывание по ошибкам запрещено

 1 :  прерывание по ошибкам разрешено

Прерывание генерируется когда:

 -  BERR = 1

 -  ARLO = 1

 -  AF = 1

 -  OVR = 1

 -  PECERR = 1

 -  TIMEOUT = 1

 -  SMBAlert = 1

Bits 7:6
Reserved
Forced by hardware to 0.
Зарезервировано. Аппаратно установлено в "0".
Bits 5:0
FREQ[5:0]
Peripheral clock frequency
Частота тактирования контроллера I2C

Биты должны соответствовать значению тактовой частоты APB, к которой подключен контроллер I2C.

 000000 :  недопустимое значение

 000001 :  недопустимое значение

 000010 :  2 MHz

 000011 :  3 MHz

 ... 

 110010 :  50 MHz

 выше :  недопустимое значение

Поле FREQ используется периферийным устройством для генерации времени настройки и удержания данных в соответствии со спецификациями I2C.

Минимально допустимая частота составляет 2 МГц, максимальная частота ограничена максимальной частотой APB, но в любом случае не может превышать 50 МГц (аппаратные ограничения контроллера).




/*******************  Bit definition for I2C_CR2 register  ********************/
#define  I2C_CR2_FREQ       ((uint16_t)0x003F)     /* FREQ[5:0] bits (Peripheral Clock Frequency) */
#define  I2C_CR2_FREQ_0     ((uint16_t)0x0001)     /* Bit 0 */
#define  I2C_CR2_FREQ_1     ((uint16_t)0x0002)     /* Bit 1 */
#define  I2C_CR2_FREQ_2     ((uint16_t)0x0004)     /* Bit 2 */
#define  I2C_CR2_FREQ_3     ((uint16_t)0x0008)     /* Bit 3 */
#define  I2C_CR2_FREQ_4     ((uint16_t)0x0010)     /* Bit 4 */
#define  I2C_CR2_FREQ_5     ((uint16_t)0x0020)     /* Bit 5 */

#define  I2C_CR2_ITERREN    ((uint16_t)0x0100)     /* Error Interrupt Enable */
#define  I2C_CR2_ITEVTEN    ((uint16_t)0x0200)     /* Event Interrupt Enable */
#define  I2C_CR2_ITBUFEN    ((uint16_t)0x0400)     /* Buffer Interrupt Enable */
#define  I2C_CR2_DMAEN      ((uint16_t)0x0800)     /* DMA Requests Enable */
#define  I2C_CR2_LAST       ((uint16_t)0x1000)     /* DMA Last Transfer */