Hardware¶
What to connect between your MCU and a MAX22200, with which bus settings and timing, and what the supply and outputs need.
All values here come from the MAX22200 datasheet (19-100531, Rev. 1, 3/25). Pin numbers are for the 32-pin TQFN; when they disagree with a board's schematic, the schematic wins.
Host interface pins¶
| Pin | Direction | Notes |
|---|---|---|
CSB (3) |
in | SPI chip select, active low; internal pull-up current |
SCK (5) |
in | Data in on the rising edge, out on the falling edge; internal pull-down |
SDI (6) |
in | SPI data from the MCU |
SDO (7) |
out, open drain | Needs an external pull-up; its RC sets the highest usable clock |
CMD (2) |
in | High: the transfer writes the Command Register. Low: data. Internal pull-down |
ENABLE (21) |
in | High enables the chip, low is sleep; 1.5 MΩ internal pull-down |
FAULT (1) |
out, open drain | Low while an unmasked fault is present; needs a pull-up |
TRIGA (8) |
in | Trigger for channels 0, 2, 4, 6 when their TRGnSPI bit is set; pull-down |
TRIGB (17) |
in | Trigger for channels 1, 3, 5, 7; pull-down |
The driver drives ENABLE and CMD and reads FAULT through your port by name (max22200::CtrlPin) and state
(GpioSignal::ACTIVE / INACTIVE). ENABLE and CMD are active high, FAULT is active low; your port maps each state
to a level. TRIGA and TRIGB are not used by the driver: drive them from your own GPIOs or leave them low.
There is no separate logic supply. Logic inputs switch at 1.2 V (VIH, min) and 0.65 V (VIL, max) and tolerate 6 V, so 1.8 V, 3.3 V and 5 V MCUs connect directly. ENABLE switches at 0.9 V / 0.6 V and is rated to VM.
Output and power pins¶
| Pin | What it is | Connect |
|---|---|---|
OUT0 to OUT7 |
Half-bridge outputs (31, 30, 27, 26, 10, 11, 14, 15) | Low side: load to VM. High side: load to GND |
VM |
Supply (9, 12, 13, 16, 25, 28, 29, 32) | Two 0.1 µF ceramics at pins 12/13 and 28/29, plus 10 µF electrolytic |
IREF (18) |
Current reference | 15 kΩ to 100 kΩ to GND; sets IFS for CDR |
V18 (20) |
1.8 V internal regulator | 2.2 µF ceramic to GND |
VCP (24) |
Charge-pump output | 1 µF, 5 V or more, to VM |
CFP, CFN (23, 22) |
Charge-pump flying capacitor | 22 nF, VM-rated, between them |
GND, EP |
Signal ground (4, 19), power ground pad | Board ground; vias under the pad for heat |
Pairs 0-1, 2-3, 4-5 and 6-7 can be wired in parallel (outputs tied together) for twice the current, or used as a full bridge across a motor or latching valve. Both are set in STATUS; see API guide.
Full-scale current (IREF)¶
In CDR the HIT and HOLD currents are fractions of a full-scale current set by RREF: IFS = KFS × 1 V / RREF, with KFS = 15 000 (HFS = 0) or 7 500 (HFS = 1, per channel).
| RREF (kΩ) | IFS, HFS = 0 (mA) | IFS, HFS = 1 (mA) |
|---|---|---|
| 15 | 1000 | 500 |
| 30 | 500 | 250 |
| 50 | 300 | 150 |
| 100 | 150 | 75 |
Pass RREF to the driver with BoardConfig(rref_kohm, false); it computes IFS for HFS = 0 and halves it for any
channel with half_full_scale set. CDR accuracy is ±6 % from 71 % to 100 % of IFS and widens to ±25 % at 5 % to
10 % (IFS = 1 A, 1 % RREF).
Bus settings¶
| Setting | Value |
|---|---|
| Mode | 0 (CPOL = 0, CPHA = 0), MSB first |
| Clock | Up to 10 MHz (tCLK ≥ 100 ns); 5 MHz when daisy-chained; start at 1 MHz |
| Frame | 8 bits with CMD high (command), then 8 or 32 bits with CMD low (data) |
| Chip select | Low for the whole frame; high at least 30 ns between frames |
| 32-bit byte order | Write: LSB byte first on SDI. Read: MSB byte first on SDO |
The driver supports one chip per bus; it does not build daisy-chained frames. The SPI protocol page shows every frame byte by byte.
sequenceDiagram
participant H as Host (driver)
participant C as MAX22200
Note over H,C: write CFG_CH0 (32 bits)
H->>C: CMD high, CSB low: command 0x82 (write, bank 1, 32-bit), CSB high
C-->>H: STATUS[7:0] (fault flag byte)
H->>C: CMD low, CSB low: DATAIN[7:0], [15:8], [23:16], [31:24], CSB high
C-->>H: STATUS[7:0], echo of the command, 0x00, 0x00
Note over H,C: switch channels (8 bits)
H->>C: CMD high: command 0x81 (write, bank 0, 8-bit)
H->>C: CMD low: ONCH[7:0]
Timing¶
| Parameter | Symbol | Value |
|---|---|---|
| SCK period | tCLK | ≥ 100 ns |
| SCK high, low | tCH, tCL | ≥ 30 ns each |
| CSB fall to SCK rise, CSB hold, CSB high | tCSS, tCSH, tCSPW | ≥ 30 ns each |
| SDI setup, hold | tDS, tDH | ≥ 10 ns each |
| SDO valid after SCK fall | tDO | ≤ 40 ns (310 Ω pull-up, 20 pF) |
| CMD setup before CSB | tCMS | ≥ 20 ns |
| ENABLE high to SPI ready | tEN | 0.5 ms |
| ACTIVE = 1 to outputs active | tWU | 2.5 ms |
| ENABLE low to outputs off | tDIS | 2.5 ms |
Initialize() waits tEN after raising ENABLE and tWU after writing ACTIVE = 1, both through
your port's DelayUs(), so the outputs are active when it returns. If you set ACTIVE yourself with
WriteStatus(), wait tWU before you expect an output to switch.
Power¶
| Quantity | Value |
|---|---|
| VM operating range | 4.5 V to 36 V (absolute maximum 40 V) |
| Sleep current, ENABLE low | ≤ 11 µA |
| ACTIVE = 0 current | 200 µA typical, 400 µA maximum |
| Quiescent, all channels off / CDR on, no load | 2.5 mA / 5.2 mA typical |
| VM undervoltage lockout | 4 V typical rising (3.75 V to 4.25 V), 0.12 V hysteresis |
At power-up every register is at its default, ACTIVE is 0 and the UVM flag is set, so FAULT is low until the first STATUS read. A VM dip below UVLO three-states the outputs but keeps the registers; only a dip that takes V18 below its reset threshold (about 1 V) resets them.
Output limits and protection¶
| Limit | Value |
|---|---|
| Output current | 1 A RMS per half-bridge recommended maximum; twice that for a parallel pair |
| On-resistance | Low side 0.2 Ω typical (0.4 Ω with HFS = 1), high side 0.21 Ω typical |
| Overcurrent threshold | 1.1 A minimum; the channel turns off and its OCP flag sets |
| Thermal shutdown | 145 °C, 20 °C hysteresis; all outputs off, operation resumes on cooling |
| Junction temperature | Keep below 125 °C (datasheet safe operating area, Figures 14 to 17) |
CDR, HFS, SRC and DPM are low-side only
A high-side channel (load to GND) runs in VDR only. The chip changes VDRnCDR and HSnLS only while every channel
is off and TRIGA and TRIGB are low; configure drive and side right after Initialize().
Variants¶
| Part | FAULT register read | Use |
|---|---|---|
| MAX22200AETJ+ | Selective clear on read: only bits whose SDI bit is high | New designs |
| MAX22200ETJ+ | Every read clears every bit | Compatibility with older firmware |
ClearChannelFaults() relies on selective clear; on the MAX22200 it clears every channel's flags.
Reference documents¶
| Document | What it is for |
|---|---|
| MAX22200 datasheet | Pins, electrical limits, registers, programming flow |
| Product page | Latest datasheet, evaluation kit, application notes |
The ESP32 pin assignment used by the examples is in
esp32_max22200_test_config.hpp.