LTM4700 no-OS Driver
Supported Devices
Overview
The LTM4700 is a dual 50A or single 100A step-down µModule regulator featuring remote configurability and telemetry-monitoring of power management parameters over PMBus—an open standard I2C-based digital interface protocol.
The LTM4700 is comprised of fast analog control loops, precision mixed-signal circuitry, EEPROM, power MOSFETs, inductors and supporting components.
Key Features
Dual 50A or Single 100A Digitally Adjustable Outputs
Wide Input Voltage: 4.5V to 16V
Output Voltage Range: 0.5V to 1.8V
±0.5% Maximum DC Output Error Over Temperature
±3% Current Readback Accuracy (25°C to 125°C)
400kHz PMBus-Compliant I2C Serial Interface
Integrated 16-Bit ∆Σ ADC for telemetry
Constant Frequency Current Mode Control
Internal EEPROM with Fault Logging and ECC
Supported Features
Device identification
Dual-channel voltage and current monitoring
LINEAR11/LINEAR16 data format conversion
Comprehensive status monitoring
PMBus command interface
NVM operations for configuration storage
Peak value tracking
IIO framework integration
Communication Interface
The device uses PMBus 1.3 compliant I2C interface:
Bus Speed: Up to 400kHz
Default Address: 0x5A (7-bit)
Data Formats: LINEAR11, LINEAR16
CRC Support: Optional polynomial 0x7
Device Variants
Device |
Special ID |
Description |
|---|---|---|
LTM4700 |
0x4130 |
Dual 50A or Single 100A µModule |
PMBus Commands
The driver supports standard PMBus commands and manufacturer-specific commands:
- Standard Commands:
PAGE, OPERATION, CLEAR_FAULTS
VOUT_COMMAND, VOUT_MAX, VOUT_MARGIN_HIGH/LOW
STATUS_BYTE, STATUS_WORD, STATUS_VOUT, STATUS_IOUT
READ_VIN, READ_IIN, READ_VOUT, READ_IOUT
READ_TEMPERATURE_1/2, READ_POUT, READ_PIN
- Manufacturer Commands:
MFR_SPECIAL_ID (device identification)
MFR_VOUT_PEAK, MFR_IOUT_PEAK, MFR_VIN_PEAK
MFR_CLEAR_PEAKS, MFR_ADC_CONTROL
MFR_PWM_MODE, MFR_PWM_COMP
Store/restore user settings
Data Formats
- LINEAR11 Format:
5-bit signed exponent + 11-bit signed mantissa
Used for: current, power, temperature, time values
- LINEAR16 Format:
Fixed exponent (-12) + 16-bit mantissa
Used for: voltage values (VOUT_COMMAND, READ_VOUT)
Channel Configuration
The LTM4700 supports dual-channel operation:
Channel 0: VOUT0, IOUT0, POUT0
Channel 1: VOUT1, IOUT1, POUT1
Global: VIN, IIN, PIN, temperatures
Pages are used to select channels for PMBus commands.
IIO Integration
The driver provides comprehensive IIO (Industrial I/O) support:
- IIO Channels:
vin: Input voltage monitoringvout0/vout1: Output voltage monitoring and controliin: Input current monitoringiout0/iout1: Output current monitoringpin: Input power monitoringpout0/pout1: Output power monitoringtemp0/temp1: Temperature monitoringfrequency0/frequency1: Switching frequency
- IIO Attributes:
raw: Read telemetry valuescommand: Set output voltageoperation: Control channel operation modeclear_peaks: Reset peak value trackingdevice_id: Device variant identification
Usage Example
Basic device initialization:
struct ltm4700_init_param init_param = {
.i2c_init = &i2c_init_param,
.crc_en = false
};
struct ltm4700_dev *dev;
int ret = ltm4700_init(&dev, &init_param);
Reading telemetry:
int vin_mv, vout0_mv, iout0_ma;
// Read input voltage in millivolts
ltm4700_read_value(dev, 0, LTM4700_VIN, &vin_mv);
// Read output voltage for channel 0
ltm4700_read_value(dev, 0, LTM4700_VOUT, &vout0_mv);
// Read output current for channel 0
ltm4700_read_value(dev, 0, LTM4700_IOUT, &iout0_ma);
Setting output voltage:
// Set VOUT0 to 1.2V (1200mV)
ltm4700_vout_value(dev, 0, 1200000, 1800000); // command, max
// Set operation mode
ltm4700_set_operation(dev, 0, LTM4700_OPERATION_ON);
IIO Usage:
struct ltm4700_iio_desc *iio_desc;
struct ltm4700_iio_desc_init_param iio_init_param = {
.ltm4700_init_param = <m4700_init_param
};
ltm4700_iio_init(&iio_desc, &iio_init_param);
Status monitoring:
struct ltm4700_status status;
ltm4700_read_status(dev, 0, LTM4700_STATUS_ALL_TYPE, &status);
if (status.vout & VOUT_OV_FAULT)
printf("Output overvoltage fault detected\n");
Design Considerations
- Power Supply Design:
Provide adequate input capacitance for transient response
Follow recommended PCB layout guidelines
Consider thermal management for high current operation
- I2C Interface:
Use appropriate pull-up resistors (1kΩ - 10kΩ)
Keep trace lengths short for high-speed operation
Consider CRC protection for noisy environments
- Dual Channel Operation:
Channels can operate independently or in current sharing mode
Use PAGE command to select channel for configuration
Monitor both channels for fault conditions
- Fault Management:
Implement appropriate fault handling in application
Use status registers to identify fault conditions
Consider automated recovery strategies
Build Configuration
Add the LTM4700 driver to your project by including in src.mk:
SRCS += $(DRIVERS)/power/ltm4700/ltm4700.c
For IIO support, also include:
SRCS += $(DRIVERS)/power/ltm4700/iio_ltm4700.c \
$(LIBRARIES)/iio/iio.c
- Dependencies:
I2C platform driver
no-OS utility functions
CRC8 library (if CRC enabled)
IIO framework (for IIO support)