Skip to content

DRV8428 + ESP32-C6 PCB Design Discussion


PROMPT: on the DRV8428 is the DECAY/TOFF HTSSOP pin no 11 the same as a reset button on the A4988 motor driver

CLAUDE ANSWER: These two pins serve very different functions — they're not equivalent to each other.

DRV8428 Pin 11 (DECAY/TOFF) — HTSSOP package This pin controls how the motor current decays between PWM cycles. It sets the decay mode (slow, fast, or mixed) and/or the off-time for the internal PWM timer. It's essentially a tuning pin for current waveform quality — it affects smoothness, efficiency, and noise, but it does NOT stop or reset the driver.

A4988 RESET Pin This pin, when pulled LOW, resets the internal translator, zeros out the step sequencer, and disables all outputs. It's a true hardware reset — the motor de-energizes and the step table goes back to the beginning.

What's the DRV8428 equivalent of RESET? The DRV8428 doesn't have a dedicated RESET pin. Instead it has:

Function DRV8428 Pin Notes
Disable outputs / coast SLEEP (pin 8) Pull LOW to disable outputs and put driver in low-power sleep
Clear fault flags nFAULT + toggling SLEEP Toggling SLEEP low→high clears latched faults
Enable outputs EN/FAULT or SLEEP Bring SLEEP HIGH to re-enable

So if you're trying to replicate the A4988 RESET behavior on the DRV8428, SLEEP is your closest analog — pulling it low disables the outputs, and bringing it back high re-enables the driver (and clears faults).

Short answer: Pin 11 (DECAY/TOFF) has nothing to do with reset — it's a current decay tuning input. For reset-like behavior, use the SLEEP pin instead.


PROMPT: is there a reset pin that i should connect to sleep on the drv8428

CLAUDE ANSWER: No — the DRV8428 does not have a RESET pin at all. Unlike the A4988 which has both RESET and SLEEP as separate pins, the DRV8428 consolidates that functionality.

What you actually need to do Just tie SLEEP high (to VCC or your logic voltage through a pullup) to keep the driver enabled. You don't need to connect anything to a reset pin because there isn't one.

A4988 Pin Typical Wiring DRV8428 Equivalent Wiring
RESET Tied to SLEEP (doesn't exist)
SLEEP Pulled HIGH to run SLEEP (pin 8) Pull HIGH via 10kΩ to VCCIO

If you want software control: If you want your ESP32-C6 to be able to disable the motor driver, wire SLEEP to a GPIO pin and control it in code:

#define SLEEP_PIN 5

pinMode(SLEEP_PIN, OUTPUT);
digitalWrite(SLEEP_PIN, HIGH);  // enable driver
digitalWrite(SLEEP_PIN, LOW);   // disable / coast motor

If you want fault clearing: Toggling SLEEP low → high also clears any latched fault on the DRV8428, so it doubles as your fault-reset mechanism too.

Bottom line: Just pull SLEEP high and move on — no reset pin needed or expected on this chip.


PROMPT: what pins on the DRV8428 should i connect to my esp32c6

CLAUDE ANSWER: ESP32-C6 → DRV8428 Connections (HTSSOP)

DRV8428 Pin Pin # Connect To Notes
STEP 13 GPIO (e.g. GPIO4) Rising edge = one step
DIR 14 GPIO (e.g. GPIO5) HIGH/LOW sets direction
nSLEEP 16 GPIO (e.g. GPIO6) HIGH = enabled, LOW = sleep/fault clear
EN/nFAULT 15 GPIO input (e.g. GPIO7) Read LOW = fault occurred
M0 10 GPIO or tie to DVDD/GND Microstepping config
M1 12 GPIO or tie to DVDD/GND Microstepping config

Power Pins (not ESP32, but critical)

Pin # Connect To
VM 1 Motor supply (4.2–33V) + 0.01µF ceramic + bulk cap to PGND
PGND 2 System ground
GND 7 System ground
DVDD 8 0.47–1µF ceramic cap to GND
VREF 9 Resistor divider from DVDD to set current limit (max 3V)
Thermal PAD System ground

Notes for ESP32-C6 specifically: - The ESP32-C6 is 3.3V logic — the DRV8428 supports 1.8V/3.3V/5V logic inputs so direct connections work, no level shifting needed - DVDD (pin 8) outputs ~5V from the internal LDO — don't connect it to your 3.3V rail - nSLEEP has an internal pulldown — it defaults LOW (sleep) so you must actively drive it HIGH to enable the driver - EN/nFAULT is open-drain — add a 10kΩ pullup to your 3.3V rail

Minimum wiring to get running: At minimum you need STEP, DIR, nSLEEP driven by the ESP32, and EN/nFAULT monitored as an input. M0/M1 can be tied to GND (full step) or DVDD through resistors for a fixed microstepping mode.


PROMPT: give me a link to the pinout that you used

CLAUDE ANSWER: The pinout information came directly from the official TI datasheet PDF, which is here:

https://www.ti.com/lit/ds/symlink/drv8428.pdf

The pin table is in Section 5.1 (Pin Functions) on page 3. That's the authoritative source — Rev. C, July 2022.


PROMPT: i have step on esp gpio 6 enable on esp gpio 7, dir on esp gpio 5

CLAUDE ANSWER:

Signal ESP32-C6 GPIO DRV8428 Pin # DRV8428 Pin Name
STEP GPIO 6 13 STEP
DIR GPIO 5 14 DIR
Enable GPIO 7 15 EN/nFAULT

One thing to flag on EN/nFAULT: It's bidirectional — both your enable input AND the fault output. In your code you'll need to: - Drive it HIGH to enable the driver outputs - Switch it to INPUT mode to read it if you want to detect a fault

What's left unassigned: - nSLEEP (pin 16) — needs to be driven HIGH; tie HIGH or assign a GPIO - M0/M1 (pins 10, 12) — microstepping config; tie to GND/DVDD or assign GPIOs - VREF (pin 9) — sets your current limit; needs a resistor divider from DVDD


PROMPT: can i connect to the 3.3v with the DVDD on the drv

CLAUDE ANSWER: No — don't connect DVDD to your 3.3V rail. DVDD is an output, not an input. It's the DRV8428's own internal 5V LDO regulator output. Connecting it to your 3.3V rail would create a conflict between two voltage sources fighting each other, and could damage either the ESP32-C6 or the DRV8428.

What DVDD is for: - It's a 5V output (up to 2mA max load) - Connect a 0.47–1µF ceramic cap from DVDD to GND to stabilize it - Use it as a reference source for VREF (through a resistor divider) and to tie M0/M1/DECAY permanently high

For nSLEEP, M0, M1 — use your 3.3V rail directly:

Pin To tie HIGH statically
nSLEEP (16) 10kΩ to 3.3V
M0 (10) 10kΩ to 3.3V (or direct)
M1 (12) 10kΩ to 3.3V (or direct)

The datasheet specifically warns that nSLEEP cannot be tied to DVDD or the device will never exit sleep mode — so 3.3V is the right place for that one anyway.


PROMPT: which pin goes to my drv 3.3 or none need to

CLAUDE ANSWER: None of your current three connections (STEP/GPIO6, DIR/GPIO5, EN/GPIO7) need 3.3V — they're all driven directly by ESP32 GPIOs.

The pins that need a 3.3V connection are the ones you haven't assigned GPIOs to yet:

Pin # What to do
nSLEEP 16 10kΩ to 3.3V (or assign a GPIO)
M0 10 tie to GND or 3.3V depending on microstepping
M1 12 same as M0

Do you want to assign a GPIO to nSLEEP so you can put the motor to sleep in code, or just tie it statically HIGH to 3.3V and leave the driver always enabled?


PROMPT: i want to drive a nema 8 stepper motor with this DRV what else do i need to connect

CLAUDE ANSWER: Power

What Where
VM (pin 1) Motor supply voltage (4.2–33V) + 0.01µF ceramic cap to PGND
PGND (pin 2) System ground
GND (pin 7) System ground

Motor Winding Outputs

DRV8428 Pin # Connect To
AOUT1 3 NEMA 8 coil A wire 1
AOUT2 4 NEMA 8 coil A wire 2
BOUT2 5 NEMA 8 coil B wire 1
BOUT1 6 NEMA 8 coil B wire 2

Current Setting

Your Oukeda 8HY2001-10 NEMA 8 is rated 0.6A per phase. The DRV8428 full-scale current formula is:

I = VREF / 1.32

For 0.6A: VREF = 0.6 × 1.32 = 0.79V

With DVDD at 5V, use a resistor divider — for example 10kΩ + 16kΩ gives roughly 0.77V.

Static Config Pins

Pin # Connect To
nSLEEP (16) 16 10kΩ to 3.3V or a GPIO
M0 (10) 10 GND or 3.3V per microstepping table
M1 (12) 12 same as M0
DECAY/TOFF (11) 11 GND for smart tune (recommended default)
Thermal PAD System ground

Microstepping options for M0/M1

M0 M1 Mode
GND GND Full step
3.3V GND 1/2 step
GND 3.3V 1/4 step
3.3V 3.3V 1/8 step
Hi-Z GND 1/16 step
Hi-Z 3.3V 1/32 step

For a NEMA 8 on a pill dispenser, 1/8 or 1/16 step is a good balance of smoothness and torque.

VM Voltage Note: The Oukeda 8HY2001-10 is rated 5V / 0.6A. You can run VM at 5V, but running it higher (up to 12V) with current limiting via VREF gives better torque and speed — the DRV8428 handles current regulation so the motor doesn't overheat.


PROMPT: I was thinking to use 6V - 4 AA batteries

CLAUDE ANSWER: 4 AA batteries at 1.5V each = 6V nominal — that works fine for VM since the DRV8428 accepts 4.2–33V.

Battery voltage sag: Fresh alkaline AAs are closer to 1.6V each = 6.4V, and they sag under load. By the time they're half depleted you're looking at 5.6V or less. Still above the 4.2V minimum so you're fine the whole usable life of the batteries.

Your ESP32-C6 needs 3.3V: The ESP32-C6 can't run directly off 6V — you'll need a regulator. Options:

Option Notes
AMS1117-3.3 LDO Simple, cheap, but wastes power as heat
MP2307 / LM2596 buck converter More efficient, better for battery life
Small 5V buck then onboard 3.3V reg If your ESP32-C6 dev board already has a 3.3V reg onboard

NEMA 8 current draw: At 0.6A per phase, two phases active = up to 1.2A peak from the batteries. AAs can handle that in short bursts but runtime will be limited — fine for a pill dispenser that only runs briefly once or twice a day.


PROMPT: I am making a custom PCB

CLAUDE ANSWER: Power Architecture for Custom PCB

4x AA (6V)
    │
    ├──────────────────── VM (DRV8428 motor supply)
    │
    └── Buck Converter (6V → 3.3V) ──── ESP32-C6 VCC

Recommended 3.3V Buck Regulator: For a custom PCB running off batteries, use a buck rather than an LDO.

Part Why
TPS62827 Buck, tiny, very efficient, TI same family as DRV8428
MP2122 Buck, easy to route, good documentation
XC9236 Buck, very small, good for compact PCB

Decoupling Caps:

Location Value
VM (DRV8428 pin 1) to PGND 0.01µF ceramic + 47–100µF electrolytic bulk
DVDD (pin 8) to GND 0.47–1µF X7R ceramic
3.3V rail to GND (near ESP32) 10µF + 0.1µF ceramic

Battery Connector: Use a 2-pin JST-PH or screw terminal. Add: - A Schottky diode (e.g. SS14) in series for reverse polarity protection - An optional power switch

Complete Power Summary:

Rail Source Used By
6V (VM) Direct from batteries DRV8428 motor supply
3.3V Buck from 6V ESP32-C6, DRV8428 logic inputs, pullups
5V (DVDD) DRV8428 internal LDO output VREF divider only, 2mA max

Layout Tip: Keep the high current motor path (VM → DRV8428 → motor outputs → PGND) short and wide, completely separate from your ESP32 logic traces.


PROMPT: which one is available in the KiCad fab library

CLAUDE ANSWER: The AP63203WU is in the official KiCad Regulator_Switching library (standard KiCad, not the Fab-specific library).

In KiCad Symbol Chooser: - Search: AP63203WU - Library: Regulator_Switching

Spec Value
Input voltage 3.8–32V
Output voltage Fixed 3.3V
Output current 2A
Package TSOT-23-6
Frequency 1.1MHz

Works with both 6V battery and 12V wall plug inputs.

External components needed: - 4.7µH inductor - 22µF output cap


PROMPT: I could also plug it in using a 12V plug

CLAUDE ANSWER: At 12V input, an LDO to 3.3V is dropping 8.7V across the regulator. Even at modest current that's a lot of heat — at 100mA: 8.7V × 0.1A = 870mW in a tiny SOT-25 package.

A buck handles both inputs cleanly. Use a diode OR circuit so either source can power the board:

Battery (6V) ──[Schottky D1]──┐
                               ├── Buck input (VM also taps here)
12V Jack    ──[Schottky D2]──┘

Buck options in KiCad:

Part Input Range Notes
TPS5430 5.5–36V TI, handles 12V easily
MP2307 4.75–23V Popular, widely used
LM2596-3.3 4.5–40V Likely in KiCad Regulator_Linear

Search LM2596 in your KiCad symbol chooser — it handles both 6V and 12V.


PROMPT: is there one in the fab library

CLAUDE ANSWER: The AP63203WU is confirmed in the official KiCad Regulator_Switching library.

Datasheet: https://www.diodes.com/assets/Datasheets/AP63200-AP63201-AP63203-AP63205.pdf

Spec Value
Library Regulator_Switching
Input voltage 3.8–32V
Output voltage Fixed 3.3V
Output current 2A
Package TSOT-23-6

External components: - 4.7µH inductor (DCR < 100mΩ, Isat > 2.7A) - 10µF input cap (X7R ceramic) - 44µF output cap (X7R ceramic, can use 2× 22µF) - 0.1µF BST cap (between BST and SW pins)

Pin connections:

AP63203 Pin Connect To
VIN Power input
GND Ground
EN Tie to VIN to auto-enable
SW Inductor one end
Inductor other end VOUT (3.3V rail)
BST 0.1µF cap to SW
VFB Tie directly to VOUT

PROMPT: yes give me a link to the data sheet as well

CLAUDE ANSWER: Official datasheet:

https://www.diodes.com/assets/Datasheets/AP63200-AP63201-AP63203-AP63205.pdf

18-page document, AP63203 specific content starts around page 10.

Typical Application Circuit external components:

Component Value Notes
Cin (input cap) 10µF X7R ceramic Close to VIN pin
Cout (output cap) 44µF X7R ceramic Can use 2× 22µF in parallel
L (inductor) 2.2–10µH DCR < 100mΩ, Isat > 2.7A
BST cap 0.1µF ceramic Between BST and SW pins

Recommended inductor: 4.7µH, e.g. Bourns SRR1260 or Würth 74439346068.


PROMPT: does fab academy libary have one

CLAUDE ANSWER: The AP63203WU is not in the Fab Academy KiCad library. The Fab library is intentionally small, focusing on components stocked at Fab Labs.

The voltage regulator commonly used in Fab Academy student work is the LM3480 or LM3480IM3-3.3 — a simple LDO, not a switching regulator.

Options:

Part Max Current In Fab Library Notes
LM3480IM3-3.3 100mA ✅ Yes Risky for ESP32-C6 with WiFi
AP2112K-3.3 600mA ❌ No Needs import from SnapMagic

Since your pill dispenser uses the ESP32-C6 and may use WiFi, the AP2112K-3.3 from SnapMagic is the safer choice.


PROMPT: lets use a 5v plug in instead

CLAUDE ANSWER: Good simplification. At 5V input → 3.3V output you're only dropping 1.7V, so an LDO works fine with minimal heat.

Heat check at 5V with AP2112K-3.3: At 5V in, worst case ESP32-C6 at ~150mA: 1.7V × 0.15A = 255mW — totally fine.

Power architecture:

5V wall plug
    │
    ├──────────────────── VM (DRV8428 motor supply)
    │
    └── AP2112K-3.3 LDO ──── 3.3V rail (ESP32-C6 + logic)

Benefits:

Buck (12V) LDO (5V)
External components Inductor + 3 caps 2 caps only
Heat Needed heatsinking Negligible
In Fab KiCad library No Yes — AP2112K-3.3
Circuit complexity Higher Very simple

External components needed: - 100nF ceramic on VIN to GND - 1µF ceramic on VOUT to GND

Search AP2112K-3.3 in the Fab library symbol chooser.


PROMPT: what is the item name in the fab library - I do not see that ap2112k

CLAUDE ANSWER: The answer based on multiple Fab Academy student pages is that the AP2112K is not in the Fab library. The voltage regulator in the Fab KiCad library is the LM3480.

In the Fab library, search for:

LM3480IM3-3.3

That's the 3.3V fixed output version, in SOT-23-3 package.

One caveat: The LM3480 is only rated for 100mA output. That may be tight for the ESP32-C6 which can pull up to ~150–200mA during WiFi transmit.

Options:

Part Max Current In Fab Library Notes
LM3480IM3-3.3 100mA ✅ Yes Risky for ESP32-C6 with WiFi
AP2112K-3.3 600mA ❌ No Needs import from SnapMagic

If you plan to use WiFi or BLE, the AP2112K-3.3 from SnapMagic is the safer choice — quick import, only one external symbol/footprint to add.


End of discussion — DRV8428 + ESP32-C6 Custom PCB Design