
M0A21/M0A23 Series
May 06, 2022
Page
570
of 746
Rev 1.02
M0
A21
/M
0
A
2
3
SE
RIES
TEC
H
NICAL
RE
FEREN
C
E
M
ANUAL
Figure 6.15-4 shows the waveform of START, Repeat START and STOP.
STOP
SDA
SCL
START
Repeated
START
START
STOP
Figure 6.15-4 START and STOP Conditions
Slave Address Transfer
After a (repeated) start condition, the master sends a slave address to identify the target device of the
communication. The start address can comprise one or two address bytes (for 7-bit or for 10-bit
addressing schemes). After an address byte, a slave sensitive to the transmitted address has to
acknowledge the reception.
Therefore, the slave’s address can be programmed in the device, where it is compared to the received
address. In case of a match, the slave answers with an acknowledge (SDA = 0). Slaves that are not
targeted answer with a non-acknowledge (SDA = 1). In addition to the match of the programmed
address, another address byte value has to be answered with an acknowledge if the slave is capable to
handle the corresponding requests. The address byte 00H indicates a general call address that can be
acknowledged.
In order to allow selective acknowledges for the different values of the address byte(s), the following
control mechanism is implemented:
If the GCFUNC bit (UI2C_PROTCTL [0]) is set the I
2
C port hardware will respond to
General Call address (00H). Clear GC bit to disable general call function.
The I
2
C port is equipped with one device address registers, UI2C_DEVADDRn (n = 0~1).
In 7-bit address mode, the first 7 bits of a received first address byte are compared to the
programmed slave address (UI2C_DEVADDRn [6:0]). If these bits match, the slave
sends an acknowledge.
For 10 bit addressing mode, if the slave address is programmed to 1111 0XXB, the XX
bits are compared to the bits UI2C_DEVADDR [9:8] to check for address match and also
sends an acknowledge when ADDR10EN (UI2C_PROTCTL [4]) is set. The slave waits
for a second address byte compares it with UI2C_DEVADDR [7:0] and sends an
acknowledge accordingly to cover the 10 bit addressing mode. The user has to take care
about reserved addresses (refer to I
2
C specification for more detailed description). Only
the address 1111 0XXB is supported. Under each of these conditions, bit SLASEL
(UI2C_PROTSTS [14]) will be set when the addressing delivered a match. This SLASEL
(UI2C_PROTSTS [14]) bit is cleared automatically by a (Repeated) START or STOP
condition.
The I
2
C port is equipped multiple address recognition with one address mask registers
UI2C_ADDRMSKn (n = 0~1). When the bit in the address mask register is set to 1, it
means the received corresponding address bit is "Don’t care". If the bit is set to 0, it
means the received corresponding register bit should be exactly the same as address
register.
Data Transfer
When a slave receives a correct address with an R/W bit, the data will follow R/W bit specified to transfer.
Each transferred byte is followed by an acknowledge bit on the 9th SCL clock cycle. If the slave signals
a Not Acknowledge (NACK), the master can generate a STOP signal to abort the data transfer or
generate a Repeated START signal and start a new transfer cycle.