lpcware

LPC812 died - Latchup for NO reason?

Discussion created by lpcware Employee on Jun 15, 2016
Content originally posted in LPCWare by MarcVonWindscooting on Fri Aug 02 17:17:44 MST 2013
Something nasty happened to a LPC812M101FD20 last week.
While working at an ISP flash programmer, I had one of these uC in a simple, home-made development board. I already programmed the part and it did work. It was powered by 3.3V from a lab supply. Programming/communication was done with a FT232R plus a ADUM2401 magnetic isolator. An oscilloscope (on an isolating transformer) was connected to GND of the uC and the tip to P0.12 (configured as CLKOUT). A 4.7k load (kind of a logic probe with 2 LEDs) was attached to P0.15. All outputs have 300R series resistors on board to avoid any serious shorts. I switched it on using the switch of the lab supply mains switch.

At some point, I tried to flash that thing and noticed it not responding. I looked up at the power supply and noticed it was in current limiting mode and showed about 300mA  :O . Yes I know. Why the hell didn't I adjust to max 30mA or so in the first place? Because I didn't believe, anything could go wrong in such a simple configuration.
I unplugged everything as fast as I could, but hey, I don't know at what point it happened. I touched the device and it was burning hot!

What I do not understand is: this is a (...okay - "only" self-made...) development board with those series resistors TO AVOID what happened. But it happended! The only low impedance path of the circuit is the LPC812 itself! And that part sunk 300mA. And yes, the chip now is like that: Low impedance from VDD to VSS while port pins are not - not one of them! Typical approx. 0.5V voltage drop to VSS (and VDD now) with negative bias.

There was no Voltage in excess of 3.3V near the LPC812. Except for the possibility of a floating oscilloscope. But that should be defeated by the GND connection of the oscilloscope tip, shouldn't it? It seems to me it was a latch-up, but I have no idea what caused it.

What was my mistake, my false assumption?
The program I used was a LED-blinking, UART 115200bd output two 'A's per second. I needed PLL (24MHz) for that, but I'm pretty sure that was correct, because I verified with the oscilloscope and the CLKOUT.
In retrospect, I remember, the device sometimes stopped the blinking program after a while (1 minute or 2), if I flashed an image, that was padded up to 16kiB for testing the flash programming tool. This never happened to the device I put in as a replacement. If 'felt' like some stack overflow after some time. Only: my program is in assembler and does not use a single function call or stack or RAM at all, only loops...

I de-soldered the chip safely (not destroying it mechanically or by heat). Can I find out anything about the cause?

Original Attachment has been moved to: asmled.txt.zip

Outcomes