The test shown in this image is incorrect. The actual ripple is nowhere near that large. It’s because I tested it with the bandwidth set to 100M; when set to 20M, the ripple is around a few hundred mV.
Hello OP, looking at your schematic and waveforms, your issues are very typical in switch-mode power supply development. Let me address your 4 questions one by one:
- High-frequency spikes (115MHz ringing): This is typical parasitic ringing caused by the instant of switching transistor transitions. It occurs 4 times per cycle because, in your H-bridge topology, the high-side and low-side switches of both the Buck and Boost sections experience high-frequency resonance between parasitic inductance and the MOSFET’s parasitic capacitance (C_{oss}) during turn-on and turn-off.
- How to eliminate it: First, ensure your oscilloscope probe does not use the long ground clip; use a ground spring instead. Otherwise, the long ground lead will act like an antenna and amplify this spike (this might just be a measurement “artifact”). If the spike truly exists, you need to connect an RC snubber circuit across the MOSFET’s D-S terminals, or add a small resistor in series with the gate resistor to slow down the turn-on speed.
- Reason for frequent ADC burnout: Looking at your sampling diagram, the op-amp OPA2188 is powered by +5V. Although you added the Zener diode D7 (BAT54C), you drew the connection incorrectly! The BAT54C is a common-cathode diode; you connected the cathode to the signal line and the two anodes to ground, which only protects against negative voltage and completely fails to clamp the positive voltage exceeding 3.3V. When the op-amp output is directly pulled to 5V due to a transient switch (such as the inrush surge caused by the capacitor you added), the STM32 ADC pin (which is not 5V-tolerant) gets burned out instantly. The 1K resistor (R12) you added for current limiting may not be sufficient to withstand the transient surge.
- ADC pin protection recommendations:
- Change the op-amp’s power supply directly to 3.3V (sourced from the same regulator as the MCU), which fundamentally limits the maximum op-amp output to no more than 3.3V.
- If you must use a 5V op-amp, change D7 to a BAT54S (with one diode to ground, and the other to the MCU’s 3.3V power rail). This way, when the voltage exceeds 3.3V + 0.3V, it will conduct to the 3.3V rail for clamping protection.
- Layout Principles: Prioritize minimizing the two Hot Loops. The high-frequency current slew rate (di/dt) in the input end (Cin → High-side MOSFET → Low-side MOSFET → GND) and the output end (Cout → High-side MOSFET → Low-side MOSFET → GND) is extremely high. If these two loops are poorly routed, the high-frequency glitches in your waveform will go off the charts. The large loop (from overall input to overall output) mainly carries DC and low-frequency currents; just ensure sufficient current-carrying capacity and enough capacitive filtering.
I took a look at this for you, OP. Burning out two MCUs back-to-back is a real pain, but at least it’s good that you’ve found the cause.
Regarding the high-frequency spikes, take a close look at the frequency measured by the oscilloscope—it’s already at 115MHz. At this frequency band, it’s highly likely to be radiated coupling introduced by the oscilloscope probe ground clip. You can try using the little black ground spring that comes with the probe, probing directly across the output capacitor. The spikes will definitely be much smaller.
As for why the ADC on the '32 completely died:
Looking at the big picture in your Figure 3, the op-amp is powered by 5V. When STM32 pins are configured as ADC inputs, they are not 5V tolerant (the absolute maximum rating is generally around V_{DDA} + 0.3V). After you added the capacitor and powered it back on, due to the transient response, the output probably had an overshoot, and the op-amp saturated directly to nearly 5V. This essentially fried the '32.
There’s another detail: D7 on your schematic is labeled BAT54C, which is a common cathode model. From the way it’s drawn, did you connect the pins to ground? In that case, it can only clamp negative voltages; it won’t do anything at all when the positive voltage exceeds 3.3V. I recommend swapping it directly for a BAT54S, connecting the cathode of one of the diodes to the 3.3V power supply. That way, both positive and negative voltages will be clamped.
As for the layout, you don’t need to obsess over making the large loops absolutely minimal; the key is that the two switching hot loops must be kept extremely tight. The input and output capacitors need to be placed as close as possible to their respective MOSFET pins, and you need a large copper pour for the ground plane. Wishing you a smooth, smoke-free power-up next time, OP!
Ouch! Letting the magic smoke out of two STM32 chips is a painful way to learn, but we’ve all been there.
First thing’s first: Fix your scope probing method. That 115MHz ringing looks exactly like what happens when someone uses the standard 6-inch alligator ground lead on a switching node. It picks up high-frequency EMI from the air. Use a ground spring tip right across the output cap.
Now, let’s talk about why your ADCs are frying. Look at your VOUT sampling circuit. Your op-amp runs on a 5V rail. When you threw in more output caps, you changed the transient behavior. During boot-up, the op-amp probably slammed right into the 5V rail. Even with that 1K resistor, it’s dumping too much current into the STM32’s ESD diodes, cooking the internal ADC mux. Also, check your diode part number: BAT54C is common cathode. You’ve got both remaining pins tied to ground. That means it only protects against negative transients. It’s doing zilch for positive overvoltage!
Quick fixes to save your third MCU:
- Swap BAT54C out for a BAT54S. Tie the clamping pin to your 3.3V rail.
- If you don’t need to measure all the way up to 5V, just power the OPA2188 with 3.3V. It’s a rail-to-rail op-amp, so it’ll work perfectly fine for your 2.72V full-scale signal.
For the layout: Just shrink the two hot loops (Vin cap to Buck switches, and Vout cap to Boost switches). Keep them tight, use a solid ground plane, and you’ll be golden.
The symptoms you’re describing sound a lot like the ADC pin got overvoltaged. An RC low-pass only filters the average; it can’t stop ns-level spikes. Especially since you said it fails on power-up after adding a few output caps, it indicates that the inrush current and ringing during startup might be more severe. The STM32 ADC input pins do have protection diodes, but they aren’t meant for absorbing spike currents long-term—if you exceed the injection current limit, they’ll still fry. I recommend adding a 1k–10k series resistor before the ADC, plus a ~3.6V clamping diode, or just using a TVS/small-signal Schottky for protection. Layout-wise, the high di/dt hot loop must be kept to an absolute minimum, and don’t route the sampling traces right next to the SW node.
- The MOS input capacitance (Ciss) you selected is a bit too large, which isn’t ideal for high-frequency switching. What is your switching frequency set to?
- You can add a 3.3V TVS/ESD diode to the ADC pin to clamp the voltage, or add a Schottky diode to the 3.3V power rail to clamp the voltage at 3.3V.
- Ensure the input and output loop areas are minimized; even larger loops need to be kept small.
The switching frequency is 100k, I calculated the switching loss earlier, and it’s around 1W at my rated output. My design is 15-60V → 30V 5A.
Hey experts, I want to ask why my build can only step down the voltage with a 12V input. When I input 12V with no load connected, the screen shows the output is totally normal from 0.5V to 12V. But as soon as I turn it up to around 13V, it can’t output any higher, and no matter how much further I turn it, the output still stays at 12V
I followed the blogger’s design exactly and haven’t modified the schematic or PCB at all. Experts, please help me out ![]()
Check for any cold solder joints.
I’d like to ask you experts if you’ve ever encountered a MOSFET where the G, D, and S pins are all shorted/conducting to each other. What could be causing this? How should I diagnose it?
My current control method relies solely on voltage feedforward. It calculates the target duty cycles for both sides based on the input voltage and my target output voltage, then initiates soft start based on those target values. An interrupt is triggered at a frequency of 500Hz, and with each interrupt, the MOSFET duty cycle increments by 0.02. Here is my power-up log:
-
At 58V input and 30V output, with a 220uF input capacitor and a 470uF output capacitor, the circuit operates normally both unloaded and with a 20Ω load. Afterwards, I added a few more output capacitors.
-
At 58V input and 30V output, with a 220uF input capacitor, and output capacitors consisting of two 470uF green-gold electrolytic capacitors, a 100uF solid capacitor, and a 600nF film capacitor, plus a 100uH inductor with a vendor-rated saturation current of 12A. Under these conditions, I powered up the circuit and found that the G, D, and S pins of both MOSFETs on the buck side were all shorted/conducting to each other, whereas the boost side had no issues. The MOSFET damage must have occurred during the power-up sequence.
-
I saw an AI suggest that after increasing the output capacitance, the larger charging current required by the output capacitors might have caused the MOSFETs to blow. But why would it only damage the buck side and not the boost side?
Based on what you’re saying, does this mean it can only step down the voltage and not step it up? Can you check if the MOSFET on the boost side is switching properly? Is the drive signal normal?
The MOS used is CSD19534Q5A
What type of inductor is it? A molded inductor? A toroidal inductor? What kind of core? Sendust? What’s the switching frequency?
Did you check the MOS temperature? Did it blow up from overheating due to excessive losses?
Encountering a full short circuit across the G, D, and S pins of a MOSFET (commonly known as a “blown MOSFET”) is indeed a huge headache. In power supply development, this highly destructive failure usually means that a catastrophic thermal runaway (direct meltdown) has occurred inside the silicon die, causing the physical isolation layers between the three terminals to completely burn through and fuse together.
The phenomenon you observed is very typical. The AI was heading in the right direction by saying “increased output capacitance leads to higher charging current,” but that only explains the surface-level cause. Combining your control logic and hardware parameters, we can deeply analyze the root cause of this “accident” and why it selectively blew up only the Buck side.
1. Why did only the Buck side blow up, while the Boost side remained intact?
Under the operating condition of 58V input and 30V output, your circuit is operating in Buck mode.
In this mode:
- Buck-side MOSFETs (input side): They are performing high-frequency hard-switching actions, responsible for “chopping” the 58V high voltage. The high-side MOSFET bears immense switching stress, and the low-side MOSFET (synchronous rectifier) also needs to switch frequently in coordination.
- Boost-side MOSFETs (output side): They are in a “pass-through” state (or high-side always on, low-side always off). They do not perform high-frequency switching and are only responsible for conducting current.
When a surge overcurrent occurs, the energy is supplied from the 58V input. The high-side MOSFET on the Buck side is the “first gate” connecting the power supply to the inductor. When the system loses control and the current spikes instantly, the MOSFETs doing the high-frequency switching on the Buck side are the first to bear the massive inrush current (I^2R thermal loss). Since the Boost MOSFETs are constantly on, they only bear conduction losses and lack the dynamic losses and voltage spikes brought by switching, so they can usually survive.
2. The “Chain Killer” Leading to the G, D, S Short Circuit (Cause Analysis)
Your control method has a fatal hidden danger: pure voltage feedforward open-loop control (no current loop) paired with a massive output capacitance.
Here is the complete chain of events leading to the MOSFET destruction:
1. Fatal Control Logic: Lack of Current Feedback
Your current control is “calculate target duty cycle → soft-start step.” This means the microcontroller is blind; it has no idea how much current is currently flowing through the inductor.
According to the capacitor charging formula I = C \frac{dV}{dt}, when you increase the output capacitance from 470uF to nearly 1100uF, the amount of charge required to reach 30V doubles. Since your soft-start duty cycle step speed is fixed (increasing by 2% every 2ms), the forced increase in duty cycle forces the LC filter to build up voltage, thereby demanding a massive transient current.
2. Instant Inductor Saturation (The Core Culprit)
Your inductor has a rated saturation current of 12A and an inductance of 100uH.
Under pure voltage feedforward, the step change in duty cycle (2% each time) causes an instant imbalance in the volt-second product applied to the inductor. For a capacitor bank with a total capacitance exceeding 1000uF, when the initial voltage is 0, it acts essentially as a short circuit.
When the surging inrush current exceeds 12A, the inductor undergoes magnetic saturation. Once saturated, its inductance drops instantly (approaching 0). At this point, the inductor is no longer an energy-storing component but turns into a wire with extremely low resistance!
3. Shoot-through and Thermal Meltdown (The Final Verdict of the G, D, S Short Circuit)
Once the inductor loses its current-limiting effect, the 58V input voltage is applied almost directly across the R_{ds(on)} of the Buck high-side MOSFET and the tiny parasitic resistance.
- The current can instantly spike to tens or even hundreds of amperes.
- Miller turn-on: The extremely high di/dt will cause severe oscillations across the parasitic inductance of the inductor and PCB traces ( V = L \frac{di/dt}{dt} ). These high-frequency, high-voltage spikes will couple to the gate through the MOSFET’s Miller capacitance ( C_{gd} ). If the gate drive capability is insufficient or the turn-off resistance is too large, the gate voltage will be forcibly pulled high, causing both the high-side and low-side MOSFETs on the Buck side to turn on simultaneously (Shoot-through).
- The 58V is directly shorted to ground. Accompanied by a massive short-circuit current, the silicon die inside the MOSFET instantly reaches hundreds or even thousands of degrees. The gate oxide layer (an extremely thin silicon dioxide insulating layer) ruptures, and the metal of the G, D, and S terminals physically melts and short-circuits together.
3. What Should You Judge and Verify Based On?
To corroborate the above reasoning, you can make post-event judgments from the following aspects:
- Check the inductor status: See if the magnetic core of the 100uH inductor has changed color due to heat, or if the coil has any scorch marks. Although the current happens in an instant, severe saturation overcurrent can sometimes leave physical traces.
- Check the Gate Driver IC: Since the G, D, and S are fully shorted, the 58V high voltage definitely backfed into your driver IC (such as IR2104, EG8010, etc.) via the Gate pin. The driver IC is highly likely already burned out, and even the microcontroller’s PWM pin might be damaged.
- Calculate your soft-start slope: 500Hz interrupt = 2ms period. Each change is 0.02 (2%). Going from 0% to an assumed 50% duty cycle only takes 50ms. Under the condition of no current limit, charging a 1000uF capacitor to 30V within 50ms—you can estimate the average charging current; the peak current absolutely far exceeds the inductor’s 12A.
4. Fundamental Improvement Suggestions
If you want to completely solve this problem and avoid blowing up MOSFETs again, you need to make the following system upgrades:
- Must introduce hardware overcurrent protection (OCP): This is the fail-safe measure. Sample the current at the Buck low-side or the bus. Once the current exceeds 10A (leaving a little margin to prevent saturation), immediately shut down the PWM signal via hardware circuitry. You absolutely cannot rely entirely on software interrupts to put out the fire.
- Add an inner current loop (closed-loop control): Don’t use a “calculated” duty cycle to brute-force the circuit. A mature DC-DC must be a dual closed-loop (outer loop controls voltage, inner loop controls current). Let the voltage error generate a current setpoint, limit the maximum of this setpoint to no more than 10A, and then let the current loop dynamically adjust the duty cycle.
- Drastically slow down the open-loop soft-start: If you can’t implement the dual closed-loop algorithm right away, you must make the 0.02 step much smaller (e.g., 0.001), or lower the interrupt frequency to give the capacitors enough time to charge smoothly. At the same time, use an oscilloscope to capture the inductor current to ensure the maximum peak current during startup is < 10A.
The inductor should be a Sendust toroidal inductor, the switching frequency is 100K. The MOS temperature wasn’t tested because there was a burning smell just a few seconds after powering it on, so I immediately cut the power. I don’t have the equipment to measure the temperature here either.
The inductor does seem to have burn marks, but I’m not sure if it was caused by powering it on or if I scorched it while soldering, the gate driver chip is working normally,
Do you have an oscilloscope? You can connect a sense resistor in series with the inductor, and use the oscilloscope to measure the voltage change across the sense resistor to check the peak inductor current.
The file already includes the lamination stackup; impedance is not required.
