A 6S AM32-compatible ESC built as a proof of concept for learning how to design an ESC from scratch
Loading README and project media…
https://github.com/user-attachments/assets/5f652ef7-dc9c-4700-bebd-08a81333550c
A 6S AM32-compatible ESC built as a proof of concept for learning how to design an ESC from scratch. It gets a motor spinning — that's about the extent of what's guaranteed. Beyond that, expect rough edges.
The design is sloppy in places. If you spot schematic, layout, or component choices that actively work against basic ESC functionality, open an issue.


| t (s) | Action | Throttle | Duration |
|---|---|---|---|
| 0.0 | Idle | — | 1.0 s |
| 1.0 | Ramp | 0 → 20% | 1.5 s |
| 2.5 | Hold (capture) | 20% | 2.0 s |
| 4.5 | Ramp | 20 → 35% | 0.8 s |
| 5.3 | Hold (capture) | 35% | 2.0 s |
| 7.3 | Ramp | 35 → 50% | 0.8 s |
| 8.1 | Hold (capture) | 50% | 2.0 s |
| 10.1 | Ramp | 50 → 65% | 0.8 s |
| 10.9 | Hold (capture) | 65% | 2.0 s |
| 12.9 | Ramp | 65 → 80% | 0.8 s |
| 13.7 | Hold (capture) | 80% | 2.0 s |
| 15.7 | Ramp | 80 → 95% | 0.8 s |
| 16.5 | Hold (capture) | 95% | 2.0 s |
| 18.5 | Ramp down | 95 → 0% | 1.5 s |
| 20.0 | End | — | — |



https://github.com/user-attachments/assets/3ce99b9d-343a-43b4-ace9-065e4792fe87
General workflow for getting AM32 running on any custom STM32-based ESC, not just this one. Two things to figure out for your own board: which AM32 target matches your pin layout, and how to physically flash it.
AM32 organizes pin assignments in two layers:
F0_A, F0_B, etc.) and listed in the AM32 Supported Hardware wiki.Inc/targets.h in the am32-firmware/AM32 repo as #ifdef blocks.Compare your schematic against the hardware group table. If one matches your phase outputs, BEMF pins, and signal input exactly, use it and write a target that points to your ADC pins. If nothing matches, you'll need to define a new hardware group — that means editing the MCU-level source, not just a target header.
Match your signal input pin carefully. The bootloader .hex filename encodes which pin it expects (e.g. ..._PB4_V17.hex expects the signal on PB4). Mismatches mean the ESC won't respond to the configurator.
SWD only — the bootloader has to go on over ST-Link. Wire SWDIO, SWCLK, and GND from the ST-Link to the SWD pads on the ESC, and power the ESC from a LiPo.
.hex to 0x08000000.Once the bootloader is on, the main firmware goes over the signal wire via FC passthrough — no more SWD needed.
.hex matching your target from the AM32 releases..hex.The FC needs to be running a DShot protocol (300 or 600) for passthrough to work, and the ESC needs battery power — USB alone won't boot it.