stm32h742 stm32h743 Device Limitations Stmicroelectronics
stm32h742 stm32h743 Device Limitations Stmicroelectronics
Errata sheet
STM32H742xI/G and STM32H743xI/G device limitations
Applicability
This document applies to the part numbers of STM32H742/743xI/G devices listed in Table 1
and their variants shown in Table 2.
Section 1 gives a summary and Section 2 a description of workarounds for device
limitations, with respect to the device datasheet and reference manual RM0433.
STM32H742xI/G V 0x2003
STM32H743xI/G Y 0x1003
STM32H743xI/G X 0x2001
STM32H743xI/G V 0x2003
1. Refer to the device datasheet for how to identify this code on different types of package.
2. REV_ID[15:0] bit field of DBGMCU_IDC register. Refer to the reference manual.
Contents
2.2.22 WWDG not functional when VDD is lower than 2.7 V and VOS0
or VOS1 voltage level is selected . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2.23 A tamper event does not erase the backup RAM when the
backup RAM clock is disabled . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2.24 LSE CSS parasitic detection even when disabled . . . . . . . . . . . . . . . . . 17
2.2.25 Output current sunk or sourced by Pxy_C pins . . . . . . . . . . . . . . . . . . . 18
2.3 FMC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.3.1 Dummy read cycles inserted when reading synchronous memories . . . 18
2.3.2 Wrong data read from a busy NAND Flash memory . . . . . . . . . . . . . . . 18
2.3.3 Missed clocks with continuous clock feature enabled . . . . . . . . . . . . . . 19
2.4 QUADSPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.4.1 First nibble of data is not written after a dummy phase . . . . . . . . . . . . . 19
2.4.2 QUADSPI hangs when QUADSPI_CCR is cleared . . . . . . . . . . . . . . . . 19
2.4.3 QUADSPI cannot be used in Indirect read mode when only
data phase is activated . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.4.4 Memory-mapped read of last memory byte fails . . . . . . . . . . . . . . . . . . 20
2.5 ADC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.5.1 Conversion overlap may impact the ADC accuracy . . . . . . . . . . . . . . . . 20
2.5.2 ADC resolution limited by LSE activity . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.5.3 ADC maximum sampling rate when VDDA is lower than 2 V . . . . . . . . 21
2.5.4 ADC maximum resolution when VDDA is higher than 3.3 V . . . . . . . . . 21
2.5.5 First ADC injected conversion in a sequence may be corrupted . . . . . . 21
2.5.6 Writing the ADC_JSQR register when JADCSTART = 1 and JQDIS = 1
may lead to incorrect behavior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.5.7 Conversion may be triggered by context queue register update . . . . . . 22
2.5.8 Updated conversion sequence may be trigged by
context queue update . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.6 VREFBUF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.6.1 Overshoot on VREFBUF output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.6.2 VREFBUF Hold mode cannot be used . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.7 OPAMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.7.1 OPAMP high-speed mode must not be used . . . . . . . . . . . . . . . . . . . . . 23
2.8 LCD-TFT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.8.1 Device stalled when accessing LTDC registers while pixel clock
is disabled . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.9 TIM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.9.1 One-pulse mode trigger not detected in master-slave reset +
trigger configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4 Revision history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
The following table gives a quick references to all documented device limitations of
STM32H742/743xI/G and their status:
A = limitation present, workaround available
N = limitation present, no workaround available
P = limitation present, partial workaround available
“-” = limitation absent
Applicability of a workaround may depend on specific conditions of target application.
Adoption of a workaround may cause restrictions to target application. Workaround for a
limitation is deemed partial if it only reduces the rate of occurrence and/or consequences of
the limitation, or if it is fully effective for only a subset of instances on the device or in only a
subset of operating modes, of the function concerned.
Arm® 32- Cortex®-M7 data corruption when using Data cache configured in
2.1.1 A A A
bit write-through
Cortex®-
M7 core 2.1.2 Cortex®-M7 FPU interrupt not present on NVIC line 81 A A A
The following sections describe device limitations of the applicable Arm(a) core devices and
provide workarounds if available. They are grouped by device functions.
a. Arm is a registered trademark of Arm Limited (or its subsidiaries) in the US and/or elsewhere.
The effect of this erratum is that load operations can return incorrect data.
Workaround
There is no direct workaround for this erratum.
Where possible, Arm® recommends that you use the MPU to change the attributes on any
write-through memory to write-back memory. If this is not possible, it might be necessary to
disable the cache for sections of code that access write-through memory.
Workaround
None.
2.2 System
Workaround
None
2.2.2 Clock recovery system synchronization with USB SOF does not work
Description
The clock recovery system (CRS) synchronization by USB start-of-frame signal (SOF) does
not work.
Workaround
When available, use the LSE oscillator as synchronization source.
Workaround
Use the system clock (HCLK) as external clock and multiply the reload value by 8 in
STK_LOAD register (take care that the maximum value is 224-1).
2.2.4 Option byte loading can be done with the user wait-state configuration
Description
After an option byte change, the option byte loading is performed with the user wait-state
configuration instead of the default configuration.
Workaround
When performing option byte loading (modification), configure the correct number of wait-
states or use the default value (7 wait states).
Workaround
When a double ECC error flag is raised, check the failing address in the Flash interface
(FAIL_ECC_ADDR1/2 in FLASH_ECC_FA1R/FA2R) and disregard the content of the
BusFault address register.
Workaround
None.
Workaround
The user application must set the readout protection level to level 2 to avoid PCROP-
protected areas from being unprotected.
Workaround
Do not enable the Flash memory bank swapping feature on devices revision Y.
2.2.9 Reading from AXI SRAM may lead to data read corruption
Description
Read data may be corrupted when the following conditions are met:
• Several read transactions are performed to the AXI SRAM,
• and a master delays its data acceptance while a new transfer is requested.
Workaround
Set the READ_ISS_OVERRIDE bit in the AXI_TARG7_FN_MOD register. This will reduce
the read issuing capability to 1 at AXI interconnect level and avoid data corruption.
2.2.10 Clock switching does not work when LSE failure is detected by CSS
Description
When a failure on the LSE oscillator is detected by a clock security system (CSS), the
backup domain clock source cannot be changed.
Workaround
When a clock security system detects a LSE failure, reset the backup domain and select a
functional clock source.
2.2.11 RTC stopped when a system reset occurs while the LSI is used
as a clock source
Description
When the LSI clock is used as RTC clock source, the RTC is stopped (it does not received
the clock anymore) when a system reset occurs.
Workaround
1. Check the RTC clock source after each system reset.
2. If the LSI clock is selected, enable it again.
Workaround
None
2.2.13 Unexpected leakage current on I/Os when VIN higher that VDD
Description
When VIN is higher than VDD and depending on the waveform applied to I/Os, an
unexpected leakage current might be observed when VIN decreases.
Note: This leakage does not impact the product reliability.
Workaround
The application must maintain VIN lower that VDD to avoid current leakage on I/Os.
Workaround
• Use LSEDRV[1:0]=01 to select LSE medium-high drive
• Use LSEDRV[1:0]=10 to select LSE medium-low drive
Workaround
None.
Workaround
Perform a dummy access to backup SRAM before executing the level regression sequence
(switching from RDP level 1 to RDP level 0).
Workaround
Do not use the Flash memory CRC calculation feature.
This limitation applies to DAC1_OUT1 and DAC1_OUT2 connected to PA4 and PA5,
respectively.
Workaround
None.
Workaround
Apply one of the following measures:
• Clock the RTC with LSE or HSE/RTCPRE, without using the CSS on LSE.
• If the LSI oscillator clocks the RTC or when the LSECSSON bit is set, reset the backup
domain upon each VDD power-up (when the BORRSTF flag is set in RCC_RSR).
2.2.20 480 MHz maximum CPU frequency not available on silicon revision Y
Description
VOS0 voltage scaling level is not available on silicon revision Y devices. This limits the
maximum CPU frequency to 400 MHz.
Workaround
Use silicon revision V devices to reach a maximum frequency of 480 MHz.
Workaround
None.
2.2.22 WWDG not functional when VDD is lower than 2.7 V and VOS0
or VOS1 voltage level is selected
Description
The system window watchdog (WWDG) is not functional, that is, it does not generate a
correct system reset and/or the WWDG reset flag is not asserted, when VDD is lower than
2.7 V and VOS0 or VOS1 voltage level is selected. There is no dependency on VDDLDO.
Workaround
None.
2.2.23 A tamper event does not erase the backup RAM when the
backup RAM clock is disabled
Description
Upon a tamper event, the backup RAM is normally reset and its content erased. However,
when the backup RAM clock is disabled (BKPRAMEN bit set to 0 in RCC_ AHB4ENR
register), the backup RAM reset fails and the memory is not erased.
Workaround
Enable the backup RAM clock by setting BKPRAMEN bit to 1 in the RCC_AHB4 clock
register (RCC_AHB4ENR). This can be done either during device initialization or during a
tamper service routine
Workaround
To achieve good overall EMC robustness, follow the general EMC recommendations to
increase equipment immunity (see EMC design guide for STM8, STM32 and Legacy MCUs
application note (AN1709)). Robustness can be further improved for the impacted pins other
than VBAT by inserting, where possible, serial resistors with the value as high as possible
until 1 kΩ close to the microcontroller.
Workaround
No application workaround is required.
2.3 FMC
Workaround
None.
Workaround
Either configure MEMSET timing to a value greater than 0x00 or ATTHOLD timing to a value
greater than 0x01.
Workaround
When the continuous clock feature is enabled, do not use the FMC_CLK clock divider ratio
of 2 when issuing a byte transaction to 32-bit asynchronous memories.
2.4 QUADSPI
Workaround
Use an alternate-bytes phase instead of a dummy phase in order to add a latency period
between the address phase and the data phase. This workaround works only if the number
of dummy cycles corresponds to a multiple of 8 bits of data.
As an example:
• To generate 1 dummy cycle, send 1 alternate-byte in 4 data line DDR mode or Dual-
Flash SDR mode.
• To generate 2 dummy cycles, send 1 alternate-byte in 4 data line SDR mode
• To generate 4 dummy cycles, send 2 alternate-bytes in 4 data line SDR mode or send
1 alternate-byte in 2 data line SDR mode
• To generate 8 dummy cycles, send 1 alternate-byte in 1 data line SDR mode.
Workaround
Clear then set the EN bit in the QUADSPI_CR register.
Workaround
Insert a dummy phase with at least two dummy cycles.
Workaround
Apply one of the following measures:
• Avoid reading the last byte of the memory region defined through FSIZE, for example
by taking margin in FSIZE bitfield setting.
• If the last byte is read, ignore its value and abort the ongoing process so as to prevent
the AXI bus from stalling.
• For reading the last byte of the memory region defined through FSIZE, use indirect
read.
2.5 ADC
Workaround
Avoid conversion overlapping. The application should ensure that conversions are
performed sequentially.
Workaround
16-bit and 14-bit data resolutions are not recommended on these pins. This limits data
resolution configuration to 8 bits, 10 bits or 12 bits.
Description
If VDDA is lower than 2 V, the ADC conversion accuracy is not guaranteed over the full ADC
sampling rate.
Workaround
The application should avoid a sampling rate higher than 1.5 MSPS when operating with
VDDA below 2 V.
Description
If VDDA is higher than 3.3V, the ADC conversion accuracy is not guaranteed for all data
resolutions.
Workaround
16-bit, 14-bit and 12-bit data resolutions are not useful in this configuration. This limits
available data resolution configuration to 8 bits and 10 bits.
Workaround
Apply one of the following measures:
• Use a sequence of at least two injected conversions, ignore the first injected value and
consider the other ones.
• Synchronize regular and injected conversion to prevent regular channels and injected
channels from overlapping.
Workaround
Apply one of the following measures:
• Use the context queue (JQDIS=0) to allow on-the-fly ADCx_JSQR modification
• Ensure that no injected conversion is ongoing (JADSTART=0) before modifying
ADC_JSQR register.
Workaround
Apply one of the following measures:
• Ignore the first converted sequence.
• Use the queue of context with JQM = 1 in ADC_CGFR.
• Use the queue of context with JQM = 0 in ADC_CGFR and change the sequence
without modifying the trigger and the polarity.
Workaround
Apply one of the following measures:
• Use the queue of context with JQM = 1 in ADC_CGFR.
• Synchronize the programming of the new context with the next trigger edge to make
sure it is performed after JEOS flag is set in ADC_ISR (for example at the trigger rising
edge).
2.6 VREFBUF
Workaround
Let the voltage on the VREF+ pin drop to a level lower than 1 V below the target
VREFBUF_OUT. This can be achieved by switching VREFBUF buffer off (ENVR = 0 and
HIZ = 0 in VREFBUF_CSR register) during sufficient time to discharge the capacitor on the
VREF+ pin through VREFBUF pull-down resistor.
Workaround
None.
2.7 OPAMP
Workaround
None.
2.8 LCD-TFT
2.8.1 Device stalled when accessing LTDC registers while pixel clock
is disabled
Description
The device might hang if an access to the LTDC register interface is performed while the
pixel clock (ltdc_ker_ck) is disabled.
Workaround
Enable the pixel clock before accessing LTDC registers. Apply the following sequence to
enable the LTDC clock:
1. Enable pll3_r_ck to feed the LTDC pixel clock (ltdc_ker_ck).
2. Enable the LTDC register interface clock by setting the LTDCEN bit in the
RCC_APB3ENR register.
2.9 TIM
Workaround
None. However, unless a cycle-level synchronization is mandatory, it is advised to keep the
MSM bit reset, in which case the problem is not present. The MSM = 0 configuration also
allows decreasing the timer latency to external trigger events.
clock cycles (as consequence of the CCR value change between the two cycles), the
second compare event is missed for the following CCR value changes:
• in edge-aligned mode, from ARR to 0:
– first compare event: CNT = CCR = ARR
– second (missed) compare event: CNT = CCR = 0
• in center-aligned mode while up-counting, from ARR-1 to ARR (possibly a new ARR
value if the period is also changed) at the crest (that is, when TIMx_RCR = 0):
– first compare event: CNT = CCR = (ARR-1)
– second (missed) compare event: CNT = CCR = ARR
• in center-aligned mode while down-counting, from 1 to 0 at the valley (that is, when
TIMx_RCR = 0):
– first compare event: CNT = CCR = 1
– second (missed) compare event: CNT = CCR = 0
This typically corresponds to an abrupt change of compare value aiming at creating a timer
clock single-cycle-wide pulse in toggle mode.
As a consequence:
• In toggle mode, the output only toggles once per counter period (squared waveform),
whereas it is expected to toggle twice within two consecutive counter cycles (and so
exhibit a short pulse per counter period).
• In center mode, the compare interrupt flag does note rise and the interrupt is not
generated.
Note: The timer output operates as expected in modes other than the toggle mode.
Workaround
None.
2.9.3 Output compare clear not working with external counter reset
Description
The output compare clear event (ocref_clr) is not correctly generated when the timer is
configured in the following slave modes: Reset mode, Combined reset + trigger mode, and
Combined gated + reset mode.
The PWM output remains inactive during one extra PWM cycle if the following sequence
occurs:
1. The output is cleared by the ocref_clr event.
2. The timer reset occurs before the programmed compare event.
Workaround
Apply one of the following measures:
• Use BKIN (or BKIN2 if available) input for clearing the output, selecting the Automatic
output enable mode (AOE = 1).
• Mask the timer reset during the PWM ON time to prevent it from occurring before the
compare event (for example with a spare timer compare channel open-drain output
connected with the reset signal, pulling the timer reset line down).
2.10 LPTIM
2.10.1 MCU may remain stuck in LPTIM interrupt when entering Stop mode
Description
This limitation occurs when disabling the low-power timer (LPTIM).
When the user application clears the ENABLE bit in the LPTIM_CR register within a small
time window around one LPTIM interrupt occurrence, then the LPTIM interrupt signal used
to wake up the MCU from Stop mode may be frozen in active state. Consequently, when
trying to enter Stop mode, this limitation prevents the MCU from entering low-power mode
and the firmware remains stuck in the LPTIM interrupt routine.
This limitation applies to all Stop modes and to all instances of the LPTIM. Note that the
occurrence of this issue is very low.
Workaround
In order to disable a low power timer (LPTIMx) peripheral, do not clear its ENABLE bit in its
respective LPTIMx_CR register. Instead, reset the whole LPTIMx peripheral via the RCC
controller by setting and resetting its respective LPTIMxRST bit in RCC_APByRSTRz
register.
2.11 RTC
Workaround
Apply one of the following measures:
• Use BYPSHAD = 1 mode (bypass shadow registers), or
• If BYPSHAD = 0, read SSR again after reading SSR/TR/DR to confirm that SSR is still
the same, otherwise read the values again.
2.12 I2C
2.12.1 10-bit master mode: new transfer cannot be launched if first part
of the address is not acknowledged by the slave
Description
An I2C-bus master generates STOP condition upon non-acknowledge of I2C address that it
sends. This applies to 7-bit addresses as well as to each byte of 10-bit addresses.
When the device set as I2C-bus master transmits a 10-bit address of which the first byte (5-
bit header + 2 MSBs of the address + direction bit) is not acknowledged, the device duly
generates a STOP condition but it then cannot start any new I2C-bus transfer. In this
spurious state, the NACKF flag of the I2C_ISR register and the START bit of the I2C_CR2
register are both set, while the START bit should normally be cleared.
Workaround
In 10-bit-address master mode, if both NACKF flag and START bit get simultaneously set,
proceed as follows:
1. Wait for the STOP condition detection (STOPF = 1 in I2C_ISR register).
2. Disable the I2C peripheral.
3. Wait for a minimum of three APB cycles.
4. Enable the I2C peripheral again.
Workaround
No application workaround is required.
2.12.3 Wrong data sampling when data setup time (tSU;DAT) is shorter than
one I2C kernel clock period
Description
The I2C-bus specification and user manual specify a minimum data setup time (tSU;DAT) as:
• 250 ns in Standard mode
• 100 ns in Fast mode
• 50 ns in Fast mode Plus
The MCU 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 slave address, data byte, or
acknowledge bit.
Workaround
Increase the I2C kernel clock frequency to get I2C kernel clock period within the transmitter
minimum data setup time. Alternatively, increase transmitter’s minimum data setup time. If
the transmitter setup time minimum value corresponds to the minimum value provided in the
I2C-bus standard, the minimum I2CCLK frequencies are as follows:
• 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.
Workaround
If a bus error interrupt is generated in Master mode, the BERR flag must be cleared by
software. No other action is required and the ongoing transfer can be handled normally.
Workaround
• In Master mode or in slave mode with SBC = 1, use the Reload mode with
NBYTES = 1.
• In Master receiver mode, if the number of bytes to transfer is greater than 255, do not
use the Reload mode. Instead, split the transfer into sections not exceeding 255 bytes
and separate them with repeated START conditions.
• Make sure, for example through the use of DMA, that the byte N - 1 is always read
before the TCR flag is raised. Specifically for I2C instances with independent clock,
make sure that it is always read earlier than four APB clock cycles before the receipt of
the last data bit of byte N and thus the TCR flag raising.
The last workaround in the list must be evaluated carefully for each application as the timing
depends on factors such as the bus speed, interrupt management, software processing
latencies, and DMA channel priority.
Workaround
Upon the address match event (ADDR flag set), apply the following sequence.
Normal mode (SBC = 0):
1. Set the ADDRCF bit.
2. Before Stop condition occurs on the bus, write I2C_CR2 with the START bit low.
Slave byte control mode (SBC = 1):
1. Write I2C_CR2 with the slave transfer configuration and the START bit low.
2. Wait for longer than three I2C kernel clock cycles.
3. Set the ADDRCF bit.
4. Before Stop condition occurs on the bus, write I2C_CR2 again with its current value.
The time for the software application to write the I2C_CR2 register before the Stop condition
is limited, as the clock stretching (if enabled), is aborted when clearing the ADDR flag.
Polling the BUSY flag before requesting the master transfer is not a reliable workaround as
the bus may become busy between the BUSY flag check and the write into the I2C_CR2
register with the START bit set.
2.12.7 START bit is cleared upon setting ADDRCF, not upon address match
Description
Some reference manual revisions may state that the START bit of the I2C_CR2 register is
cleared upon slave address match event.
Instead, the START bit is cleared upon setting, by software, the ADDRCF bit of the I2C_ICR
register, which does not guarantee the abort of master transfer request when the device is
being addressed as slave. This product limitation and its workaround are the subject of a
separate erratum.
Workaround
No application workaround is required for this description inaccuracy issue.
2.13 USART
2.13.1 Underrun flag is set when the USART is used in SPI Slave
receive mode
Description
When the USART is used in SPI Slave receive mode, the underrun flag (UDR bit in
USART_ISR register) may be set even if the transmitter is disabled (TE bit set to 0 in
USAR_CR1 register).
Workaround
Three workarounds are possible
• Ignore the UDR flag when the transmitter is disabled.
• Clear the UDR flag every time it is set, even if the Transmitter is disabled.
• Write dummy data in the USART_TDR register to avoid setting the UDR flag.
Workaround
Use the alternative peripheral DMA channel protocol by setting bit 20 of the DMA_SxCR
register.
This bit is reserved in the documentation and must be used only on the stream that
manages data transfers for USART/UART peripherals.
2.14 SPI
Workaround
Before enabling DMA Rx transfer following a completed Tx simplex transfer, perform
hardware reset of the SPI/I2S peripheral.
2.14.2 Master data transfer stall at system clock much faster than SCK
Description
With the system clock (spi_pclk) substantially faster than SCK (spi_ker_ck divided by a
prescaler), SPI/I2S master data transfer can stall upon setting the CSTART bit within one
SCK cycle after the EOT event (EOT flag raise) signaling the end of the previous transfer.
Workaround
Apply one of the following measures:
• Disable then enable SPI/I2S after each EOT event.
• Upon EOT event, wait for at least one SCK cycle before setting CSTART.
• Prevent EOT events from occurring, by setting transfer size to undefined (TSIZE = 0)
and by triggering transmission exclusively by TXFIFO writes.
Workaround
Keep TXFIFO non-empty at the end of transfer.
Description
SPI/I2S peripheral is set to its default state when disabled (SPE = 0). This flushes the FIFO
buffers and resets their occupancy flags. TXP and TXC flags become set (the latter if the
TSIZE field contains zero value), triggering interrupt if enabled with TXPIE or EOTIE bit,
respectively. The resulting interrupt service can be spurious if it tries to write data into
TXFIFO to clear the TXP and TXC flags, while both FIFO buffers are inaccessible (as the
peripheral is disabled).
Workaround
Keep TXP and TXC (the latter if the TSIZE field contains zero value) interrupt disabled
whenever the SPI/I2S peripheral is disabled.
2.15 SDMMC
Workaround
To suspend a write transfer:
1. Set DTHOLD bit in the SDMMC_CMDR register.
2. Wait till the DHOLD status flag is set in SDMMC_STAR register to make sure the busy
line has been released.
3. Send a suspend command to the card (CMDSUSPEND = 1, CMDTRANS = 0 and
CPSMEN = 1 in SDMMC_CMDR).
Workaround
Use the clock stretching method (RWMOD = 1) instead of data line 2 to suspend temporarily
the transfer between two blocks.
When an AHB error occurs on the three last bursts of a successful read transfer, the FIFO is
considered as empty (DATAEND flag set in SDMMC_STAR) but some bytes, not yet
transferred to the FIFO, may still be present in the internal receive buffer. As a result, the
following read operation will fail and report an overrun error.
Workaround
1. When DATAEND = 1, check IDMATE flag.
2. If IDMATE = 1 and DTDIR = 1 in SDMMC_DCTRL, reset SDMMC.
2.15.4 Consecutive multiple block transfers can induce incorrect data length
Description
When a new transfer is started by setting the DTEN bit in SDMMC_DCTRL control register
while less than eight SDMMC clock cycles elapsed since the end of the previous transfer,
the second transfer is performed with the number of blocks configured for the previous
transfer. This is due to the fact that the new number of data to be transferred has not been
reloaded in the internal data block counter.
Workaround
The user application must ensure that at least 8 SDMMC clock cycles elapsed between the
successful completion of a transfer and the moment DTEN bit is set.
Workaround
When the multiple block transfer completes (DATAEND = 1 in SDMMC_STAR),
simultaneously set CKSTOPC and DATAENDC to 1 in SDMMC_ICR register.
2.16 FDCAN
Workaround
The user application must avoid writing to FDCAN_TTTS register during TTCAN
initialization phase.
Note: Outside of TTCAN initialization phase, write operations to FDCAN_TTTS do not impact
FDCAN_TTTMC since this register is write protected.
2.16.2 Wrong data may be read from Message RAM by the CPU
when using two FDCANs
Description
When using two FDCAN controllers, and the CPU and FDCANs simultaneously request
read accesses from Message RAM, the CPU read request may return erroneous data.
The issue is not present if the CPU requests write access to Message RAM.
Workaround
To avoid concurrent read accesses between the CPU and FDCANs, use only one FDCAN at
a time.
Workaround
Disable edge filtering or wait for frame retransmission.
2.16.4 Tx FIFO messages inverted when both Tx buffer and FIFO are used and
the messages in the Tx buffer have higher priority than
in the Tx FIFO
Description
Two consecutive messages from the Tx FIFO may be inverted in the transmit sequence
when the following conditions are met:
• The FDCAN uses both a dedicated Tx buffer and a Tx FIFO (TFQM bit of
FDCAN_TXBC set to 0) and
• the messages contained in the Tx buffer have a higher internal CAN priority than the
messages in the Tx FIFO.
Workaround
Choose one of the following workarounds
• Ensure that only one Tx FIFO element is pending for transmission at any time:
The Tx FIFO elements may be filled at any time with messages to be transmitted, but
their transmission requests are handled separately. Each time a Tx FIFO transmission
has completed and the Tx FIFO gets empty (TFE bit of FDACN_IR set to 1) the next Tx
FIFO element is requested.
• Use only a Tx FIFO:
Send both messages from a Tx FIFO, including the message with the higher priority.
This message has to wait until the preceding messages in the Tx FIFO have been sent.
• Use two dedicated Tx buffers (e.g. use Tx buffer 4 and 5 instead of the Tx FIFO):
The pseudo-code below replaces the function in charge of filling the Tx FIFO:
Write message to Tx Buffer 4
Transmit Loop:
Request Tx Buffer 4 - write AR4 bit in FDCAN_TXBAR
Write message to Tx Buffer 5
Wait until transmission of Tx Buffer 4 complete (IR bit in FDCAN_IR),
read TO4 bit in FDCAN_TXBTO
Request Tx Buffer 5 - write AR5 bit of FDCAN_TXBAR
Write message to Tx Buffer 4
Wait until transmission of Tx Buffer 5 complete (IR bit in FDCAN_IR),
read TO5 bit in FDCAN_TXBTO
Workaround
For USB OTG_HS1, use the external USB PHY instead of the internal PHY.
For USB OTG_HS2: no workaround is available.
2.18 ETH
Workaround
None
2.18.2 Rx DMA may fail to recover upon DMA restart following a bus error,
with Rx timestamping enabled
Description
When the timestamping of Rx packets is enabled, some or all of the received packets can
have Rx timestamp which is written into a descriptor upon the completion of the Rx
packet/status transfer.
However, due to a defect, when bus error occurs during the descriptor read (that is
subsequently used as context descriptor to update the Rx timestamp), the context
descriptor write is skipped by DMA. Also, Rx DMA does not flush the Rx timestamp stored in
the intermediate buffers during the error recovery process and enters Stop state. Due to this
residual timestamp in the intermediate buffer, Rx DMA, after being restarted, does not
transfer packets.
Workaround
Issue a soft reset to drop all Tx packets and Rx packets present inside the controller at the
time of bus error. After the soft reset, reconfigure the controller and re-create the
descriptors.
Note: The workaround introduces additional latency.
2.18.3 Tx DMA may halt while fetching TSO header under specific conditions
Description
When fetching header bytes from the system memory by issuing a one-beat request in TSO
mode, Tx DMA may get into a deadlock state if
• address-aligned beats are enabled (AAL bit of the ETH_DMASBMR register is set),
• DMA start address of a burst transfer request (BUF1AP of TDES0 descriptor) is not
aligned on a boundary of the configured data width (64 bits), and
• DMA start address of a burst transfer request is not aligned on a boundary of the
programmed burst length (TxPBL bit of the ETH_DMACTXCR register).
Workaround
Ensure that Tx DMA initiates a burst of at least two beats when fetching header bytes from
the system memory, through one of the following measures:
• Disable address-aligned beats by clearing the AAL bit of the ETH_DMASBMR register.
• Align the buffer address pointing to the packet start to a data width boundary (set the
bits[2:0] of the address to zero, for 64-bit data width).
• Set the buffer address pointing to the packet start to a value that ensures a burst of
minimum two beats when AAL = 1.
Workaround
Ensure that the RWTU[1:0] bitfield is not set to a non-zero value while the RWT[7:0] bitfield
is at zero. For setting RWT[7:0] and RWTU[1:0] bitfields each to a non-zero value, perform
two successive writes. The first is either a byte-wide write to the byte containing the
RWT[7:0] bitfield, or a 32-bit write that only sets the RWT[7:0] bitfield and keeps the
RWTU[1:0] bitfield at zero. The second is either a byte-wide write to the RWTU[1:0] bitfield
or a 32-bit write that sets the RWTU[1:0] bitfield while keeping the RWT[7:0] bitfield
unchanged.
Workaround
Use the coarse method for correcting the IEEE 1588 internal time reference.
and the issue would have no consequence. However, as the CRC error is also flagged when
this occurs, the error-packet drop mechanism (if enabled) discards the packets.
Note: Real dribble errors are rare. They may result from synchronization issues due to faulty clock
recovery.
Workaround
When using the RMII 10 MHz mode, disable the error-packet drop mechanism by setting
the FEP bit of the ETH_MTLRXQOMR register. Accept packets of transactions flagging both
dribble and CRC errors.
Workaround
Parse the received frame by software and send the ARP response if the source MAC
address matches the byte-swapped Address0.
2.19 HDMI-CEC
Workaround
Use transmission timeout: when a timeout occurs, to enable again the transmission of the
pending message, disable and enable again the HDMI-CEC peripheral to clear TXSOM bit
in CEC_CR register.
Workaround
Configure the HDMI-CEC to operate in Listen mode and apply message filtering based on
destination address. In this case all the messages sent over the CEC bus will be received
and it is up to the user application to discard the messages that are not sent to its address or
that are broadcast.
The STMicroelectronics group of companies (ST) places a high value on product security,
which is why the ST product(s) identified in this documentation may be certified by various
security certification bodies and/or may implement our own security measures as set forth
herein. However, no level of security certification and/or built-in security measures can
guarantee that ST products are resistant to all forms of attacks. As such, it is the
responsibility of each of ST's customers to determine if the level of security provided in an
ST product meets the customer needs both in relation to the ST product alone, as well as
when combined with other components and/or software for the customer end product or
application. In particular, take note that:
• ST products may have been certified by one or more security certification bodies, such
as Platform Security Architecture (www.psacertified.org) and/or Security Evaluation
standard for IoT Platforms (www.trustcb.com). For details concerning whether the ST
product(s) referenced herein have received security certification along with the level
and current status of such certification, either visit the relevant certification standards
website or go to the relevant product page on www.st.com for the most up to date
information. As the status and/or level of security certification for an ST product can
change from time to time, customers should re-check security certification status/level
as needed. If an ST product is not shown to be certified under a particular security
standard, customers should not assume it is certified.
• Certification bodies have the right to evaluate, grant and revoke security certification in
relation to ST products. These certification bodies are therefore independently
responsible for granting or revoking security certification for an ST product, and ST
does not take any responsibility for mistakes, evaluations, assessments, testing, or
other activity carried out by the certification body with respect to any ST product.
• Industry-based cryptographic algorithms (such as AES, DES, or MD5) and other open
standard technologies which may be used in conjunction with an ST product are based
on standards which were not developed by ST. ST does not take responsibility for any
flaws in such cryptographic algorithms or open technologies or for any methods which
have been or may be developed to bypass, decrypt or crack such algorithms or
technologies.
• While robust security testing may be done, no level of certification can absolutely
guarantee protections against all attacks, including, for example, against advanced
attacks which have not been tested for, against new or unidentified forms of attack, or
against any form of attack when using an ST product outside of its specification or
intended use, or in conjunction with other components or software which are used by
customer to create their end product or application. ST is not responsible for resistance
against such attacks. As such, regardless of the incorporated security features and/or
any information or support that may be provided by ST, each customer is solely
responsible for determining if the level of attacks tested for meets their needs, both in
relation to the ST product alone and when incorporated into a customer end product or
application.
• All security features of ST products (inclusive of any hardware, software,
documentation, and the like), including but not limited to any enhanced security
features added by ST, are provided on an "AS IS" BASIS. AS SUCH, TO THE EXTENT
PERMITTED BY APPLICABLE LAW, ST DISCLAIMS ALL WARRANTIES, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, unless the
applicable written and signed contract terms specifically provide otherwise.
4 Revision history
SYSTEM limitations:
– Added Section 2.2.22: WWDG not functional when VDD is lower than 2.7 V
and VOS0 or VOS1 voltage level is selected and Section 2.2.23: A tamper
event does not erase the backup RAM when the backup RAM clock is
disabled and Section 2.2.24: LSE CSS parasitic detection even when disabled
QUADSPI limitations:
– Added Section 2.4.4: Memory-mapped read of last memory byte fails.
12-Feb-2021 8 – Updated Section 2.4.2: QUADSPI hangs when QUADSPI_CCR is cleared
title.
Added TIM limitations: Section 2.9.1: One-pulse mode trigger not detected in
master-slave reset + trigger configuration, Section 2.9.2: Consecutive compare
event missed in specific conditions and Section 2.9.3: Output compare clear not
working with external counter reset.
Moved Section 2.13.2: DMA stream locked when transferring data to/from
USART/UART from DMA to USART section.
Updated Section 2.2.24: LSE CSS parasitic detection even when disabled.
Added documentation erratum Section 2.2.25: Output current sunk or sourced
07-Jun-2022 9
by Pxy_C pins.
Added Section 3: Important security notice.
STMicroelectronics NV and its subsidiaries (“ST”) reserve the right to make changes, corrections, enhancements, modifications, and
improvements to ST products and/or to this document at any time without notice. Purchasers should obtain the latest relevant information on
ST products before placing orders. ST products are sold pursuant to ST’s terms and conditions of sale in place at the time of order
acknowledgement.
Purchasers are solely responsible for the choice, selection, and use of ST products and ST assumes no liability for application assistance or
the design of Purchasers’ products.
Resale of ST products with provisions different from the information set forth herein shall void any warranty granted by ST for such product.
ST and the ST logo are trademarks of ST. For additional information about ST trademarks, please refer to www.st.com/trademarks. All other
product or service names are the property of their respective owners.
Information in this document supersedes and replaces information previously supplied in any prior versions of this document.