
M0A21/M0A23 Series
May 06, 2022
Page
583
of 746
Rev 1.02
M0
A21
/M
0
A
2
3
SE
RIES
TEC
H
NICAL
RE
FEREN
C
E
M
ANUAL
Protocol Functional Description
Monitor Mode
When I
2
C enters monitor mode, this device always returns NACK to master after each frame reception
even address matching. Moreover, this device will store any receive data including address, command
code, and data.
Interrupt in Monitor Mode
All interrupts will occur as normal process when the MONEN (UI2C_PROTCTL [9]) is set. Note that the
first interrupt will occur when initial START, it not the same as I
2
C slave, but the other interrupts are the
same.
Subsequent to the address-match detection, interrupts will be generated after each data byte is received
as slave mode control flow, or after each byte that the module believes it has transmitted for a slave-
read transfer. In this second case, the data register will actually contain data transmitted by some other
slave on the bus which was actually addressed by the master. If user wants to watch other device, user
can set address mask and monitor.
If the monitor has not had time to respond to interrupt, the SCL signal will be pulled to low when
SCLOUTEN (UI2C_PROTCTL [8]) is set to 1. User must set PTRG (UI2C_PROTCTL [5]) to release
bus when SCLOUTEN (UI2C_PROTCTL [8]) is set to 1. If SCLOUTEN (UI2C_PROTCTL [8]) is not set
to 1, user doesn’t need to set PTRG (UI2C_PROTCTL [5]) to 1.
When device address match, but the device response NACK, this address will be received into buffer
and NACK interrupt will be generated.
Following all of these interrupts, the processor may read the data register to see what was actually
transmitted on the bus.
Loss of Arbitration in Monitor Mode
In monitor mode, the I
2
C module will not be able to respond to a request for information by the bus
master or issue an ACK. Some other slave on the bus will respond instead. Software should be aware
of the fact that the module is in monitor mode and should not respond to any loss of arbitration state
that is detected.
Programmable Setup and Hold Time
In order to guarantee a correct data setup and hold time, the timing must be configured. By programming
HTCTL (UI2C_TMCTL[24:16]) to configure hold time and STCTL (UI2C_TMCTL[8:0]) to configure setup
time.
The delay timing refer peripheral clock (PCLK). When device stretch master clock, the setup and hold
time configuration value will not affected by stretched.
User should focus the limitation of setup and hold time configuration, the timing setting must follow I
2
C
protocol. Once setup time configuration greater than design limitation, that means if setup time setting
make SCL output less than three PCLKs, I
2
C controller can’t work normally due to SCL must sample
three times. And once hold time configuration greater than I
2
C clock limitation, I
2
C will occur bus error.
Suggest that user calculate suitable timing with baud rate and protocol before setting timing. Table
6.15-1 shows the relationship between I
2
C baud rate and PCLK, the number of table represent one
clock duty contain how many PCLKs. Setup and hold time configuration even can program some
extreme values in the design, but user should follow I
2
C protocol standard.
I
2
C Baud Rate
PCLK
100k
200k
400k
800k
1200k
12 MHz
120
60
30
15
10
24 MHz
240
120
60
30
20