AnsweredAssumed Answered

STM32F072 reset (NRST) not being released after short power outage or dip

Question asked by malton.jonathan on Mar 3, 2015
Latest reply on Mar 5, 2015 by malton.jonathan

I am using an STM32F072 in a simple application.  I have an open-drain reset supervisor on board monitoring a power rail and a pushbutton, driving the same net as the MCU NRST pin, and with an additional 100k pull-up to VDD.  Following a brownout and VDD recovery to 3.3V (or even a power outage of less than about 20 seconds), the supervisor correctly releases the reset signal, but the MCU holds it active (low).  Sometimes it releases it after a few tens of seconds, but often it never does.  (I know it's the MCU, because the behaviour doesn't change if I take my supervisor off the board.)

If I leave the supply off for, say, about a minute or longer, then following re-power up, the MCU does not hold NRST active beyond the external supervisor's timeout period, and the MCU starts up as expected.  There is no JTAG or other emulator attached.

I know about the multiple reasons for the MCU to drive the NRST pin, but I don't think any of them applies in this case.  The problem is present on boards with both new (never-programmed) parts, and with parts in which I have disabled the VDDA monitor through the User Byte of the Option Register.

I have VDD, VDDIO2, VBAT, and VDDA all tied directly to a well-decoupled power plane, and VSS & VSSA to the corresponding common plane.  There are discrete capacitors near each pin, and the power supply appears clean, sourced by a LM25017 buck regulator.

The problem is still present even if I short the power rail to force capacitor discharge while the supply is off, then switch it back on.  The power rail rise appears very clean and monotonic.

The BOOT0 pin is connected to VSS (plane) with 10k.

The manual says that VDDA should be present before VDD.  The Discovery board, however, provides a ferrite bead and 1u/100n filter on VDDA.  I have simply connected VDDA to VDD, since the Discovery solution is in slight contravention of the user guide.

Does someone have any similar experiences or suggestions?