I2C Status register 2 (I2C_SR2)
Второй регистр состояния интерфейса I2C
Смещение (Address offset): 0x18
Reset value: 0x0000
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
| PEC[7:0] | |||||||
| r | |||||||
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| DUALF | SMBHOST | SMBDEFAULT | GENCALL | Reserved | TRA | BUSY | MSL |
| r | r | r | r | --- | r | r | r |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Чтение I2C_SR2 после чтения I2C_SR1 снимает флаг ADDR, даже если флаг ADDR был установлен после чтения I2C_SR1. Следовательно I2C_SR2 должен быть прочитан только когда установлен бит ADDR в регистре I2C_SR1 или когда сброшен бит STOPF в регистре I2C_SR1
Содержит значение вычисленной контрольной суммы PEC, когда ENPEC=1 в регистре CR1.
0 : принятый адрес совпадает с OAR1
1 : принятый адрес совпадает с OAR2
Очищается аппаратно после выполнения условия STOP, или повторного START, или при отключении интерфейса (PE=0 в регистре CR1)
0 : нет адреса хоста SMBus
1 : принят адрес хоста SMBus, когда SMBTYPE=1 и ENARP=1 в регистре CR1.
Очищается аппаратно после выполнения условия STOP, или повторного START, или при отключении интерфейса (PE=0 в регистре CR1)
0 : нет адреса по-умолчанию устройства SMBus
1 : принят адрес по-умолчанию устройства SMBus, когда ENARP=1 в регистре CR1.
Очищается аппаратно после выполнения условия STOP, или повторного START, или при отключении интерфейса (PE=0 в регистре CR1)
0 : нет адреса общего вызова устройства SMBus
1 : принят адреса общего вызова (широковещательный) устройства SMBus, когда ENGC=1 в регистре CR1.
Очищается аппаратно после выполнения условия STOP, или повторного START, или при отключении интерфейса (PE=0 в регистре CR1)
0 : принимаемый байт данных
1 : передаваемый байт данных
Этот бит устанавливается в зависимости от разряда R/W адресного байта в конце фазы общего адреса.
Очищается аппаратно после обнаружения состояния остановки (STOPF=1 в регистре I2C_SR1), повторного запуска, проигранного арбитража (ARLO=1 в регистре I2C_SR1), или при отключении интерфейса (PE=0 в регистре CR1).
По шине выполняется обмен данными.
0 : нет связи, шина свободна
1 : обмен данными по шине, шина занята
Устанавливается аппаратно при обнаружении низкого уровня SDA или SCL
Cбрасывается аппаратно при обнаружении состояния STOP.
Бит обновляется даже когда интерфейс I2C отключен (PE=0 в регистре CR1).
0 : slave-режим
1 : master-режим
Устанавливается аппаратно, как только интерфейс переходит в режим master, устанавливая сотояние START (SB=1 в регистре I2C_SR1).
Сбрасывается аппаратно после обнаружения состояния STOP на шине, или проигрыша арбитража (ARLO=1 в регистре I2C_SR1), или при отключении интерфейса (PE=0 в регистре I2C_CR1).
/******************* Bit definition for I2C_SR2 register ********************/
#define I2C_SR2_MSL ((uint16_t)0x0001) /* Master/Slave */
#define I2C_SR2_BUSY ((uint16_t)0x0002) /* Bus Busy */
#define I2C_SR2_TRA ((uint16_t)0x0004) /* Transmitter/Receiver */
#define I2C_SR2_GENCALL ((uint16_t)0x0010) /* General Call Address (Slave mode) */
#define I2C_SR2_SMBDEFAULT ((uint16_t)0x0020) /* SMBus Device Default Address (Slave mode) */
#define I2C_SR2_SMBHOST ((uint16_t)0x0040) /* SMBus Host Header (Slave mode) */
#define I2C_SR2_DUALF ((uint16_t)0x0080) /* Dual Flag (Slave mode) */
#define I2C_SR2_PEC ((uint16_t)0xFF00) /* Packet Error Checking Register */