AT32F425
Series Reference Manual
2022.03.30
Page 117
Ver 2.01
Slave address masking capability
The Slave address 2 (OADDR2) is maskable, which is done by setting the ADDR2MASK[2: 0].
―
0
: Address bit [7: 1]
―
1: Address bit [7: 2]
―
2: Address bit [7: 3]
―
3: Address bit [7: 4]
―
4: Address bit [7: 5]
―
5: Address bit [7: 6]
―
6: Address bit [7]
―
7: All addresses, excluding those reserved by I
2
C
Support special slave address:
Broadcast call address (0b0000000x): This address is enabled when GCAEN=1.
SMBus device default address (0b1100001x): This address is enabled for SMBus address
resolution protocol in SMBus device mode.
SMBus master default address (0b0001000x): This address is enabled for SMBus master
notification protocol in SMBus master mode (DEVADDREN=1).
SMBus alert address (0b0001100x): This address is enabled for SMBus alert response address
protocol in SMBus master mode when SMBALERT = 1.
Refer to SMBus2.0 protocol for more information.
Slave address matching procedure:
Receive a Start condition
Address matching
The slave sends an ACK if address is matched.
ADDR7F is set, with SIDR indicating the transmission direction
―
When SIDR =0, slave enters receiver mode, starting receiving data.
―
When SIDR =1, slave enters transmitter mode, starting transmitting data
5. Clock stretching capability
Clock stretching is enabled by default (STRETCH=0 in the I2C_CTRL1 register). The slave can hold the
SCL line low for software operation. If the clock stretching capability is not supported by master, then
the STRETCH must be set in the I2C_CTRL register. It should be noted that the clock stretching
capability of I
2
C slave must be configured before the I
2
C peripherals are enabled.
Clock stretching capability enabled
I
2
C slave stretches the SCL clock in one of the following conditions:
Address reception: When the address received by slave matches the local address enabled
(ADDRF=1 in the I2C_STS), the SCL line is pulled down until the ADDRF is cleared by setting the
ADDRC in the I2C_CLR
Data reception: When the shift register has received another new byte before the data in the
I2C_RXDT register is read, the I2C will hold the SCL bus low to wait for the software to read
I2C_RXDT register
Data transmission: If no data is written when the ADDRF is cleared, TDBE= 1 in the I2C_STS,
then the SCL line will be pulled down until the data is written to the I2C_TXDT
Data transmission: If no data is writtento to the I2C_TXDT after the completion of the previous
data transfer, the SCL line will be pulled down until data is written to the I2C_TXDT
When slave data control mode is selected (SCTRL=1 in the I2C_CTRL1) and RLDEN=1 in the
I2C_CTRL2 register, if TCRLD = 1, indicating the completion of the last data transfer, then the
TCRLD will be cleared by hardware so as to release the SCL line before a non-zero value is written to
the CNT bit in the I2C_CTRL2 register
Clock stretching capability disabled
The SCL clock is disabled when STRETCH=1 in the I2C_CTRL1 register, with the following conditions
worth our notice: