ES0587 · Errata sheetSTM32U535xx and STM32U545xx device errata
Download .pdfOpen in the full document

Description of device errata

Description of device errata

The following sections describe the errata of the applicable devices and provide a workaround where available. They are grouped by device functions.

The applicable devices are based on Arm® Cortex® core.



Note:

Arm and Cortex are registered trademarks of Arm Limited (or its subsidiaries or affiliates) in the US and/or elsewhere.

The Arm word and logo are trademarks of Arm Limited (or its subsidiaries) in the US and/or elsewhere. All rights reserved.

Access permission faults are prioritized over unaligned device memory faults

Description

A load or store which causes an unaligned access to device memory results in an UNALIGNED UsageFault exception. However, if the region is not accessible because of the MPU access permissions (as specified in MPU_RBAR.AP), then the resulting MemManage fault is prioritized over the UsageFault.

The failure occurs when the MPU is enabled and:
  • A load/store access occurs to an address which is not aligned to the data type specified in the instruction.
  • The memory access hits one region only.
  • The region attributes (specified in the MAIR register) mark the location as device memory.
  • The region access permissions prevent the access (that is, unprivileged or write not allowed).

The MemManage fault caused by the access permission violation is prioritized over the UNALIGNED UsageFault exception because of the memory attributes.

Workaround

None. However, it is expected that no existing software is relying on this behavior since it was permitted in Armv7‑M.

System

LSE crystal oscillator may be disturbed by transitions on PC13

Description

On LQFP and UFQFPN packages, the LSE crystal oscillator clock frequency can be incorrect when PC13 is toggling in input or output (for example when used for RTC_OUT1).

The external clock input (LSE bypass) is not impacted by this limitation.

The WLCSP and UFBGA packages are not impacted by this limitation.

Note:

Avoid toggling PC13 when LSE is used on LQFP and UFQFPN packages.

Workaround

None.

The PWR_S3WU interrupt is generated for internal wake-up sources (WUSELx = 11)

Description

According to some reference manual versions, the PWR_S3WU interrupt is not generated for internal wake-up sources (when WUSELx = 11 in PWR_WUCR3 register). However, upon wake-up from Stop 3 mode with WUSELx = 11, two interrupts are generated: the PWR_S3WU and the internal wakeup source (RTC or TAMP) interrupts.
Note:

The PWR_S3WU flag (WUFx in PWR_WUSR) is automatically cleared when clearing the internal wake-up source flag.

Workaround

Set the PWR_S3WU interrupt with a lower priority than the internal source interrupt (RTC or TAMP). Consequently, upon wake-up from Stop 3 mode, the RTC or TAMP interrupt is serviced first. Then, the PWR_S3WU interrupt is entered without the corresponding flag (WUFx in PWR_WUSR) being set. This interrupt service routine can be returned without clearing any flag.

VDDUSB is internally connected to VDD in WLCSP56 packages

Description

The VDDUSB is internally connected to VDD in the following these devices:
  • STM32U535NEY6QTR
  • STM32U545NEY6QTR
  • STM32U535NCY6QTR
As a consequence, if USB is required, VDD must be in the [3.0 V; 3.6 V] range. The latest revision of the datasheet (Revision 4) includes the following updates:
  • Figure x: WLCSP56_SMPS ballout now correctly shows VDD instead of VDDUSB.
  • Table x: STM32U535xx/545xx pin/ball definitions now shows pin number A1 moved from VDDUSB to VDD line.

Workaround

None.

Flash programming can remain stuck in case of programming sequence error

Description

If an operation is started while the write buffer is waiting for the next data (STRT or OPTSTRT is set while WDW is already set), the PGSERR flag is set and the programming sequence is expected to be aborted. However, the WDW bit remains set and the flash programming operation remains stuck, waiting for the second word to be written.

Workaround

Write the second word to the write buffer to either start the programming (if the programming sequence is correct) or raise a new error, which resets the WDW flag.

HardFault on wake-up from Stop mode may occur in debug mode

Description

A HardFault may occur at wake-up from Stop mode when the following conditions are met:
  • Device is in debug mode.
  • DBG_STOP bit is set in DBGMCU_CR.
  • A wake-up event/interrupt from an SRD peripheral (except EXTI) occurs in a timing window of four clock cycles during Stop mode entry sequence. SRD peripherals are the ones connected to AHB3 and APB3.

Workaround

None.

Full JTAG configuration without NJTRST pin cannot be used

Description

When using the JTAG debug port in Debug mode, the connection with the debugger is lost if the NJTRST pin (PB4) is used as a GPIO or for an alternate function other than NJTRST. Only the 4-wire JTAG port configuration is impacted.

Workaround

Use the SWD debug port instead of the full 4-wire JTAG port.

Too low MSI frequency upon exit from Standby or Stop 3 mode

Description

The MSI clock frequency can be up to 25% lower than expected upon exit from Standby or Stop 3 mode, for a maximum of 200 µs.

Workaround

In case accuracy is needed, wait for 200 µs after exiting Standby or Stop 3 mode before using the MSI.

PWR_BDCR1 is not write-protected by DBP

Description

When the DBP bit of PWR_DBPR register is cleared, the write access to backup domain content is expected to be disabled. However, PWR_BDCR1 register is not write-protected when DBP = 0.

Workaround

None.

MSIK clock cannot be stopped when used as kernel clock by MDF1 or ADF1

Description

MSIK can be used as kernel clock by the MDF1 and ADF1 by configuring the MDF1SEL and ADF1SEL bitfields of RCC_CCIPRx registers.

Once selected as kernel clock source for MDF1 or ADF1 peripherals, MSIK can no longer be disabled using the MSIKON bits of the RCC_CR register. This is because MDF1 and ADF1 request their kernel clock by default after reset.

If the application requests an entry in Stop 0, Stop 1, or Stop 2 mode, the selected MSIK kernel clock remains enabled leading to an overconsumption in this mode. The Stop 3 mode is not concerned by this limitation. MDF1 is not concerned for Stop 2 mode.

Workaround

Before disabling the MSIK clocks, configure MDF1SEL and ADF1SEL to HCLK.

In case the application wants to enter Stop 0 or Stop 1 mode, and the MDF1 and ADF1 are not used during Stop mode, then configure MDF1SEL and ADF1SEL bitfields to HCLK before entering Stop mode. Upon Stop mode exit, restore the required MSIK kernel clock with the MDF1SEL and ADF1SEL bitfields. In case the application wants to enter Stop 2 mode and the ADF1 is not used during Stop mode, the same procedure is needed only for ADF1SEL.

In case the application wants to enter Stop 0, Stop 1, or Stop 2 mode and the MDF1 or ADF1 peripheral is used during Stop mode (Stop 0 and Stop 1 modes only for MDF1), then simply configure the MDF1SEL and ADF1SEL bitfields to required MSIK kernel clock. These peripherals request their kernel clock when they need it.

Incorrect backup domain reset with VBAT and VDD supplied by different power sources

Description

The backup domain reset may be missed upon backup domain power‑on subsequent to a VBAT power‑off, in VBAT mode, if the VBAT voltage during the power‑off phase drops to a few mV window before starting to rise again. In this critical window, the flip‑flops are no longer able to safely retain the information, and the backup domain reset has not yet been triggered. This window is located in the range between 100 mV and 700 mV, with the exact position depending mainly on the device and on the temperature. The issue only occurs when MONEN = 0 in the PWR_BDCR1 register (backup domain supply and temperature monitoring are disabled).

This missed reset results in unpredictable values of the backup domain registers, which may cause a spurious behavior such as driving the LSCO output pin on PA2, raising an unexpected tamper event preventing the SRAM2 or PKA access, or influencing any of the backup domain functions.

Workaround

Apply one of the following measures to avoid the incorrect backup domain reset:

  • If the extra consumption is acceptable, enable backup domain supply and temperature monitoring (MONEN = 1 in PWR_BDCR1). The maximum extra consumption is 1.2 µA from VBAT when VDD is above VBOR0, and around 3.6 µA from VBAT in VBAT mode.
  • In the application, let the VBAT supply voltage fall to a level below 100 mV for more than 200 ms, before a new power‑on.
If the two previous workarounds are not applicable and the boot follows a backup domain power‑on reset:
  • Erase the backup domain by software.
In order to discriminate the backup domain power‑on reset from a power‑on reset or exit from Shutdown mode, at least one backup register (called, for example, BackupTestRegister) must be previously programmed with a BKP_REG_VAL value with 16 bits set and 16 bits cleared. Robustness of this workaround can be significantly improved by using a CRC rather than registers. The registers are subject to backup domain reset.

The workaround consists in calculating the CRC of the backup domain registers: RCC_BDCR and RTC/TAMP registers, excluding bits modified by hardware.

The CRC result can be stored in the backup register instead of a fixed value. This value needs to be updated for each modification of values covered by CRC, such as by using CRC peripheral.

At the very beginning of the boot code, insert the following software sequence:

  1. Check if the BORRSTF flag of RCC_CSR is set (the reset is caused by a power‑on).
  2. If true, check that the BackupTestRegister content is different from BKP_REG_VAL, or the CRC recalculation is different from stored results, accordingly the chosen workaround implementation.
  3. If true and if no tamper flag is set (when tamper detection is enabled), the reset is caused by a backup domain power‑on. Apply the following sequence:
    1. Enable the PWR clock in RCC, by setting the PWREN bit of RCC_AHB3ENR.
    2. Enable backup domain access, by setting the DBP bit of PWR_DBPR.
    3. Reset the backup domain by:
      1. Writing 0x0001 0000 to RCC_BDCR, which sets the BDRST bit and clears other register bits that might not be reset.
      2. Reading RCC_BDCR, to make the reset time long enough.
      3. Writing 0x0000 0000 to RCC_BDCR, to clear the BDRST bit.
    4. Clear BORRSTF, by setting the RMVF bit of RCC_CSR.

EXTI LOCK bit does not lock privilege configuration

Description

Both security and privilege configuration of the extended interrupts and event controller (EXTI) must be locked when the LOCK bit of the EXTI lock register (EXTI_LOCKR) is set. The EXTI security configuration register (EXTI_SECCFGR1) is locked as expected, but the EXTI privilege configuration register (EXTI_PRIVCFGR1) can still be modified when the LOCK bit is set.

Workaround

None.

Device may be locked upon system reset under Stop 2 mode

Description

A system reset occurs when the MCU is in Stop 2 mode on LDO regulator, with at least, one RAM in power‑down (SRAMx, Caches, or peripheral SRAMs). This may lock the device in a high consumption state (dozens of mA). The IWDG, the external NRST pin, and the BOR thresholds 1 to 4 are the reset sources that create this limitation.

Only a power-on sequence recovers from this state: VDD must drop below VBOR0 (brownout reset minimum threshold value), then raise to its expected value.

This limitation is not present:
  • upon wake-up from Stop 2 mode with other wake-up sources (GPIO or peripheral interrupt).
  • if the device is supplied by the SMPS regulator during Stop 2 mode.
  • in Stop 0, Stop 1, and Stop 3 modes.

Workaround

Keep all SRAMs powered on during Stop 2 mode that is all xRAMxPD/PDS bits in PWR_CRx registers must be kept at their reset state.

SRAM ECC error flags and addresses are updated only if interrupt is enabled

Description

In the reference manual RM0456, up to version 4, it is stated that:
  • If a single error is detected, SEDC and CSEDC flags are set in RAMCFG_MxISR and RAMCFG_MxICR respectively. The ECC single error address is updated in RAMCFG_MxSEAR.
  • If a double error is detected, DED and CDED flags are set in RAMCFG_MxISR and RAMCFG_MxICR respectively. The ECC double error address is updated in RAMCFG_MxDEAR.
However, the real behavior is that:
  • If a single error is detected, SEDC and CSEDC flags are set, and the associated ECC single error address is updated only if the single error interrupt is enabled (SEIE bit of RAMCFG_MxIER is set).
  • If a double error is detected, DED and CDED flags are set, and the associated ECC double error address is updated only if double error interrupt or NMI is enabled (DEIE bit or ECCNMI bit of RAMCFG_MxIER is set).

This is a documentation error rather than a device limitation.

Workaround

When the application needs to get the ECC error flags and addresses status without servicing the associated interrupts, the RAMCFG SEIE/DEIE interrupts must be enabled with the associated NVIC RAMCFG vector 5 disabled.

PVD_IN I/Os analog switches are not functional when supplied by VDDA

Description

The PVD_IN IO analog switches are not functional when supplied by VDDA (BOOSTEN = ANASWVDD = 0 in SYSCFG_CFGR1 register) or when supplied by booster voltage (BOOSTEN = 1 in SYSCFG_CFGR1 register). Consequently, PVD_IN does not work properly.

Note:

There is no PVD limitation when PVD_IN is not used.

Workaround

For all VDD and VDDA voltage settings:
  1. Disable the booster (BOOSTEN = 0 in SYSCFG_CFGR1 register).
  2. Supply the analog switch by VDD (ANASWVDD = 1 in SYSCFG_CFGR1 register).

Spurious MSI PLL unlock

Description

When MSI operates in PLL mode, the device continuously monitors the MSI input clock signal. Upon detecting a failure, it generates an interrupt and unlocks the MSI PLL. In this state, the MSI output clock accuracy degrades.

Some devices may falsely detect a failure even when the MSI input clock signal is correct and valid.

Note:

The probability of a spurious PLL unlock is higher at low temperatures and low VCORE voltages.

Workaround

In the interrupt handler, disable MSI PLL mode and enable it again. Returning to the PLL locked state takes approximately 600 µs to 1 ms.