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:
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.