DocID17922 Rev 6 13/18
STM8AL3xxx STM8L052R8 STM8L1xxx6/8 Silicon limitations
17
Corrupted last received data in I
2
C Master Receiver mode
Conditions
In Master Receiver mode, when the communication is closed using method 2, the content of
the last read data may be corrupted. The following two sequences are concerned by the
limitation:
Sequence 1: transfer sequence for master receiver when N 2
a) BTF = 1 (Data N-1 in DR and Data N in shift register)
b) Program STOP = 1
c) Read DR twice (Read Data N-1 and Data N) just after programming the STOP bit.
Sequence 2: transfer sequence for master receiver when N 2
a) BTF = 1 (Data N-2 in DR and Data N-1 in shift register)
b) Program ACK = 0
c) Read Data N-2 in DR
d) Program STOP bit to 1
e) Read Data N-1.
Description
The content of the shift register (data N) is corrupted (data N is shifted 1 bit to the left) if the
user software is not able to read the data N-1 before the STOP condition is generated on the
bus. In this case, reading data N returns a wrong value.
Workaround 1
Sequence 1
When sequence 1 is used to close communication using method 2, mask all active
interrupts between STOP bit programming and Read data N-1.
Sequence 2
When sequence 2 is used to close communication using method 2, mask all active
interrupts between Read data N-2, STOP bit programming and Read data N-1.
Workaround 2
Manage I2C RxNE and TxE events with DMA or interrupts of the highest priority level, so
that the condition BTF = 1 never occurs.
Wrong behavior of the I2C peripheral in Master mode after misplaced STOP
Description
The I
2
C peripheral does not enter Master mode properly if a misplaced STOP is generated
on the bus. This can happen in the following conditions:
If a void message is received (START condition immediately followed by a STOP): the
BERR (bus error) flag is not set, and the I
2
C peripheral is not able to send a START
condition on the bus after writing to the START bit in the I2C_CR2 register.
In the other cases of a misplaced STOP, the BERR flag is set in the IC2_CR2 register.
If the START bit is already set in I2C_CR2, the START condition is not correctly
generated on the bus and can create bus errors.
Silicon limitations STM8AL3xxx STM8L052R8 STM8L1xxx6/8
14/18 DocID17922 Rev 6
Workaround
In the I²C standard, it is allowed to send a Stop only at the end of the full byte (8 bits +
acknowledge), so this scenario is not allowed. Other derived protocols like CBUS allow it,
but they are not supported by the I²C peripheral.
In case of noisy environment in which unwanted bus errors can occur, it is recommended to
implement a timeout to ensure that the SB (start bit) flag is set after the START control bit is
set. In case the timeout has elapsed, the peripheral must be reset by setting the SWRST bit
in the I2C_CR2 control register. The I
2
C peripheral should be reset in the same way if a
BERR is detected while the START bit is set in I2C_CR2.
No fix is planned for this limitation.
Violation of I
2
C “setup time for repeated START condition” parameter
Description
In case of a repeated Start, the “setup time for repeated START condition” parameter
(named t
SU(STA)
in the datasheet and Tsu:sta in the I
2
C specifications) may be slightly
violated when the I
2
C operates in Master Standard mode at a frequency ranging from 88 to
100
kHz. t
SU(STA)
minimum value may be 4 µs instead of 4.7 µs.
The issue occurs under the following conditions:
1. The I
2
C peripheral operates in Master Standard mode at a frequency ranging from 88
to 100
kHz (no issue in Fast mode)
2. and the SCL rise time meets one of the following conditions:
The slave does not stretch the clock and the SCL rise time is more than 300 ns
(the issue cannot occur when the SCL rise time is less than 300 ns).
or the slave stretches the clock.
Workaround
Reduce the frequency down to 88 kHz or use the I
2
C Fast mode if it is supported by the
slave.
In I
2
C slave “NOSTRETCH” mode, underrun errors may not be detected
and may generate bus errors
Description
The data valid time (t
VD;DAT
, t
VD;ACK
) described by the I
2
C specifications may be violated as
well as the maximum current data hold time (t
HD;DAT
) under the conditions described below.
In addition, if the data register is written too late and close to the SCL rising edge, an error
may be generated on the bus: SDA toggles while SCL is high. These violations cannot be
detected because the OVR flag is not set (no transmit buffer underrun is detected).
This issue occurs under the following conditions:
1. The I
2
C peripheral operates In Slave transmit mode with clock stretching disabled
(NOSTRETCH=1)
2. and the application is late to write the DR data register, but not late enough to set the
OVR flag (the data register is written before the SCL rising edge).
DocID17922 Rev 6 15/18
STM8AL3xxx STM8L052R8 STM8L1xxx6/8 Silicon limitations
17
Workaround
If the master device supports it, use the clock stretching mechanism by programming the bit
NOSTRETCH=0 in the I2C_CR1 register.
If the master device does not support it, ensure that the write operation to the data register
is performed just after TXE or ADDR events. You can use an interrupt on the TXE or ADDR
flag and boost its priority to the higher level or use DMA.
Using the “NOSTRETCH” mode with a slow I
2
C bus speed can prevent the application from
being late to write the DR register (second condition).
Note: The first data to be transmitted must be written into the data register after the ADDR flag is
cleared, and before the next SCL rising edge, so that the time window to write the first data
into the data register is less than t
LOW
.
If this is not possible, a possible workaround can be the following:
1. Clear the ADDR flag
2. Wait for the OVR flag to be set
3. Clear OVR and write the first data.
The time window for writing the next data is then the time to transfer one byte. In that case,
the master must discard the first received data.
SMBus standard not fully supported in I2C peripherals
Description
The I
2
C peripheral is not fully compliant with the SMBus v2.0 standard since it does not
support the capability to NACK an invalid byte/command.
Workarounds
A higher-level mechanism should be used to verify that a write operation is being performed
correctly at the target device, such as:
The use of the SMBA pin if supported by the host
The alert response address (ARA) protocol
The Host notify protocol.
1.3.3 USART peripheral limitations
USART IDLE frame detection not supported in the case of a clock deviation
Description
An idle frame cannot be detected if the receiver clock is deviated.
If a valid idle frame of a minimum length (depending on the M and Stop bit numbers) is
followed without any delay by a start bit, the IDLE flag is not set if the receiver clock is
deviated from the RX line (only if the RX line switches before the receiver clock).
Consequently, the IDLE flag is not set even if a valid idle frame occurred.
Workaround
None.
No fix planned for this limitation.

STM8AL3LE88TCX

Mfr. #:
Manufacturer:
STMicroelectronics
Description:
8-bit Microcontrollers - MCU 8 BITS MICROCONTR
Lifecycle:
New from this manufacturer.
Delivery:
DHL FedEx Ups TNT EMS
Payment:
T/T Paypal Visa MoneyGram Western Union

Products related to this Datasheet