Electrical – STM32 NRST being held low

microcontrollerstm32

I am using an STM32F302C8T6 and ST-LINK v2. The MCU should normally be pulling NRST high through its weak pull-up resistor, however it's being held low somehow. This prevents me from being able to flash.

BOOT0 is tied low. If I hold NRST high with a PSU at 3.3V with current limiting to 5mA, the debugger can pull NRST low temporarily to reset the MCU and flash reliably.

This is the MCU schematic:

enter image description here

The only thing that was connected between NRST and the debugger was a TVS diode that I removed (D41).

I am seeing this behavior across multiple boards with similar schematics.

I suspected that D42 was backdriving the MCU as I was reading 3V on the open drain STATUS_R/G/B inputs, so I removed D42.

After re-reading the datasheet, I realize that I should have a 0.1uF decoupling cap from NRST to GND. I don't think that is the problem though.

Best Answer

I measured the resistance from NRST to GND and it was ~2k. I de-soldered the MCU and re-measured the resistance from NRST to GND, which was now larger than 20M.

enter image description here

The internal circuitry is just a pull-up and schmitt trigger, so I concluded that there was some internal short in the MCU, which is backed up by bizarre behavior by the MCU beyond this NRST problem. I cannot double check this with another MCU as the pads are messed up from all the rework now.