RM0401 Rev 3 531/771
RM0401 Fast-mode Plus Inter-integrated circuit (FMPI2C) interface
591
• When the SCL falling edge is internally detected, a delay is inserted before sending 
SDA output. This delay is 
t
SDADEL 
= SDADEL x t
PRESC 
+ t
I2CCLK
 where t
PRESC
 = (PRESC+1) 
x t
I2CCLK
.
T
SDADEL 
impacts the hold time t
HD;DAT.
The total SDA output delay is:
t
SYNC1 
+ {[SDADEL x (PRESC+1) + 1] x t
I2CCLK 
}
t
SYNC1 
duration depends on these parameters:
– SCL falling slope
– When enabled, input delay brought by the analog filter: t
AF(min) 
< t
AF 
< t
AF(max)
– When enabled, input delay brought by the digital filter: t
DNF 
= DNF x t
I2CCLK
– Delay due to SCL synchronization to FMPI2CCLK clock (2 to 3 FMPI2CCLK 
periods)
In order to bridge the undefined region of the SCL falling edge, the user must program 
SDADEL in such a way that:
{t
f (max) 
+t
HD;DAT (min) 
-t
AF(min)
 - [(DNF +3) x t
I2CCLK
]} / {(PRESC +1) x t
I2CCLK
 } ≤ SDADEL 
SDADEL ≤ {t
HD;DAT (max) 
-t
AF(max)
 - [(DNF+4) x t
I2CCLK
]} / {(PRESC +1) x t
I2CCLK
 }
Note: t
AF(min)
 / t
AF(max)
 are part of the equation only when the analog filter is enabled. Refer to 
device datasheet for t
AF
 values.
The maximum t
HD;DAT
 can be 3.45 µs, 0.9 µs and 0.45 µs for Standard-mode, Fast-mode 
and Fast-mode Plus, but must be less than the maximum of t
VD;DAT
 by a transition time. 
This maximum must only be met if the device does not stretch the LOW period (t
LOW
) of the 
SCL signal. If the clock stretches the SCL, the data must be valid by the set-up time before 
it releases the clock.
The SDA rising edge is usually the worst case, so in this case the previous equation 
becomes:
SDADEL ≤ {t
VD;DAT (max) 
-t
r (max) 
-260 ns - [(DNF+4) x t
I2CCLK
]} / {(PRESC +1) x t
I2CCLK
 }.
Note: This condition can be violated when NOSTRETCH=0, because the device stretches SCL 
low to guarantee the set-up time, according to the SCLDEL value.
Refer to Table 88: I2C-SMBUS specification data setup and hold times for t
f
, t
r
, t
HD;DAT
 and 
t
VD;DAT 
standard values.
• After t
SDADEL
 delay, or after sending SDA output in case the slave had to stretch the 
clock because the data was not yet written in I2C_TXDR register, SCL line is kept at 
low level during the setup time. This setup time is 
t
SCLDEL 
= (SCLDEL+1) x t
PRESC 
where 
t
PRESC 
= (PRESC+1) x t
I2CCLK.
t
SCLDEL 
impacts the setup time t
SU;DAT .
In order to bridge the undefined region of the SDA transition (rising edge usually worst 
case), the user must program SCLDEL in such a way that:
{[t
r (max) 
+ t
SU;DAT (min)
] / [(PRESC+1)] x t
I2CCLK
]} - 1 <= SCLDEL
Refer to Table 88: I2C-SMBUS specification data setup and hold times for t
r 
and
 
t
SU;DAT 
standard values.