LTC2978 - Octal Digital Power Supply Manager with EEPROM

Features

  • I2C/SMBus Serial Interface
  • PMBus Compliant Command Set
  • Configuration EEPROM with CRC
  • Black Box Fault Logging to Internal EEPROM
  • Differential Input, 16-Bit ΔΣ ADC with Less Than ±0.25% of Total Unadjusted Error
  • Eight Voltage Servos Precisely Adjust Output Voltages Using Eight 10-Bit DACs with Soft-Connect
  • Monitors Eight Output Voltages and One Input Voltage and Internal Die Temperature
  • 8-Channel Sequencer
  • Programmable Watchdog Timer
  • Eight UV/OV VOUT and One VIN Supervisor
  • Supports Multi-Channel Fault Management
  • Operates Autonomously without Additional Software
  • LTC2978 Can Be Powered from 3.3V or 4.5V to 15V
  • Available in 64-pin 9mm × 9mm QFN package
  • LTpowerPlay Configuration and Development Tool

Typical Application

LTC2978 Typical Application
LTC2978 Typical Application

Description

The LTC®2978 is an octal, digital power-supply monitor, supervisor, sequencer, and margin controller. Eight output channels can be managed per user defined configuration settings. Supervisory functions include fault OV/UV threshold limits for eight output channels and one input channel. Programmable fault dependencies and responses allow the power supplies to be disabled with optional retry after a fault has been detected. Serial bus telemetry allows eight output voltages, one input voltage, die temperature and fault status to be monitored. In addition, odd numbered channels can be configured to measure the voltage across a current sense resistor. Power supply sequencing, precision point-of-load voltage adjustment and margining are supported with PMBus commands. A programmable watchdog timer monitors microprocessor activity for a stalled condition and resets the microprocessor if necessary. The 1-wire synchronization bus supports power supply sequencing across multiple LTC digital power devices. User programmable parameters can be stored in EEPROM. Faults and telemetry data can be logged to EEPROM for diagnostic analysis.

Packaging

CAD Symbols and Footprints: The downloadable Zip file below contains the schematic symbol and PCB footprints.

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

LTC2978 Package Drawing

Order Info

  • Part numbers ending in PBF are lead free. Solder plated terminal finish (SnPb) versions are non-standard and special terms and conditions and pricing applies if available. Please contact LTC marketing for information.
  • Part numbers containing TR or TRM are shipped in tape and reel or 500 unit mini tape and reel, respectively
  • Please refer to our general ordering information or the product datasheet for more details

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
DC1508B-A LTC2977, LTC2978A, LTC2978 Socketed Programming Board [requires DC1613] $95.00
Buy Now

Companion Boards

Part Number Description Price Documentation
DC1613A USB-to-PMBus Controller for Use with LTpowerPlay $50.00
Buy Now
Click here to view our complete list of demo boards

Applications

  • Computers
  • Network Servers
  • Industrial Test and Measurement
  • High Reliability Systems
  • Medical Imaging
  • Video

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

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 LTC2978 - Linduino CPP File

#include "LT_PMBusDeviceLTC2978.h"

uint32_t LT_PMBusDeviceLTC2978::cap_ =  HAS_VOUT
                                        | HAS_VIN
                                        | HAS_TEMP
                                        | HAS_STATUS_WORD
                                        | HAS_STATUS_EXT
                                        ;

Download LTC2978 - Linduino Header File

/*!
LTC PSM Device

@verbatim

Representation of a device and its capabilities.

@endverbatim

REVISION HISTORY
$Revision: 3845 $
$Date: 2015-08-24 14:11:21 -0600 (Mon, 24 Aug 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.
*/

/*! @file
    @ingroup LT_PMBusDevice
    Library Header File for LT_PMBusDeviceLTC2978
*/

#ifndef LT_PMBusDeviceLTC2978_H_
#define LT_PMBusDeviceLTC2978_H_

#include "LT_PMBusDeviceManager.h"
#include "../LTPSM_PartFaultLogs/LT_2974FaultLog.h"

class LT_PMBusDeviceLTC2978 : public LT_PMBusDeviceManager
{
  public:

    static uint32_t cap_;

    LT_PMBusDeviceLTC2978(LT_PMBus *pmbus, uint8_t address) : LT_PMBusDeviceManager(pmbus, address, 8)
    {
    }

    uint32_t getCapabilities (
    )
    {
      return cap_;
    }

    //! Is/are these capability(s) supported?
    //! @return true if yes
    bool hasCapability(
      uint32_t capability          //!< List of capabilities
    )
    {
      return (cap_ & capability) == capability;
    }

    char *getType(void)
    {
      uint8_t *model = (uint8_t *) calloc(8,1);
      memcpy(model, "LTC2978", 7);
      return (char *) model;
    }

    uint8_t getNumPages(void)
    {
      return 4;
    }

    static LT_PMBusDevice *detect(LT_PMBus *pmbus, uint8_t address)
    {
      uint16_t id;
      LT_PMBusDeviceLTC2978 *device;

      id = pmbus->readMfrSpecialId(address);
      if (  (id & 0xFFF0) == 0x0110
            || (id & 0xFFF0) == 0x0120)
      {
        device = new LT_PMBusDeviceLTC2978(pmbus, address);
        device->probeSpeed();
        return device;
      }
      else
        return NULL;
    }

    void enableFaultLog()
    {
      LT_2974FaultLog *faultLog = new LT_2974FaultLog(pmbus_);
      faultLog->enableFaultLog(address_);
      delete faultLog;
    }

    void disableFaultLog()
    {
      LT_2974FaultLog *faultLog = new LT_2974FaultLog(pmbus_);
      faultLog->disableFaultLog(address_);
      delete faultLog;
    }

    bool hasFaultLog()
    {
      LT_2974FaultLog *faultLog = new LT_2974FaultLog(pmbus_);
      if (faultLog->hasFaultLog(address_))
      {
        delete faultLog;
        return true;
      }
      else
      {
        delete faultLog;
        return false;
      }
    }

    char *getFaultLog()
    {
      LT_2974FaultLog *faultLog = new LT_2974FaultLog(pmbus_);
      if (faultLog->hasFaultLog(address_))
      {
        faultLog->read(address_);
//      faultLog->print(&Serial);
        faultLog->dumpBinary(&Serial);
        faultLog->release();
        delete faultLog;
        return NULL;
      }
      else
      {
        delete faultLog;
        return NULL;
      }
    }

    void clearFaultLog()
    {
      LT_2974FaultLog *faultLog = new LT_2974FaultLog(pmbus_);
      if (faultLog->hasFaultLog(address_))
      {
        faultLog->clearFaultLog(address_);
        pmbus_->smbus()->waitForAck(address_, 0x00);
        pmbus_->waitForNotBusy(address_);
        delete faultLog;
      }
      else
      {
        delete faultLog;
      }
    }
};

#endif /* LT_PMBusDeviceLTC2978_H_ */

Technical Support