Evaluating the LTC4284
See projects/ltc4284 (doxygen) for the Doxygen documentation.
Supported Evaluation Boards
DC2470A — LTC4284 High-Power Negative-Voltage Hot Swap Controller Evaluation Kit
Overview
The DC2470A demonstration circuit carries the LTC4284, a high-power negative-voltage hot swap controller with an integrated I²C energy monitor and on-die EEPROM. It targets -48 V distributed-power systems used in telecom infrastructure, data centers, and server power shelves, providing hot-swap MOSFET drive, voltage/current/power/energy telemetry, overcurrent protection with programmable foldback and retry, and a fault-log capture path.
The DC2470A default configuration uses 312 µΩ of sense resistance
(5 mΩ ‖ 6×2 mΩ), 40:1 dividers on the VPWR and DRAIN networks, and
straps the I²C address to 0x16 (LTC4284_I2C_ADDR_6). The
board's I²C bus operates at LTC4284 INTVCC (5 V) and must be level
shifted to interface to a 3.3 V MCU.
Applications
-48 V power-distribution front ends (data centers, telecom)
Server power shelves and rack-mount PSUs
Backplane / hot-plug slot cards
High-power negative-supply hot-swap and inrush control
Hardware Specifications
Power Supply Requirements
Input bus: -48 V DC nominal (LTC4284 -43 V UV lockout threshold; a sagging bench PSU under load can false-trip UV, reported as
FAULT=0x22).Load: electronic load or resistive dummy load on the DC2470A output. Choose the load so peak current stays below the programmed VILIM × 1 / RSENSE trip.
Level shifter (I²C): PCA9603 or equivalent, VCCA = 3.3 V (MCU side), VCCB = 5 V (DC2470A INTVCC side). Required because the DC2470A I²C bus is pulled to INTVCC.
MCU carrier: powered by USB (also supplies the UART console).
On-board Configuration (DC2470A defaults)
I²C address straps: ADR1 = H (INTVCC), ADR0 = H (INTVCC) ⇒
LTC4284_I2C_ADDR_6(0x16).Sense resistance RSENSE = 312 µΩ (5 mΩ ‖ 6×2 mΩ, datasheet p. 49 worked example).
VPWR divider = 40:1 (390 kΩ / 10 kΩ). DRAIN divider = 40:1.
Default VILIM = 18 mV (EEPROM-altered from the 15 mV reset default).
These values are captured in src/common/common_data.c. Change them
there if you carry the LTC4284 on a different board.
No-OS Supported Examples
This project is organized around the no-OS variant-based build flow.
Selecting a variant at build time (--variant <name>) chooses which
application is compiled. The platform main() is a thin dispatcher
that calls the selected example's <name>_example_main() entry point.
Shared initialization data is defined in
src/common,
and platform-specific macros and extra init parameters are in
src/platform.
Basic Example
Production-safe telemetry loop on the Arm core. Verifies the programmed
current limit against the hardware rating before enabling the FET,
polls VIN / IIN / VOUT / power on a 1 Hz cadence, cross-checks the
chip's power register against V × I, and applies bounded retry on
transient faults (OC/UV/OV) while latching off on hardware faults
(FET_BAD, FET_SHORT). Runs for 1 hour then exits cleanly.
Overcurrent Example
Programs the OC profile (VILIM, foldback, retry policy) and
narrates fault decode + retry loop transitions on the console. Build
it with --variant overcurrent. The OC profile is set by macros at
the top of src/examples/overcurrent/overcurrent_example.c:
#define OC_ILIM_MV 15 /* V_ILIM in mV, 15..30 */
#define OC_FOLDBACK LTC4284_FB_50 /* Startup foldback */
#define OC_RETRY_POLICY LTC4284_RETRY_1 /* 1 retry then latch */
Wiring for the OC trip: with OC_ILIM_MV = 15 and DC2470A
RSENSE = 312 uohm the steady-state trip is ~48 A and the fast
(short-circuit) trip is ~96 A. Use 10 AWG minimum ring-lug leads;
alligator clips will burn. Connect the load between DC2470A RTN and
-48VOUT (not -48VIN, which bypasses the FET).
IIO Example
Publishes LTC4284 telemetry over an IIO server so an IIO client
(IIO-Oscilloscope, iio_readdev) can read VIN / IIN / VOUT /
power / energy. Not hardware-verified: the project builds and the
firmware boots, but the client-side interaction has not been exercised
yet. Use with caution and expect to iterate on the channel scaling.
If you are not familiar with ADI IIO Application, please take a look at: IIO No-OS
If you are not familiar with ADI IIO-Oscilloscope Client, please take a look at: IIO Oscilloscope
No-OS Supported Platforms
Maxim Platform
Used Hardware
DC2470A — LTC4284 Evaluation Kit
PCA9603 (or equivalent) 3.3 V ↔ 5 V I²C level shifter
Connections
I²C:
DC2470A (5 V side) |
MAX32690EVKIT (3.3 V side) |
Description |
|---|---|---|
SDA |
P2.7 (via PCA9603 SDB → SDA) |
I²C serial data |
SCL |
P2.8 (via PCA9603 SCB → SCL) |
I²C serial clock |
GND |
GND |
Common ground |
Level-shifter power: PCA9603 VCCA = 3.3 V (from MAX32690EVKIT), VCCB = 5 V (from DC2470A INTVCC). Do not power VCCB from the MCU rail.
UART console: MAX32690EVKIT CN2 (FTDI USB-to-UART bridge) using the
MCU's UART2 at 115200 baud, 8N1. On Linux the port appears as
/dev/ttyUSB0 (or similar); on Windows as a COM port.
screen /dev/ttyUSB0 115200
Build Command
The Maxim platform uses the CMake / Ninja build system via the
no_os_build.py helper script. Available variants: basic,
iio_example, overcurrent. Available boards: max32690evkit.
For toolchain setup and prerequisites, see the Maxim CMake build guide.
export MAXIM_LIBRARIES=</path/to/MaximSDK/Libraries>
# Windows (PowerShell): $env:MAXIM_LIBRARIES = "C:\MaximSDK\Libraries"
cd no-OS
# build the project (basic example on the max32690evkit board)
python tools/scripts/no_os_build.py build \
--project ltc4284 --variant basic --board max32690evkit
# build and flash (requires a connected debug probe)
python tools/scripts/no_os_build.py build \
--project ltc4284 --variant basic --board max32690evkit \
--probe openocd --flash
Replace --variant with overcurrent or iio_example to build
the other examples on the same board.
Troubleshooting
I²C communication failure (init returns -9 / EBADF): Usually the level shifter is unpowered — VCCA / VCCB must both be up before the MCU issues the first transaction. Also verify pull-ups (4.7 kΩ to INTVCC on the DC2470A side) and that DC2470A has -48 V applied.
UV false-trip under load (``FAULT=0x22`` or ``0x26``, UV + POWER_FAILED, sometimes with a spurious OC bit): The bench PSU sags below the LTC4284's -43 V UV threshold when the load engages — commonly around 500 mA on a small bench supply with alligator clips. The signature is a visible VIN sag in the log before the trip. A proper >60 A PSU with 10 AWG ring-lug leads keeps VIN stable and lets the real OC trip fire at ~48 A as programmed. This is not an overcurrent event and not a code problem.