Help! I think my core’s regulator is dead and I don’t understand what happen. I was using the core as usual and decided to add a second analog input to read the voltage of the power source to the core. I have the core powered by a switching regulator taking 14v down to 3.7v. I added the input a6 to my code but when I connected a wire from vin to a6 I heard my power supply hum and shortly after the core went off. I did this a few times and gave up on a6 thinking maybe it was bad. I changed my code to use a5. When I connect a5 no noise was heard from my power supply but the core went out for the last time. Further investigation showed .7v coming out of my regulator. What would cause the inputs to draw so much current? I see examples when using an output where the pin must be set as an output but did not see this for inputs so I didn’t set the pin as anything. Could it have been set as an output maybe? That is the only way I can think it would draw so much current. I’m very sad that my core has died. I may try to revive it if I can get a hold of a replacement regulator.
Dang, was it the 3.7v I put on the input? I just realized the max is 3.3v for analog inputs. What happens if you put 3.7v on an input, or do I already know
It sounds like you may have released the magic smoke. SparkFun has a Magic Blue Smoke Refilling Kit that might help.
There are some pins that can tolerate up to 5v as listed in the Core Hardware - Pins and I/O documentation, but I don’t see any of the analog pins in there.
Disclaimer: The Magic Blue Smoke Refilling Kit was an April Fool’s joke a few years back!
I looked up the STM32 datasheet and the A6 which is PB0 on the mcu is not 5v tolerant.
What i would suggest it so use a USB cable to power up the core WITHOUT any external devices/circuitry connected. Hook up a Multimeter to 3.3V and ground to observe the voltage.
But be quick about disconnecting once you see the core behaving erratically or there’s like a short. If you use the USB port on your laptop, they have resettable fuses if the current draw is too high. So that’s gonna keep you safe.
You might get away with only a damaged A6 pin with the other parts of the core intact. That’s the best scenario i can think of.
Another thing is to check the output voltage of the power supply of 3.7V and see it it’s working fine.
Hear from you soon
Haha, if only the magic smoke were real!
I already tried to power the core by usb with no luck. Further investigation revealed that the on board regulator is only putting out 0.7v. What I don’t know yet is if that is because the reg is damaged or because the components are shorted pulling the output down. I will rig up an external 3.3v regulator and try to power the core via the 3.3v pin which is connected directly to the on board regulator’s output (this should bypass the on board reg). If the reg is truly dead then this should power the core and I can test how extensive the damage is (maybe only lost the pins I zapped a6 and a5). If something is shorted on the board then it probably toast and I will have to buy smoke refill.
I would like to know what the failure mode is when 3.7v is put on an a6 or a5. I mean we know it is bad but what is the expected failure mode?
You can basically end up with a damaged STM32 chip.
The inputs to STM32F103 chip, like all modern CMOS ICs, have diodes that are connected from the input pin to power and ground rails such that normally no current is flowing. If you drive the input above the voltage on the power pins (3.3V) plus a small diode drop, current will start to flow in from the input pin into the power connections on the chip. Similarly if you were to drive the input pin below ground, the other diode would conduct and current would flow out of the IC ground into what was pulling the input down.
Here’s a typical picture I found online–the protection diodes go from the input (GP4 here) to Vdd (3.3V) and Vss (ground). The P and N FETs are the output drivers and the triangle-shaped buffer is the input which then drives a latch to hold input values.
If you overdrive the input very briefly, as happens with overshoot and undershoot on a signal, everything is fine and the capacitors on the power lines help to soak up the extra voltage. Sometimes the “ground bounce” of pulling current out of the chip ground makes the chip do funny things like reset, but it doesn’t hurt anything permanently. These diodes also help protect chips from static shocks, known as ESD. ESD is high voltage but low current so normally the diodes survive OK.
But if you drive the input continuously above the power supply voltage, a lot of current can flow and eventually things heat up and something gets damaged. Usually the protection diodes inside the IC pop open and then all hell breaks loose since the other circuits in the IC are not designed for over-voltage.
Unfortunately, I think is a lot more likely that you damaged ARM processor STM32F103 than it is that you damaged the voltage regulator. Your testing plan is a good one, using a separate 3.3V supply, but I would remove the regulator before trying that. It removes one variable and will tell you directly if your core is fried. Plus if the core does work, you are half way to fixing it by removing the bad part.
Lots of time physical inspection (maybe with a magnifier) can tell you what is fried. Chips have little telltale sooty marks or a bubble in the plastic on them near the area of failure. Sometimes your nose can also lead you to the bad part (with the power off!). I have chips that look like miniature Mt. Vesuvius with a big crater in the middle, so you are not the first one to let out the magic smoke as we say!
When I suspect I may have fried something, this is the first test I perform. It’s usually pretty accurate.
I should invite you over to my house in mid-January. We could disconnect from the grid and power our entire home on ESD alone. Humidity dips below 10% RH frequently.
Thanks for that explanation! Your probably right that I fried the processor. Better get another core on order.
Maybe it’s cool if you get try your hands on replacing the STM32 but unless you have the JTAG/STlink etc. OR someone near you with those tools might wanna help
I doubt I would be successful replacing the STM32 with my skills. I did however power it up today by bypassing the on board regulator. I didn’t get a chance to test what life is left in it but it was able to connect to wifi so that is pretty good success so far.
It is really a good possibility that you only fried the pins you connected to too high a voltage–the rest of it might work fine. Or you could be right and it was the voltage regulator. Glad to hear it came back up in some form.
Does that make it undead? The first wi-fi zombie robot?
Yes, that makes it undead! Haha. I don’t really like zombies but I have one now. A6 is still shorted and I don’t know about A5 but I moved on to an unabused input and it is working. So I smoked that little regulator and an input or too. I can live with that! My project is back running with a bypassed regulator. I found those little guys for 50 cents but $3 shipping haha. Will order one and should be an easy repair.
Thanks for the support and help!
Glad that you got about the best outcome you could given the circumstances! Its a good learning experience that I think everybody goes through at one time or another.
Just revived my core! I replaced the regulator with the same pn from digikey and it lives on. Definitely killed those two inputs but I didn’t need all of them anyway.
Very impressive! Instead of a zombie Core, is it now a Frankencore?
hi can you help me to do the same?
Hi, to bypass the regulator connect a 3.3v power source between a ground pin and the 3.3v pin. I think it is safe to do this with a USB also connected but maybe someone can chime in on that. If you just want to power the board to see if it is still good leave all other power sources disconnected while powering through the 3.3v pin to be safe. Be very careful to not go over 3.3v or it will surley damage the core.