IWDG is stopped when BDRST is set
Description
IWDG, once started, is expected to stop only in case of system reset. However, the LSI (IWDG clock) is stopped when BDRST is set in the RCC_BDCR register.In addition, the BDRST bit is not protected against non-secure access when LSI or IWDG is secure.
Workaround
If a Backup domain reset must be done, set BDRST and clear it right after to minimize the duration LSI is stopped.
BDRST can be protected against non-secure access by configuring at least one function of RTC or TAMP as secure.
RTC and TAMP
Alarm flag may be repeatedly set when the core is stopped in debug
Description
When the core is stopped in debug mode, the clock is supplied to subsecond RTC alarm downcounter even when the device is configured to stop the RTC in debug.
As a consequence, when the subsecond counter is used for alarm condition (the MASKSS[3:0] bitfield of the RTC_ALRMASSR and/or RTC_ALRMBSSR register set to a non-zero value) and the alarm condition is met just before entering a breakpoint or printf, the ALRAF and/or ALRBF flag of the RTC_SR register is repeatedly set by hardware during the breakpoint or printf, which makes any attempt to clear the flag(s) ineffective.
Workaround
None.Binary mode: SSR is not reloaded with 0xFFFF FFFF when SSCLR = 1
Description
When SSCLR bit of the RTC_ALRMxSSR register is set when in binary mode, SSR is reloaded with 0xFFFF FFFF at the end of the ck_apre cycle when RTC_SSR is set to RTC_ALRxBINR (x stands for either A or B)
RTC_SSR is not reloaded with 0xFFFF FFFF if RTC_ALRxBINR is modified while RTC_SSR is set to RTC_ALRxBINR. Rather, SSR continues to decrement.
Workaround
The workarounds are described for alarm A, and can be applied in the same manner for alarm B. Two workarounds are proposed, the second one requires to use the second alarm.
- Wait for one ck_apre cycle after an alarm A event before changing the RTC_ALRABINR register value.
- Do not reprogram RTC_ALRABINR following the alarm A event itself. Instead, use alarm B configured with RTC_ALRBBINR set to 0xFFFF FFFF, and reprogram RTC_ALRABINR after the alarm B event. This ensures that one ck_apre cycle elapses following the alarm A event.
Tamper flag set after tamper is disabled
Description
When the timestamp on tamper is enabled (TAMPTS = 1), or when tamper level detection with filtering is enabled (TAMPFLT ≠ 0), the tamper flag is set with a delay of two to three ck_apre clock cycles after the tamper event. If tamper is disabled after the tamper event but before the third ck_apre clock cycle, the tamper flag is set despite tamper being disabled.
Workaround
None
RTC calendar read may return transient incorrect value when BYPSHAD = 0
Description
When the BYPSHAD control bit in the RTC_CR register is cleared, reading the RTC calendar registers (RTC_SSR, RTC_TR, and RTC_DR) may seldom produce incorrect values. This issue occurs because internal timing can cause the asynchronous RTC calendar registers to be copied into their shadow registers during a transition of the asynchronous registers.
Since this copying process occurs every RTC kernel clock cycle, any erroneous value persists for only one RTC kernel clock cycle. The likelihood of this failure is very low and depends on several factors, including:
- RTC software configuration, such as the RTC kernel clock source, asynchronous prescaler factor, and calibration settings
- APB clock frequency
- Operating voltage and temperature
- The timing of the register read operation
Additionally, process variations may cause timing differences between samples, which can also influence the probability of this failure.
Workaround
To avoid this condition and ensure consistent calendar readings:
- Set the BYPSHAD control bit to 1 in the RTC_CR register to bypass shadow registers.
- Read the RTC calendar registers twice.
- Compare the two readings. If the values differ, repeat the read and compare sequence until two consecutive readings match.
This software method ensures a reliable calendar value under all operating conditions. For further details, see section Reading the calendar – When the BYPSHAD control bit is set in the RTC_CR register (bypass shadow registers) in the reference manual.
Parasitic tamper detection when debugger is used in RDP Level 0
Description
The internal tamper 6 flag (ITAMP6F) can be unexpectedly set in the TAMP status register (TAMP_SR) when a debugger is connected in RDP Level 0, in case a switch to VBAT occurs (VDD is below the BOR0 threshold).
Workaround
Keep internal tamper 6 flag disabled as long as debug is needed, and enable it once development phase is complete. The tamper flag cannot be set if no debug access is done.
I2C
Wrong data sampling when data setup time (tSU;DAT) is shorter than one I2C kernel clock period
Description
- 250 ns in Standard mode
- 100 ns in Fast mode
- 50 ns in Fast mode Plus
The device does not correctly sample the I2C-bus SDA line when tSU;DAT is smaller than one I2C kernel clock (I2C-bus peripheral clock) period: the previous SDA value is sampled instead of the current one. This can result in a wrong receipt of target address, data byte, or acknowledge bit.
Workaround
- In Standard mode, if the transmitter minimum setup time is 250 ns, the I2CCLK frequency must be at least 4 MHz.
- In Fast mode, if the transmitter minimum setup time is 100 ns, the I2CCLK frequency must be at least 10 MHz.
- In Fast-mode Plus, if the transmitter minimum setup time is 50 ns, the I2CCLK frequency must be at least 20 MHz.
Spurious bus error detection in controller mode
Description
In controller mode, a bus error can be detected spuriously, with the consequence of setting the BERR flag of the I2C_SR register and generating bus error interrupt if such interrupt is enabled. Detection of bus error has no effect on the I2C-bus transfer in controller mode and any such transfer continues normally.
Workaround
If a bus error interrupt is generated in controller mode, the BERR flag must be cleared by software. No other action is required and the ongoing transfer can be handled normally.
USART
Data corruption due to noisy receive line
Description
In all modes, except synchronous slave mode, the received data may be corrupted if a glitch to zero shorter than the half-bit occurs on the receive line within the second half of the stop bit.
Workaround
- Either use a noiseless receive line, or
- add a filter to remove the glitches if the receive line is noisy.
Wrong data received by SPI slave receiver in autonomous mode with CPOL = 1
Description
- The USART is used in SPI master transmitter mode
- The autonomous mode is used
- The CPOL bit of the USART_CR2 register is set
Workaround
When the autonomous mode is used, do not set the CPOL bit in USART_CR2.
Received data may be corrupted upon clearing the ABREN bit
Description
The USART receiver may miss data or receive corrupted data when the auto baud rate feature is disabled by software (ABREN bit cleared in the USART_CR2 register) after an auto baud rate detection, while a reception is ongoing.
Workaround
Do not clear the ABREN bit.
Noise error flag set while ONEBIT is set
Description
When the ONEBIT bit is set in the USART_CR3 register (one sample bit method is used), the noise error (NE) flag must remain cleared. Instead, this flag is set upon noise detection on the START bit.
Workaround
Having noise on the START bit is contradictory with the fact that the one sample bit method is used in a noise free environment.