2025-01-08 07:21 AM
We have made a batch of 30 boards using the STM32U073. One of this 30 boards is not working as expected.
I am able to connect STM32CubeProgrammer to the processor using the SWD port. I am using STM32CubeProgrammer v2.18.0. If I try and erase the flash I get ”Error: Mass erase operation failed! Please verify flash protection”.
Using the OB – Option Bytes page I see the following.
RDP = AA
WRP1A_STRT = 0x7F
WRP1A_END = 0x0
WRP1B_STRT = 0x7F
WRP1B_END = 0x0
This looks like RDP is level 0 (no read protection) and the two write flash areas are unprotected.
I do not know if the following is related but I noticed the following while investigating this issue.
2025-01-16 05:36 AM
The boards were assembled using automated pick-n-place. This is an early run of beta units and I am not sure what electrical tests were done on these boards.
We have the SWDIO, SWDCLK, NRST, 3V3 and GND connected to an STLINK V2.
The power supply that takes the USB voltage and supplies VDD using a TLV70033DDCR. This should be good for at least 100mA.
I have used a scope to look at the VDD / 3V3 rail. It is very difficult to trigger on this but I think I can see a small and brief voltage dip to about 2.940V when I try the Full Chip erase from STM32CubeProgrammer. Is this enough to cause an issue?
BOR_LEV for the failing unit was 4 (2.8V). I changed BOR_LEV to 2 (2.2V) and repeated the test and still got ”Error: Mass erase operation failed! Please verify flash protection”.
I my first post I did ask about BOR_LEV. BOR_LEV is 6 in STM32CubeProgrammer when connected to my good unit. The failing unit BOR_LEV = 4. What does BOR_LEV = 6 mean (it is not documented)? I cannot change my failing unit to BOR_LEV=6 as STM32CubeProgrammer does not give me that option.
Here is a screen shots for the working unit.
Here is a screenshot for the failing unit after I made the change I describe above.