I2C Status register 2 (I2C_SR2)

Второй регистр состояния интерфейса I2C

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

Reset value: 0x0000

15141312111098
PEC[7:0]
r
00000000
76543210
DUALF SMBHOST SMBDEFAULT GENCALL Reserved TRA BUSY MSL
rrrr---rrr
00000000


Чтение I2C_SR2 после чтения I2C_SR1 снимает флаг ADDR, даже если флаг ADDR был установлен после чтения I2C_SR1. Следовательно I2C_SR2 должен быть прочитан только когда установлен бит ADDR в регистре I2C_SR1 или когда сброшен бит STOPF в регистре I2C_SR1



Биты
Имя
Описание
15:8
PEC[7:0]
Packet error checking register
Регистр проверки пакетов на ошибки

Содержит значение вычисленной контрольной суммы PEC, когда ENPEC=1 в регистре CR1.

7
DUALF
Dual flag (Slave mode)
Флаг совпадения принятого адреса (в slave-режиме)

 0 :  принятый адрес совпадает с OAR1

 1 :  принятый адрес совпадает с OAR2

Очищается аппаратно после выполнения условия STOP, или повторного START, или при отключении интерфейса (PE=0 в регистре CR1)

6
SMBHOST
SMBus host header (Slave mode)
Заголовок хоста SMBus (в slave-режиме)

 0 :  нет адреса хоста SMBus

 1 :  принят адрес хоста SMBus, когда SMBTYPE=1 и ENARP=1 в регистре CR1.

Очищается аппаратно после выполнения условия STOP, или повторного START, или при отключении интерфейса (PE=0 в регистре CR1)

5
SMBDEFAULT
SMBus device default address (Slave mode)
Адрес по-умолчанию устройства SMBus (в slave-режиме)

 0 :  нет адреса по-умолчанию устройства SMBus

 1 :  принят адрес по-умолчанию устройства SMBus, когда ENARP=1 в регистре CR1.

Очищается аппаратно после выполнения условия STOP, или повторного START, или при отключении интерфейса (PE=0 в регистре CR1)

4
GENCALL
General call address (Slave mode)
Адрес общего вызова (в slave-режиме)

 0 :  нет адреса общего вызова устройства SMBus

 1 :  принят адреса общего вызова (широковещательный) устройства SMBus, когда ENGC=1 в регистре CR1.

Очищается аппаратно после выполнения условия STOP, или повторного START, или при отключении интерфейса (PE=0 в регистре CR1)

3
Reserved
Must be kept at reset value
Зарезервировано. Должно быть сохранено значение после сброса
2
TRA
Transmitter/receiver
Передача/приём

 0 :  принимаемый байт данных

 1 :  передаваемый байт данных

Этот бит устанавливается в зависимости от разряда R/W адресного байта в конце фазы общего адреса.

Очищается аппаратно после обнаружения состояния остановки (STOPF=1 в регистре I2C_SR1), повторного запуска, проигранного арбитража (ARLO=1 в регистре I2C_SR1), или при отключении интерфейса (PE=0 в регистре CR1).

1
BUSY
Bus busy
Шина занята

По шине выполняется обмен данными.

 0 :  нет связи, шина свободна

 1 :  обмен данными по шине, шина занята

Устанавливается аппаратно при обнаружении низкого уровня SDA или SCL

Cбрасывается аппаратно при обнаружении состояния STOP.

Бит обновляется даже когда интерфейс I2C отключен (PE=0 в регистре CR1).

0
MSL
Master/slave
Режим master/slave

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