LTC3880 - Dual Output PolyPhase Step-Down DC/DC Controller with Digital Power System Management

Features

  • Order Custom Programmed Parts
  • PMBus/I2C Compliant Serial Interface
    – Telemetry Read Back includes VIN, IIN, VOUT, IOUT, Temperature and Faults
    – Programmable Voltage, Current Limit, Digital Soft-Start/Stop, Sequencing, Margining, OV/UV and Frequency Synchronization (250kHz to 1MHz)
  • ±0.5% Output Voltage Accuracy over Temperature
  • Integrated 16-Bit ADC
  • Internal EEPROM and Fault Logging
  • Integrated Powerful N-Channel MOSFET Gate Drivers
  • LTpowerPlay Configuration and Development Tool

Power Conversion

  • Wide VIN Range: 4.5V to 24V
  • VOUT Range: 0.5V to 5.4V (4V on VOUT0)
  • Analog Current Mode Control Loop
  • Supports Power-Up Into Pre-Biased Load
  • Accurate PolyPhase® Current Sharing for Up to 6 Phases
  • Available in a 40-Pin (6mm × 6mm) QFN Package

Typical Application

LTC3880 Typical Application
LTC3880 Typical Application

Description

The LTC®3880/LTC3880-1 are dual, PolyPhase DC/DC synchronous step-down switching regulator controllers with an I2C-based PMBus compliant serial interface. The controllers use a constant frequency, current mode architecture that is supported by LTpowerPlay™ software development tool with graphical user interface (GUI).

Switching frequency, output voltage, and device address can be programmed using external configuration resistors. Additionally, parameters can be set via the digital interface or stored in EEPROM. Voltage, current, internal/external temperature and fault status can be read back through the bus interface.

The LTC3880/LTC3880-1 can be configured for Burst Mode® operation, discontinuous (pulse-skipping) mode or continuous inductor current mode. The LTC3880 incorporates a 5V linear regulator while the LTC3880-1 uses an external 5V supply for minimum power loss.

Packaging

For complete and up to date package information and drawings, please refer to our packaging page

6x6 QFN-40

LTC3880 Package Drawing
LTC3880 Package Drawing

Order Info

Package Variations and Pricing

Part Number Package Pins Temp Price (1-99) Price (1k)* RoHS Data
LTC3880EUJ-1#PBF QFN 40 E $7.64 $5.35 View
LTC3880EUJ-1#TRPBF QFN 40 E $5.41 View
LTC3880EUJ#PBF QFN 40 E $7.64 $5.35 View
LTC3880EUJ#TRPBF QFN 40 E $5.41 View
LTC3880IUJ-1#PBF QFN 40 I $8.86 $6.20 View
LTC3880IUJ-1#TRPBF QFN 40 I $6.26 View
LTC3880IUJ#PBF QFN 40 I $8.86 $6.20 View
LTC3880IUJ#TRPBF QFN 40 I $6.26 View
Buy NowRequest Samples
* The USA list pricing shown is for BUDGETARY USE ONLY, shown in United States dollars (FOB USA per unit for the stated volume), and is subject to change. International prices may differ due to local duties, taxes, fees and exchange rates. For volume-specific price or delivery quotes, please contact your local Linear Technology sales office or authorized distributor.

Demo Boards

Linear Technology offers many demo boards free of charge to qualified customers. Contact your local sales office or distributor to inquire about a demo board. Certain demo boards are also available for sale via credit card on this website. Demo boards are for evaluation purposes only. It remains the customer’s responsibility to verify proper and reliable operation in the actual end application.

Part Number Description Price Documentation
DC1590B-A LTC3880EUJ Demo Board (RSENSE) I Vin Range: 6.5V to 24V, VOUT0 = 0.5V to 4V @ 20A, VOUT1 = 0.5V to 5V @ 20A, PMBus Controlled, works w/ DC1613A $200.00
DC1590B-B LTC3880EUJ Demo Board (DCR) I Vin Range: 6.5V to 24V, VOUT0 = 0.5V to 4V @ 20A, VOUT1 = 0.5V to 5V @ 20A, PMBus Controlled, works w/ DC1613A $200.00
DC1709A LTC3880/-1 Demo Board I Programming Clamshell Socketed Demo Board $125.00
DC1740A-A LTC3880EUJ Demo Board | 7V ≤ VIN ≤ 14V; VOUT0: 0.5V to 4.1V @ 80A, PMBus Controlled, works w/ DC1613 $250.00
DC1740A-B LTC3880EUJ Demo Board | 7V ≤ VIN ≤ 14V; VOUT0: 0.5V to 4.1V @ 20A, VOUT1: 0.5V to 4.1V @ 60A, PMBus Controlled, works w/ DC1613 $250.00
DC1753A-A LTC3880EUJ Demo Board | Dual Phase Single Output, RSENSE, PSM, 6.5V ≤ VIN ≤ 24V, Vout = 0.5V to 3.3V @ 40A $200.00
DC1753A-B LTC3880EUJ Demo Board | Dual Phase Single Output, PSM, 6.5V ≤ VIN ≤ 24V, Vout = 0.5V to 3.3V @ 40A, with DCR Current Sense $200.00
DC1962C Power System Management Demo Board (PowerStick): 14-Supply Management with LTC2977, LTC2974 & LTC3880 [Requires DC1613] $95.00
DC1962C-KIT Starter Kit for Power System Management [Includes DC1962C, DC1613A] $125.00
DC2052A LTC3880EUJ/LTC3883EUH, 3-Phase Demo Board, Vin Range: 6.5V to 14V, Vout Range: 0.5V to 1.8V @ 60A, PMBus Controlled, works w/ DC1613 Dongle $250.00
DC2088A LTC3880EUJ Demo Board | 7V ≤ VIN ≤ 14V; VOUT Range: 0.8V to 1.8V @ Up to 50A $250.00
DC2089A-A LTC3880EUJ/LTC3870EUFD RSENSE Demo Board | 7V ≤ VIN ≤ 14V; VOUT = 0.8V to 1.8V @ 80A Contact Factory
DC2089A-B LTC3880EUJ/LTC3870EUFD DCR SENSE Demo Board | 7V ≤ VIN ≤ 14V; VOUT = 0.8V to 1.8V @ 80A Contact Factory
DC2294A DC2294A - PSM Linduino One Shield Demo Board Contact Factory
Buy Now

Companion Boards

Part Number Description Price Documentation
DC1613A USB-to-PMBus Controller $50.00
DC1962C Power System Management Demo Board (PowerStick): 14-Supply Management with LTC2977, LTC2974 & LTC3880 [Requires DC1613] $95.00
DC1962C-KIT Starter Kit for Power System Management [Includes DC1962C, DC1613A] $125.00
DC2026C Linduino One Isolated Arduino-Compatible Demonstration Board $75.00
Buy Now
Click here to view our complete list of demo boards

Applications

  • High Current Distributed Power Systems
  • Telecom, Datacom and Storage Systems
  • Intelligent Energy Efficient Power Regulation

Product Notifications

Please login to your MyLinear account for notifications of datasheet updates, new document releases and LTspice model announcements for your favorite products. If you do not have a MyLinear account you may Sign Up Now.

Forgot your password? Click here.
Need help? Email mylinear@linear.com with questions and comments.

Design Tools

Linduino

Linduino is an Arduino compatible platform for developing and distributing firmware libraries and code for SPI and I²C-compatible integrated circuits. The Linduino One board interfaces to more than 300 QuikEval demonstration cards, supporting a variety of product types including analog-to-digital converters (ADCs)digital-to-analog converters (DACs)power monitors, and more. Firmware libraries for individual devices are written in C and designed to be portable to a wide variety of processors and microcontrollers. Each library has a demonstration program that can be uploaded to the Linduino One platform to allow the circuit and software to be quickly and easily verified.

Click here for more information on Linduino

LTpowerCAD

The LTpowerCAD II design tool is a complete power supply design tool program that can significantly ease the tasks of power supply design. It guides users to a solution, selects power stage components, provides detailed power efficiency, shows quick loop bode plot stability and load transient analysis, and can export a final design to LTspice for simulation. Click here to download LTpowerCAD

Design tools for the following parts are available in LTpowerCAD:
LTC3880

LTpowerPlay

LTpowerPlay is a powerful development environment supporting Linear Technology's Digital Power System Management (PSM) products, providing unprecedented diagnostic and debug features.

Click here to download LTpowerPlay

LTspiceIV

LTspice® IV is a powerful, fast and free simulation tool, schematic capture and waveform viewer with enhancements and models for improving the simulation of switching regulators. Click here to download LTspice IV

To launch a ready to run LTspice demonstration circuit for this part:

To explore other ready to run LTspice demonstration circuits, please visit our Demo Circuits Collection.

Models for the following parts are available in LTspice IV:
LTC3880
LTC3880-1

LTpowerPlay is the FREE Graphical User Interface (GUI) software provided by Linear Technology for use with our family of digital power products. LTpowerPlay provides unprecedented diagnostic and debug features. It becomes a valuable diagnostic tool during board bring-up to program or tweak the power management scheme in a system or to diagnose power issues when bringing up rails.

  • Download LTpowerPlay software
  • When LTpowerPlay launches the first time, it will prompt you to request a license, click 'Request a License Key...', enter the required information, then click 'Send License Request'
  • Once you have entered the registration information, you will receive an email with your license file and instructions for installing it
  • For further information, please visit www.linear.com/ltpowerplay
  • Access technical support documents for LTC Digital Power Products by visiting www.ltpowerplay.com/help

Code

Linduino is Linear Technology's Arduino compatible system for developing and distributing firmware libraries and example code for Linear Technology’s integrated circuits. The code below can be downloaded or copied and pasted into your project. Please visit the Linduino Home Page for demo board, manual and setup information.

This part is Code Supported: There is example code available for this part. The code below may rely on other drivers available in the full library.

Download LTC3880 - DC1590B Linduino .INO File

/*
Linear Technology DC1590B Demonstration Board
LTC3880: Dual Output PolyPhase Step-Down DC/DC Controller with Digital Power System Management

@verbatim

NOTES
  Setup:
   Set the terminal baud rate to 115200 and select the newline terminator.

@endverbatim
 
http://www.linear.com/product/LTC3880
http://www.linear.com/demo/DC1590B

REVISION HISTORY
$Revision: 3214 $
$Date: 2015-03-03 09:54:52 -0800 (Tue, 03 Mar 2015) $

Copyright (c) 2014, Linear Technology Corp.(LTC)
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this
   list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
   this list of conditions and the following disclaimer in the documentation
   and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

The views and conclusions contained in the software and documentation are those
of the authors and should not be interpreted as representing official policies,
either expressed or implied, of Linear Technology Corp.

The Linear Technology Linduino is not affiliated with the official Arduino team.
However, the Linduino is only possible because of the Arduino team's commitment 
to the open-source community.  Please, visit http://www.arduino.cc and 
http://store.arduino.cc , and consider a purchase that will help fund their 
ongoing work.
*/

#include 
#include 
#include "Linduino.h"
#include "UserInterface.h"
#include "LT_I2CBus.h"
#include "LT_SMBusNoPec.h"
#include "LT_SMBusPec.h"
#include "LT_PMBus.h"

#define LTC3880_I2C_ADDRESS 0x4F

// Global variables
static uint8_t ltc3880_i2c_address;
static LT_SMBus *smbus = new LT_SMBusPec();
static LT_PMBus *pmbus = new LT_PMBus(smbus);

//! Initialize Linduino
void setup()
{
  Serial.begin(115200);         //! Initialize the serial port to the PC
  print_title();
  ltc3880_i2c_address = LTC3880_I2C_ADDRESS;
  print_prompt();
}

//! Repeats Linduino loop
void loop()
{
  uint8_t user_command;
  uint8_t res;
  uint8_t model[7];
  uint8_t *addresses = NULL;
  
  if (Serial.available())                          //! Checks for user input
  {
    user_command = read_int();                     //! Reads the user command
    if (user_command != 'm')
  	Serial.println(user_command);
  
    switch (user_command)                          //! Prints the appropriate submenu
    {
  	case 1:
  	  menu_1_basic_commands();                 // Print single-ended voltage menu
  	  break;
  	case 2:
  	  pmbus->readModel(ltc3880_i2c_address, model);
  	  Serial.print(F("MODEL "));
  	  Serial.print((char*)model);
  	  Serial.println();
  	  break;
  	case 3:
  	  res = pmbus->readPmbusRevision(ltc3880_i2c_address);
  	  Serial.print(F("REVISION "));
  	  Serial.println(res, HEX);    
  	  break;
  	case 4:
  	  pmbus->enablePec(ltc3880_i2c_address); 
          delete smbus;
          delete pmbus;
  	  smbus = new LT_SMBusPec();
  	  pmbus = new LT_PMBus(smbus);
  	  break;
  	case 5:
  	  pmbus->disablePec(ltc3880_i2c_address);    
          delete smbus;
          delete pmbus;
  	  smbus = new LT_SMBusNoPec();
  	  pmbus = new LT_PMBus(smbus);
  	  break;
  	case 6:
  	  addresses = smbus->probe(0);
  	  while(*addresses != 0)
  	  {
  		Serial.print(F("ADDR 0x"));
  		Serial.println(*addresses++, HEX);
  	  }
  	  break;
  	case 7 :
  	  pmbus->resetGlobal();
  	  break;
  	default:
  	  Serial.println(F("Incorrect Option"));
  	  break;
    }
    print_prompt();
  }

}

// Function Definitions

//! Prints the title block when program first starts.
void print_title()
{
  Serial.print(F("\n*****************************************************************\n"));
  Serial.print(F("* DC1590B Demonstration Program                                 *\n"));
  Serial.print(F("*                                                               *\n"));
  Serial.print(F("* This program demonstrates how to send and receive data from   *\n"));
  Serial.print(F("* the DC1590B demo board.                                       *\n"));
  Serial.print(F("*                                                               *\n"));
  Serial.print(F("* Set the baud rate to 115200 and select the newline terminator.*\n"));
  Serial.print(F("*                                                               *\n"));
  Serial.print(F("*****************************************************************\n"));
}

//! Prints main menu.
void print_prompt()
{
  Serial.print(F("\n  1-Basic Commands\n"));
  Serial.print(F("  2-Model Number\n"));
  Serial.print(F("  3-Revision Number\n"));
  Serial.print(F("  4-PEC On\n"));
  Serial.print(F("  5-PEC Off\n"));
  Serial.print(F("  6-Bus Probe\n"));
  Serial.print(F("  7-Reset\n"));
  Serial.print(F("\nEnter a command:"));
}

//! Prints a warning if the demo board is not detected.
void print_warning_prompt()
{
  Serial.println(F("\nWarning: Demo board not detected. Linduino will attempt to proceed."));
}

void print_all_voltages()
{
  float   voltage;
  uint8_t page;
  
  for (page = 0; page < 2; page++)
  {
    pmbus->setPage(ltc3880_i2c_address, page);
    voltage = pmbus->readVout(ltc3880_i2c_address, false);
    Serial.print(F("LTC3880 VOUT "));
    Serial.println(voltage, DEC);
  }
}

void print_all_currents()
{
  float   current;
  uint8_t page;
  
  for (page = 0; page < 2; page++)
  {
    pmbus->setPage(ltc3880_i2c_address, page);
    current = pmbus->readIout(ltc3880_i2c_address, false);
    Serial.print(F("LTC3880 IOUT "));
    Serial.println(current, DEC);
  }
}

void print_all_status()
{
  uint8_t b;
  uint16_t w;
  uint8_t page;
  
  for (page = 0; page < 2; page++)
  {
    Serial.print(F("PAGE "));
    Serial.println(page, DEC);
    pmbus->setPage(ltc3880_i2c_address, page);
    b = pmbus->readStatusByte(ltc3880_i2c_address);
    Serial.print(F("LTC3880 STATUS BYTE 0x"));
    Serial.println(b, HEX);
    w = pmbus->readStatusWord(ltc3880_i2c_address);
    Serial.print(F("LTC3880 STATUS WORD 0x"));
    Serial.println(w, HEX);  
  }
}

void sequence_off_on()
{
  pmbus->sequenceOffGlobal();
  delay (2000);
  pmbus->sequenceOnGlobal();
}

void margin_high()
{
  pmbus->marginHighGlobal();
}

void margin_low()
{
  pmbus->marginLowGlobal();
}

void margin_off()
{
  pmbus->sequenceOnGlobal();
}

void menu_1_basic_commands()
{
  uint8_t user_command;
  
  do
  {
    //! Displays the Read/Write menu
    Serial.print(F("\nRead/Write\n\n"));
    Serial.print(F("  1-Read All Voltages\n"));
    Serial.print(F("  2-Read All Currents\n"));
    Serial.print(F("  3-Read All Status\n"));
    Serial.print(F("  4-Sequence Off/On\n"));
    Serial.print(F("  5-Margin High\n"));
    Serial.print(F("  6-Margin Low\n"));
    Serial.print(F("  7-Margin Off\n"));
    Serial.print(F("  m-Main Menu\n"));
    Serial.print(F("\nEnter a command: "));

    user_command = read_int();                              //! Reads the user command
    if (user_command == 'm')                                // Print m if it is entered
    {
      Serial.print(F("m\n"));
    }
    else
      Serial.println(user_command);                         // Print user command

    switch (user_command)
    {
      case 1:
        print_all_voltages();
        break;
      case 2:
        print_all_currents();
        break;
      case 3:
        print_all_status();
        break;
      case 4:
        sequence_off_on();
        break;
      case 5:
        margin_high();
        break;
      case 6:
        margin_low();
        break;
      case 7:
        margin_off();
        break;
      default:
        if (user_command != 'm')
          Serial.println(F("Invalid Selection"));
        break;
    }
  }
  while (user_command != 'm');
}


Technical Support