MAX14690 library
Fork of MAX14690 by
Revision 9:8fb54367ceb5, committed 2016-11-10
- Comitter:
- switches
- Date:
- Thu Nov 10 16:06:11 2016 +0000
- Parent:
- 8:2c3f2da51c5d
- Child:
- 10:32c7e2ab67aa
- Commit message:
- initial commit, work in progress
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/MAX14690.cpp Thu Nov 10 16:06:11 2016 +0000
@@ -0,0 +1,227 @@
+/*******************************************************************************
+ * Copyright (C) 2016 Maxim Integrated Products, Inc., All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES
+ * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Except as contained in this notice, the name of Maxim Integrated
+ * Products, Inc. shall not be used except as stated in the Maxim Integrated
+ * Products, Inc. Branding Policy.
+ *
+ * The mere transfer of this software does not imply any licenses
+ * of trade secrets, proprietary technology, copyrights, patents,
+ * trademarks, maskwork rights, or any other form of intellectual
+ * property whatsoever. Maxim Integrated Products, Inc. retains all
+ * ownership rights.
+ *******************************************************************************
+ */
+
+#include "MAX14690.h"
+
+//******************************************************************************
+MAX14690::MAX14690(PinName sda, PinName scl, int slaveAddress) :
+ slaveAddress(slaveAddress)
+{
+ i2c = new I2C(sda,scl);
+ isOwner = true;
+ clkDivEn = false;
+ clkDivSet = 0;
+ boostISet = BOOST_ISET_100mA;
+ boostMillivolts = 3300;
+ boostEn = BOOST_DISABLED;
+ boostEMI = false;
+ boostInd = false;
+ boostHysOff = false;
+ boostPasDsc = false;
+ boostActDsc = false;
+ buckMd = BUCK_BURST;
+ buckFst = false;
+ buckISet = BUCK_ISET_300mA;
+ buckCfg = false;
+ buckInd = false;
+ buckHysOff = true;
+ buckMinOT = true;
+ buckInteg = true;
+ buckPasDsc = false;
+ buckActDsc = false;
+ buckFScl = false;
+}
+//******************************************************************************
+MAX14690::MAX14690(I2C *i2c, int slaveAddress) :
+ slaveAddress(slaveAddress)
+{
+ this->i2c = i2c;
+ isOwner = false;
+ clkDivEn = false;
+ clkDivSet = 0;
+ boostISet = BOOST_ISET_100mA;
+ boostMillivolts = 3300;
+ boostEn = BOOST_DISABLED;
+ boostEMI = false;
+ boostInd = false;
+ boostHysOff = false;
+ boostPasDsc = false;
+ boostActDsc = false;
+ buckMd = BUCK_BURST;
+ buckFst = false;
+ buckISet = BUCK_ISET_300mA;
+ buckCfg = false;
+ buckInd = false;
+ buckHysOff = true;
+ buckMinOT = true;
+ buckInteg = true;
+ buckPasDsc = false;
+ buckActDsc = false;
+ buckFScl = false;
+}
+
+//******************************************************************************
+MAX14690::~MAX14690()
+{
+ if (isOwner == true) {
+ delete i2c;
+ }
+}
+
+//******************************************************************************
+int MAX14690::boostSetMode(boostEn_t mode)
+{
+ char data;
+
+ boostEn = mode;
+ data = (boostEn << 3) | (boostEMI << 1) | (boostInd);
+ return writeReg(REG_BOOST_CFG, data);
+}
+
+//******************************************************************************
+int MAX14690::boostSetVoltage(int mV)
+{
+ char data;
+
+ if ((MAX14690_BOOST_MIN_MV <= mV) && (mV <= MAX14690_BOOST_MAX_MV)) {
+ boostMillivolts = mV;
+ data = (mV - MAX14690_BOOST_MIN_MV) / MAX14690_BOOST_STEP_MV;
+ } else {
+ return MAX14690_ERROR;
+ }
+
+ if (boostEn == BOOST_ENABLED) {
+ if (writeReg(REG_BOOST_CFG, 0x00) != MAX14690_NO_ERROR) {
+ return MAX14690_ERROR;
+ }
+ }
+
+ if (writeReg(REG_BOOST_VSET, data) != MAX14690_NO_ERROR) {
+ return MAX14690_ERROR;
+ }
+
+ if (boostEn == BOOST_ENABLED) {
+ data = (boostEn << 3) | (boostEMI << 1) | (boostInd);
+ if (writeReg(REG_BOOST_CFG, data) != MAX14690_NO_ERROR) {
+ return MAX14690_ERROR;
+ }
+ }
+
+ return MAX14690_NO_ERROR;
+}
+
+//******************************************************************************
+int MAX14690::init()
+{
+ char data;
+
+ data = (clkDivEn << 7) | (clkDivSet);
+ if (writeReg(REG_BOOST_CDIV, data) != MAX14690_NO_ERROR) {
+ return MAX14690_ERROR;
+ }
+
+ data = (boostISet);
+ if (writeReg(REG_BOOST_ISET, data) != MAX14690_NO_ERROR) {
+ return MAX14690_ERROR;
+ }
+
+ if ((MAX14690_BOOST_MIN_MV <= boostMillivolts) &&
+ (boostMillivolts <= MAX14690_BOOST_MAX_MV)) {
+ data = (boostMillivolts - MAX14690_BOOST_MIN_MV) / MAX14690_BOOST_STEP_MV;
+ if (writeReg(REG_BOOST_VSET, data) != MAX14690_NO_ERROR) {
+ return MAX14690_ERROR;
+ }
+ } else {
+ return MAX14690_ERROR;
+ }
+
+ data = (buckMd << 1) | (buckFst);
+ if (writeReg(REG_BUCK_CFG, data) != MAX14690_NO_ERROR) {
+ return MAX14690_ERROR;
+ }
+
+ data = (boostHysOff << 7) | (boostPasDsc << 6) | (boostActDsc << 5) |
+ (buckPasDsc << 2) | (buckActDsc << 1) | (buckFScl);
+ if (writeReg(REG_BBB_EXTRA, data) != MAX14690_NO_ERROR) {
+ return MAX14690_ERROR;
+ }
+
+ // Write Boost Enable Register Last
+ data = (boostEn << 3) | (boostEMI << 1) | (boostInd);
+ if (writeReg(REG_BOOST_CFG, data) != MAX14690_NO_ERROR) {
+ return MAX14690_ERROR;
+ }
+
+ return MAX14690_NO_ERROR;
+}
+
+//******************************************************************************
+int MAX14690::monSet(monCfg_t monCfg)
+{
+ return writeReg(REG_MON_CFG, monCfg);
+}
+
+//******************************************************************************
+int MAX14690::shutdown()
+{
+ return writeReg(REG_PWR_OFF, 0xB2);
+}
+
+
+//******************************************************************************
+int MAX14690::writeReg(registers_t reg, char value)
+{
+ char cmdData[2] = { (char)reg, value };
+
+ if (i2c->write(slaveAddress, cmdData, sizeof(cmdData)) != 0) {
+ return MAX14690_ERROR;
+ }
+
+ return MAX14690_NO_ERROR;
+}
+
+//******************************************************************************
+int MAX14690::readReg(registers_t reg, char *value)
+{
+ char cmdData[1] = { (char)reg };
+
+ if (i2c->write(slaveAddress, cmdData, sizeof(cmdData)) != 0) {
+ return MAX14690_ERROR;
+ }
+
+ if (i2c->read(slaveAddress, value, 1) != 0) {
+ return MAX14690_ERROR;
+ }
+
+ return MAX14690_NO_ERROR;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/MAX14690.h Thu Nov 10 16:06:11 2016 +0000
@@ -0,0 +1,526 @@
+/*******************************************************************************
+ * Copyright (C) 2016 Maxim Integrated Products, Inc., All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES
+ * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Except as contained in this notice, the name of Maxim Integrated
+ * Products, Inc. shall not be used except as stated in the Maxim Integrated
+ * Products, Inc. Branding Policy.
+ *
+ * The mere transfer of this software does not imply any licenses
+ * of trade secrets, proprietary technology, copyrights, patents,
+ * trademarks, maskwork rights, or any other form of intellectual
+ * property whatsoever. Maxim Integrated Products, Inc. retains all
+ * ownership rights.
+ *******************************************************************************
+ */
+
+#ifndef _MAX14690_H_
+#define _MAX14690_H_
+
+#include "mbed.h"
+
+#define MAX14690_NO_ERROR 0
+#define MAX14690_ERROR -1
+
+#define MAX14690_BOOST_MIN_MV 2500
+#define MAX14690_BOOST_MAX_MV 5000
+#define MAX14690_BOOST_STEP_MV 100
+
+/**
+ * @brief MAX14690 Power-Management Solution Driver
+ *
+ * @details The MAX14690/MAX14750 are compact power-management solutions for
+ * space-constrained, battery-powered applications where size and efficiency are
+ * critical. Both devices integrate a power switch, a linear regulator, a buck
+ * regulator, and a buck-boost regulator.
+ * <br>https://www.maximintegrated.com/en/products/power/battery-management/MAX14690.html
+ *
+ * @code
+ * #include "mbed.h"
+ * #include "MAX14690.h"
+ *
+ * // I2C Master 2
+ * I2C i2c2(I2C2_SDA, I2C2_SCL);
+ *
+ * #define I2C_ADDR_PMIC (0x54)
+ * MAX14690 max14690(&i2c2, I2C_ADDR_PMIC);
+ *
+ * DigitalOut led(LED1, 0);
+ * InterruptIn button(SW1);
+ *
+ * void turnOff()
+ * {
+ * max14690.shutdown();
+ * }
+ *
+ * int main()
+ * {
+ * button.fall(&turnOff);
+ *
+ * max14690.boostEn = MAX14690::BOOST_ENABLED;
+ * if (max14690.init() == MAX14690_ERROR) {
+ * printf("Error initializing MAX14690");
+ * }
+ *
+ * wait(1);
+ *
+ * while(1) {
+ * max14690.boostSetMode(MAX14690::BOOST_DISABLED);
+ * max14690.boostEn = MAX14690::BOOST_ENABLED;
+ * wait(0.5);
+ * max14690.boostSetVoltage(2500);
+ * wait(0.5);
+ * max14690.boostSetVoltage(5000);
+ * wait(0.5);
+ * }
+ * }
+ * @endcode
+ */
+class MAX14690
+{
+public:
+
+ /**
+ * @brief Register Addresses
+ * @details Enumerated MAX14690 register addresses
+ */
+ typedef enum {
+ REG_CHIP_ID = 0x00, ///< Chip ID
+ REG_CHIP_REV = 0x01, ///< Chip Revision
+ REG_STATUS_A = 0x02, ///<
+ REG_STATUS_B = 0x03, ///<
+ REG_STATUS_C = 0x04, ///<
+ REG_INT_A = 0x05, ///<
+ REG_INT_B = 0x06, ///<
+ REG_INT_MASK_A = 0x07, ///<
+ REG_INT_MASK_B = 0x08, ///<
+ REG_I_LIM_CNTL = 0x09, ///<
+ REG_CHG_CNTL_A = 0x0A, ///<
+ REG_CHG_CNTL_B = 0x0B, ///<
+ REG_CHG_TMR = 0x0C, ///<
+ REG_BUCK1_CFG = 0x0D, ///<
+ REG_BUCK1_VSET = 0x0E, ///<
+ REG_BUCK2_CFG = 0x0F, ///<
+ REG_BUCK2_ISET = 0x10, ///<
+ REG_RSVD_11 = 0x11, ///<
+ REG_LDO1_CFG = 0x12, ///<
+ REG_LDO1_VSET = 0x13, ///<
+ REG_LDO2_CFG = 0x14, ///<
+ REG_LDO2_VSET = 0x15, ///<
+ REG_LDO3_CFG = 0x16, ///<
+ REG_LDO3_VSET = 0x17, ///<
+ REG_THRM_CFG = 0x18, ///<
+ REG_MON_CFG = 0x19, ///<
+ REG_BOOT_CFG = 0x1A, ///<
+ REG_PIN_STATUS = 0x1B, ///<
+ REG_BUCK_EXTRA = 0x1C, ///<
+ REG_PWR_CFG = 0x1D, ///<
+ REG_NULL = 0x1E, ///<
+ REG_PWR_OFF = 0x1F, ///<
+ } registers_t;
+
+ /**
+ * @brief
+ * @details
+ */
+ typedef enum {
+ THMSTAT_000, ///< T < T1
+ THMSTAT_001, ///< T1 < T < T2
+ THMSTAT_010, ///< T2 < T < T3
+ THMSTAT_011, ///< T3 < T < T4
+ THMSTAT_100, ///< T > T4
+ THMSTAT_101, ///< No theremistor detected
+ THMSTAT_110, ///< Thermistor Disabled by ThermEn
+ THMSTAT_111, ///< CHGIN not present
+ } thermStat_t;
+
+ /**
+ * @brief
+ * @details
+ */
+ typedef enum {
+ CHGSTAT_000, ///< Charger off
+ CHGSTAT_001, ///< Charging suspended by temperature
+ CHGSTAT_010, ///< Pre-charge
+ CHGSTAT_011, ///< Fast-charge constant current
+ CHGSTAT_100, ///< Fast-charge constant voltage
+ CHGSTAT_101, ///< Maintain charge
+ CHGSTAT_110, ///< Done
+ CHGSTAT_111, ///< Charger fault
+ } chgStat_t;
+
+ /**
+ * @brief
+ * @details
+ */
+ typedef enum {
+ ILIM_0mA, ///< 0mA
+ ILIM_100mA, ///< 100mA
+ ILIM_500mA, ///< 500mA
+ ILIM_1000mA, ///< 1000mA
+ } iLimCntl_t;
+
+ /**
+ * @brief
+ * @details
+ */
+ typedef enum {
+ BAT_RECHG_70mV, ///< 70mV
+ BAT_RECHG_120mV, ///< 120mV
+ BAT_RECHG_170mV, ///< 170mV
+ BAT_RECHG_220mV, ///< 220mV
+ } batReChg_t;
+
+ /**
+ * @brief
+ * @details
+ */
+ typedef enum {
+ BAT_REG_4050mV, ///< 4.05V
+ BAT_REG_4100mV, ///< 4.10V
+ BAT_REG_4150mV, ///< 4.15V
+ BAT_REG_4200mV, ///< 4.20V
+ BAT_REG_4250mV, ///< 4.25V
+ BAT_REG_4300mV, ///< 4.30V
+ BAT_REG_4350mV, ///< 4.35V
+ BAT_REG_RSVD, ///< reserved
+ } batReg_t;
+
+ /**
+ * @brief
+ * @details
+ */
+ typedef enum {
+ VPCHG_2100mV, ///< 2.10V
+ VPCHG_2250mV, ///< 2.25V
+ VPCHG_2400mV, ///< 2.40V
+ VPCHG_2550mV, ///< 2.55V
+ VPCHG_2700mV, ///< 2.70V
+ VPCHG_2850mV, ///< 2.85V
+ VPCHG_3000mV, ///< 3.00V
+ VPCHG_3150mV, ///< 3.15V
+ } vPChg_t;
+
+ /**
+ * @brief
+ * @details
+ */
+ typedef enum {
+ IPCHG_5, ///< 5% of Ifchg
+ IPCHG_10, ///< 10% of Ifchg
+ IPCHG_20, ///< 20% of Ifchg
+ IPCHG_30, ///< 30% of Ifchg
+ } iPChg_t;
+
+ /**
+ * @brief
+ * @details
+ */
+ typedef enum {
+ CHGDONE_5, ///< 5% of Ifchg
+ CHGDONE_10, ///< 10% of Ifchg
+ CHGDONE_20, ///< 20% of Ifchg
+ CHGDONE_30, ///< 30% of Ifchg
+ } chgDone_t;
+
+ /**
+ * @brief
+ * @details
+ */
+ typedef enum {
+ MTCHGTMR_0min, ///< 0 min
+ MTCHGTMR_15min, ///< 15 min
+ MTCHGTMR_30min, ///< 30 min
+ MTCHGTMR_60min, ///< 60 min
+ } mtChgTmr_t;
+
+ /**
+ * @brief
+ * @details
+ */
+ typedef enum {
+ FCHGTMR_75min, ///< 75 min
+ FCHGTMR_150min, ///< 150 min
+ FCHGTMR_300min, ///< 300 min
+ FCHGTMR_600min, ///< 600 min
+ } fChgTmr_t;
+
+ /**
+ * @brief
+ * @details
+ */
+ typedef enum {
+ PCHGTMR_30min, ///< 30 min
+ PCHGTMR_60min, ///< 60 min
+ PCHGTMR_120min, ///< 120 min
+ PCHGTMR_240min, ///< 240 min
+ } pChgTmr_t;
+
+ /**
+ * @brief Voltage Regulator Enable Mode
+ * @details Enumerated enable modes for voltage regulators
+ */
+ typedef enum {
+ VREG_DISABLED, ///< Regulator Disabled
+ VREG_ENABLED, ///< Regulator Enabled
+ VREG_EN_MPC0, ///< Regulator Enabled by MPC pin
+ VREG_EN_MPC1, ///< Regulator Enabled by MPC pin
+ } vRegEn_t;
+
+ /**
+ * @brief Buck Operating Modes
+ * @details Enumerated operating modes for buck regulator
+ */
+ typedef enum {
+ BUCK_BURST, ///< Burst Mode Operation
+ BUCK_FPWM, ///< Forced PWM Operation
+ BUCK_MPC0_FPWM, ///< MPC activated Forced PWM
+ BUCK_MPC1_FPWM, ///< MPC activated Forced PWM
+ } buckMd_t;
+
+ /**
+ * @brief
+ * @details
+ */
+ typedef enum {
+ , ///<
+ } _t;
+
+ /**
+ * @brief
+ * @details
+ */
+ typedef enum {
+ , ///<
+ } _t;
+
+ /**
+ * @brief
+ * @details
+ */
+ typedef enum {
+ , ///<
+ } _t;
+
+ /**
+ * @brief Boost Peak Current Settings
+ * @details Enumerated peak current settings for boost regulator
+ */
+ typedef enum {
+ BOOST_ISET_MIN, ///< Minimum On-Time
+ BOOST_ISET_50mA, ///< 50mA Peak Current
+ BOOST_ISET_100mA, ///< 100mA Peak Current
+ BOOST_ISET_150mA, ///< 150mA Peak Current
+ BOOST_ISET_200mA, ///< 200mA Peak Current
+ BOOST_ISET_250mA, ///< 250mA Peak Current
+ BOOST_ISET_300mA, ///< 300mA Peak Current
+ BOOST_ISET_350mA, ///< 350mA Peak Current
+ } boostISet_t;
+
+ /**
+ * @brief Buck Peak Current Settings
+ * @details Enumerated peak current settings for buck regulator
+ */
+ typedef enum {
+ BUCK_ISET_50mA, ///< 50mA Peak Current
+ BUCK_ISET_100mA, ///< 100mA Peak Current
+ BUCK_ISET_150mA, ///< 150mA Peak Current
+ BUCK_ISET_200mA, ///< 200mA Peak Current
+ BUCK_ISET_250mA, ///< 250mA Peak Current
+ BUCK_ISET_300mA, ///< 300mA Peak Current
+ BUCK_ISET_350mA, ///< 350mA Peak Current
+ BUCK_ISET_400mA, ///< 400mA Peak Current
+ } buckISet_t;
+
+ /**
+ * @brief Monitor Configurations
+ * @details Enumerated configuration modes for monitor multiplexer
+ */
+ typedef enum {
+ MON_PULLDOWN = 0x00, ///< Pulled down by 100k Ohm
+ MON_HI_Z = 0x08, ///< High Impedance
+ MON_SWIN = 0x80, ///< SWIN Selected
+ MON_SWOUT = 0x81, ///< SWOUT Selected
+ MON_BIN = 0x82, ///< BIN Selected
+ MON_BOUT = 0x83, ///< BOUT Selected
+ MON_HVIN = 0x84, ///< HVIN Selected
+ MON_HVOUT = 0x85, ///< HVOUT Selected
+ MON_LIN = 0x86, ///< LIN Selected
+ MON_LOUT = 0x87, ///< LOUT Selected
+ } monCfg_t;
+
+ /**
+ * @brief Under-Voltage Lock Out Input
+ * @details Enumerated input selection options for UVLO
+ */
+ typedef enum {
+ LIN_UVLO, ///< LIN used to determine UVLO condition
+ BIN_UVLO, ///< BIN used to determine UVLO condition
+ } uvloIn_t;
+
+ /**
+ * MAX14690 constructor.
+ *
+ * @param sda mbed pin to use for SDA line of I2C interface.
+ * @param scl mbed pin to use for SCL line of I2C interface.
+ * @param slaveAddress Slave Address of the device.
+ */
+ MAX14690(PinName sda, PinName scl, int slaveAddress);
+
+ /**
+ * MAX14690 constructor.
+ *
+ * @param i2c I2C object to use.
+ * @param slaveAddress Slave Address of the device.
+ */
+ MAX14690(I2C *i2c, int slaveAddress);
+
+ /**
+ * MAX14690 destructor.
+ */
+ ~MAX14690();
+
+ /**
+ * @brief Initialize MAX14690
+ * @details Applies settings to MAX14690.
+ * Settings are stored in public variables.
+ * The variables are pre-loaded with the most common configuation.
+ * Assign new values to the public variables before calling init.
+ * This will update all the settings including the boost voltage
+ * from boostMillivolts and the boost enable mode from boostEn.
+ * @returns 0 if no errors, -1 if error.
+ */
+ int init();
+
+ /**
+ * @brief Set the Boost Voltage
+ * @details Sets the voltage for the boost regulator.
+ * The voltage is specified in millivolts.
+ * The MAX14690 cannot update the voltage when enabled.
+ * This function checks the local boostEn variable and if the
+ * regualtor is enabled it will send the disable command before
+ * sending the new voltage and re-enable the boost regulator after
+ * the new voltage is written.
+ * @param mV voltage for boost regualtor in millivolts
+ * @returns 0 if no errors, -1 if error.
+ */
+ int boostSetVoltage(int mV);
+
+ /**
+ * @brief Set Boost Enable Mode
+ * @details Sets the enable mode for the boost regulator
+ * @param mode The enable mode for the boost regulator
+ * @returns 0 if no errors, -1 if error.
+ */
+ int boostSetMode(boostEn_t mode);
+
+ /**
+ * @brief Configure Mon Pin
+ * @details Configures the operating mode of the monitor multiplexer
+ * @param monCfg The configuration mode for the monitor pin
+ * @returns 0 if no errors, -1 if error.
+ */
+ int monSet(monCfg_t monCfg);
+
+ /**
+ * @brief Shutdown
+ * @details Sends the command to turn off all supplies and put the part
+ * in battery saving shelf mode.
+ * @returns 0 if no errors, -1 if error.
+ */
+ int shutdown();
+
+ /**
+ * @brief Write Register
+ * @details Writes the given value to the specified register.
+ * Note, this function provides direct access to the registers
+ * without any awareness or effect on the settings stored in
+ * the public variables. This is used by the other functions to
+ * set the values inside the MAX14690. Calling this outside of the
+ * other functions can break the synchronization of the variables
+ * to the state of the MAX14690.
+ * @param reg The register to be written
+ * @param value The data to be written
+ * @returns 0 if no errors, -1 if error.
+ */
+ int writeReg(registers_t reg, char value);
+
+ /**
+ * @brief Read Register
+ * @details Reads from the specified register
+ * @param reg The register to be read
+ * @param value Pointer for where to store the data
+ * @returns 0 if no errors, -1 if error.
+ */
+ int readReg(registers_t reg, char *value);
+
+ /// Boost Clock Divider Enable: default 0 - Disabled, 1 - Enabled
+ bool clkDivEn;
+ /// Boost Clock Divider Setting: default 0, The clock is divided by this value +10 when enabled
+ int clkDivSet;
+ /// Boost Peak Current Setting: default BOOST_ISET_100mA
+ boostISet_t boostISet;
+ /// Boost Voltage in millivolts: default 3300
+ int boostMillivolts;
+ /// Boost Enable Mode: default BOOST_DISABLED
+ boostEn_t boostEn;
+ /// Boost EMI Setting: default 0 - EMI damping active (lower noise), 1 - Damping disabled (more efficient)
+ bool boostEMI;
+ /// Boost Inductor Setting: default 0 - 4.7uH, 1 - 3.3uH
+ bool boostInd;
+ /// Boost Hysteresis Off: default 0 - Hysteresis enabled (more efficient), 1 - Hysteresis off (lower voltage ripple)
+ bool boostHysOff;
+ /// Boost Passive Discharge: default 0 - Disabled, 1 - Enabled when boost disabled
+ bool boostPasDsc;
+ /// Boost Active Discharge: default 0 - Disabled, 1 - Enabled when boost disabled
+ bool boostActDsc;
+ /// Buck Operating Mode: default BUCK_BURST
+ buckMd_t buckMd;
+ /// Buck Fast Start: default 0 - Normal startup current limit, 1 - Double startup current for fast start
+ bool buckFst;
+ /// Buck Peak Current Setting: default BUCK_ISET_300mA
+ buckISet_t buckISet;
+ /// Buck Configuration: default 0 - For burst mode, 1 - For FPWM mode
+ bool buckCfg;
+ /// Buck Inductor Setting: default 0 - 2.2uH, 1 - 4.7uH
+ bool buckInd;
+ /// Buck Hysteresis Off: default 0 - Hysteresis enabled (more efficient), 1 - Hysteresis off (lower voltage ripple)
+ bool buckHysOff;
+ /// Buck Minimum On Time: default 1 - Disable deglitch delay (lower voltage ripple), 0 - Enable deglitch dealy (more efficient)
+ bool buckMinOT;
+ /// Buck Integrate: default 1 - Better load regulation at higher current (recommended for output capacitance >6uF), 0 - More stable operation with smaller output capacitor
+ bool buckInteg;
+ /// Buck Passive Discharge: default 0 - Disabled, 1 - Enabled when buck disabled
+ bool buckPasDsc;
+ /// Buck Active Discharge: default 0 - Disabled, 1 - Enabled when buck disabled
+ bool buckActDsc;
+ /// Buck Fet Scaling: default 0 - Full buck FET after soft start (more efficient for larger loads), 1 - Reduced buck FET while active (lower quiescent current for light loads)
+ bool buckFScl;
+
+private:
+ /// I2C pointer
+ I2C *i2c;
+ /// Is this object the owner of the I2C object
+ bool isOwner;
+ /// Device slave address
+ int slaveAddress;
+};
+
+#endif /* _MAX14690_H_ */
--- a/MAX14720.cpp Wed Oct 19 22:32:56 2016 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,227 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2016 Maxim Integrated Products, Inc., All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES
- * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * Except as contained in this notice, the name of Maxim Integrated
- * Products, Inc. shall not be used except as stated in the Maxim Integrated
- * Products, Inc. Branding Policy.
- *
- * The mere transfer of this software does not imply any licenses
- * of trade secrets, proprietary technology, copyrights, patents,
- * trademarks, maskwork rights, or any other form of intellectual
- * property whatsoever. Maxim Integrated Products, Inc. retains all
- * ownership rights.
- *******************************************************************************
- */
-
-#include "MAX14720.h"
-
-//******************************************************************************
-MAX14720::MAX14720(PinName sda, PinName scl, int slaveAddress) :
- slaveAddress(slaveAddress)
-{
- i2c = new I2C(sda,scl);
- isOwner = true;
- clkDivEn = false;
- clkDivSet = 0;
- boostISet = BOOST_ISET_100mA;
- boostMillivolts = 3300;
- boostEn = BOOST_DISABLED;
- boostEMI = false;
- boostInd = false;
- boostHysOff = false;
- boostPasDsc = false;
- boostActDsc = false;
- buckMd = BUCK_BURST;
- buckFst = false;
- buckISet = BUCK_ISET_300mA;
- buckCfg = false;
- buckInd = false;
- buckHysOff = true;
- buckMinOT = true;
- buckInteg = true;
- buckPasDsc = false;
- buckActDsc = false;
- buckFScl = false;
-}
-//******************************************************************************
-MAX14720::MAX14720(I2C *i2c, int slaveAddress) :
- slaveAddress(slaveAddress)
-{
- this->i2c = i2c;
- isOwner = false;
- clkDivEn = false;
- clkDivSet = 0;
- boostISet = BOOST_ISET_100mA;
- boostMillivolts = 3300;
- boostEn = BOOST_DISABLED;
- boostEMI = false;
- boostInd = false;
- boostHysOff = false;
- boostPasDsc = false;
- boostActDsc = false;
- buckMd = BUCK_BURST;
- buckFst = false;
- buckISet = BUCK_ISET_300mA;
- buckCfg = false;
- buckInd = false;
- buckHysOff = true;
- buckMinOT = true;
- buckInteg = true;
- buckPasDsc = false;
- buckActDsc = false;
- buckFScl = false;
-}
-
-//******************************************************************************
-MAX14720::~MAX14720()
-{
- if (isOwner == true) {
- delete i2c;
- }
-}
-
-//******************************************************************************
-int MAX14720::boostSetMode(boostEn_t mode)
-{
- char data;
-
- boostEn = mode;
- data = (boostEn << 3) | (boostEMI << 1) | (boostInd);
- return writeReg(REG_BOOST_CFG, data);
-}
-
-//******************************************************************************
-int MAX14720::boostSetVoltage(int mV)
-{
- char data;
-
- if ((MAX14720_BOOST_MIN_MV <= mV) && (mV <= MAX14720_BOOST_MAX_MV)) {
- boostMillivolts = mV;
- data = (mV - MAX14720_BOOST_MIN_MV) / MAX14720_BOOST_STEP_MV;
- } else {
- return MAX14720_ERROR;
- }
-
- if (boostEn == BOOST_ENABLED) {
- if (writeReg(REG_BOOST_CFG, 0x00) != MAX14720_NO_ERROR) {
- return MAX14720_ERROR;
- }
- }
-
- if (writeReg(REG_BOOST_VSET, data) != MAX14720_NO_ERROR) {
- return MAX14720_ERROR;
- }
-
- if (boostEn == BOOST_ENABLED) {
- data = (boostEn << 3) | (boostEMI << 1) | (boostInd);
- if (writeReg(REG_BOOST_CFG, data) != MAX14720_NO_ERROR) {
- return MAX14720_ERROR;
- }
- }
-
- return MAX14720_NO_ERROR;
-}
-
-//******************************************************************************
-int MAX14720::init()
-{
- char data;
-
- data = (clkDivEn << 7) | (clkDivSet);
- if (writeReg(REG_BOOST_CDIV, data) != MAX14720_NO_ERROR) {
- return MAX14720_ERROR;
- }
-
- data = (boostISet);
- if (writeReg(REG_BOOST_ISET, data) != MAX14720_NO_ERROR) {
- return MAX14720_ERROR;
- }
-
- if ((MAX14720_BOOST_MIN_MV <= boostMillivolts) &&
- (boostMillivolts <= MAX14720_BOOST_MAX_MV)) {
- data = (boostMillivolts - MAX14720_BOOST_MIN_MV) / MAX14720_BOOST_STEP_MV;
- if (writeReg(REG_BOOST_VSET, data) != MAX14720_NO_ERROR) {
- return MAX14720_ERROR;
- }
- } else {
- return MAX14720_ERROR;
- }
-
- data = (buckMd << 1) | (buckFst);
- if (writeReg(REG_BUCK_CFG, data) != MAX14720_NO_ERROR) {
- return MAX14720_ERROR;
- }
-
- data = (boostHysOff << 7) | (boostPasDsc << 6) | (boostActDsc << 5) |
- (buckPasDsc << 2) | (buckActDsc << 1) | (buckFScl);
- if (writeReg(REG_BBB_EXTRA, data) != MAX14720_NO_ERROR) {
- return MAX14720_ERROR;
- }
-
- // Write Boost Enable Register Last
- data = (boostEn << 3) | (boostEMI << 1) | (boostInd);
- if (writeReg(REG_BOOST_CFG, data) != MAX14720_NO_ERROR) {
- return MAX14720_ERROR;
- }
-
- return MAX14720_NO_ERROR;
-}
-
-//******************************************************************************
-int MAX14720::monSet(monCfg_t monCfg)
-{
- return writeReg(REG_MON_CFG, monCfg);
-}
-
-//******************************************************************************
-int MAX14720::shutdown()
-{
- return writeReg(REG_PWR_OFF, 0xB2);
-}
-
-
-//******************************************************************************
-int MAX14720::writeReg(registers_t reg, char value)
-{
- char cmdData[2] = { (char)reg, value };
-
- if (i2c->write(slaveAddress, cmdData, sizeof(cmdData)) != 0) {
- return MAX14720_ERROR;
- }
-
- return MAX14720_NO_ERROR;
-}
-
-//******************************************************************************
-int MAX14720::readReg(registers_t reg, char *value)
-{
- char cmdData[1] = { (char)reg };
-
- if (i2c->write(slaveAddress, cmdData, sizeof(cmdData)) != 0) {
- return MAX14720_ERROR;
- }
-
- if (i2c->read(slaveAddress, value, 1) != 0) {
- return MAX14720_ERROR;
- }
-
- return MAX14720_NO_ERROR;
-}
--- a/MAX14720.h Wed Oct 19 22:32:56 2016 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,355 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2016 Maxim Integrated Products, Inc., All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES
- * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * Except as contained in this notice, the name of Maxim Integrated
- * Products, Inc. shall not be used except as stated in the Maxim Integrated
- * Products, Inc. Branding Policy.
- *
- * The mere transfer of this software does not imply any licenses
- * of trade secrets, proprietary technology, copyrights, patents,
- * trademarks, maskwork rights, or any other form of intellectual
- * property whatsoever. Maxim Integrated Products, Inc. retains all
- * ownership rights.
- *******************************************************************************
- */
-
-#ifndef _MAX14720_H_
-#define _MAX14720_H_
-
-#include "mbed.h"
-
-#define MAX14720_NO_ERROR 0
-#define MAX14720_ERROR -1
-
-#define MAX14720_BOOST_MIN_MV 2500
-#define MAX14720_BOOST_MAX_MV 5000
-#define MAX14720_BOOST_STEP_MV 100
-
-/**
- * @brief MAX14720 Power-Management Solution Driver
- *
- * @details The MAX14720/MAX14750 are compact power-management solutions for
- * space-constrained, battery-powered applications where size and efficiency are
- * critical. Both devices integrate a power switch, a linear regulator, a buck
- * regulator, and a buck-boost regulator.
- * <br>https://www.maximintegrated.com/en/products/power/battery-management/MAX14720.html
- *
- * @code
- * #include "mbed.h"
- * #include "MAX14720.h"
- *
- * // I2C Master 2
- * I2C i2c2(I2C2_SDA, I2C2_SCL);
- *
- * #define I2C_ADDR_PMIC (0x54)
- * MAX14720 max14720(&i2c2, I2C_ADDR_PMIC);
- *
- * DigitalOut led(LED1, 0);
- * InterruptIn button(SW1);
- *
- * void turnOff()
- * {
- * max14720.shutdown();
- * }
- *
- * int main()
- * {
- * button.fall(&turnOff);
- *
- * max14720.boostEn = MAX14720::BOOST_ENABLED;
- * if (max14720.init() == MAX14720_ERROR) {
- * printf("Error initializing MAX14720");
- * }
- *
- * wait(1);
- *
- * while(1) {
- * max14720.boostSetMode(MAX14720::BOOST_DISABLED);
- * max14720.boostEn = MAX14720::BOOST_ENABLED;
- * wait(0.5);
- * max14720.boostSetVoltage(2500);
- * wait(0.5);
- * max14720.boostSetVoltage(5000);
- * wait(0.5);
- * }
- * }
- * @endcode
- */
-class MAX14720
-{
-public:
-
- /**
- * @brief Register Addresses
- * @details Enumerated MAX14720 register addresses
- */
- typedef enum {
- REG_CHIP_ID = 0x00, ///< Chip ID
- REG_CHIP_REV = 0x01, ///< Chip Revision
- REG_BOOST_CDIV = 0x03, ///< Boost Clock Divider
- REG_BOOST_ISET = 0x04, ///< Boost Peak Current
- REG_BOOST_VSET = 0x05, ///< Boost Voltage Setting
- REG_BOOST_CFG = 0x06, ///< Boost Configuration
- REG_BUCK_VSET = 0x07, ///< Buck Voltage Setting
- REG_BUCK_CFG = 0x08, ///< Buck Configuration
- REG_BUCK_ISET = 0x09, ///< Buck Peak Current and Settings
- REG_LDO_VSET = 0x0A, ///< LDO Voltage Setting
- REG_LDO_CFG = 0x0B, ///< LDO Configuration
- REG_SWITCH_CFG = 0x0C, ///< Switch Configuration
- REG_BAT_TIME = 0x0D, ///< Battery Impedance Timing
- REG_BAT_CFG = 0x0E, ///< Battery Impedance Configuration
- REG_BAT_BCV = 0x0F, ///< Battery Cell Voltage
- REG_BAT_OCV = 0x10, ///< Open Cell Voltage
- REG_BAT_LCV = 0x11, ///< Loaded Cell Voltage
- REG_MON_CFG = 0x19, ///< Monitor Multiplexer Configuration
- REG_BOOT_CFG = 0x1A, ///< Boot Configuration
- REG_PIN_STAT = 0x1B, ///< Pin Status
- REG_BBB_EXTRA = 0x1C, ///< Buck/Buck-Boost Extra
- REG_HANDSHK = 0x1D, ///< Power-On Handshake
- REG_UVLO_CFG = 0x1E, ///< Under-Voltage Lock Out
- REG_PWR_OFF = 0x1F, ///< Power Off Command
- } registers_t;
-
- /**
- * @brief Boost Peak Current Settings
- * @details Enumerated peak current settings for boost regulator
- */
- typedef enum {
- BOOST_ISET_MIN, ///< Minimum On-Time
- BOOST_ISET_50mA, ///< 50mA Peak Current
- BOOST_ISET_100mA, ///< 100mA Peak Current
- BOOST_ISET_150mA, ///< 150mA Peak Current
- BOOST_ISET_200mA, ///< 200mA Peak Current
- BOOST_ISET_250mA, ///< 250mA Peak Current
- BOOST_ISET_300mA, ///< 300mA Peak Current
- BOOST_ISET_350mA, ///< 350mA Peak Current
- } boostISet_t;
-
- /**
- * @brief Boost Enable Mode
- * @details Enumerated enable modes for boost regulator
- */
- typedef enum {
- BOOST_DISABLED, ///< Boost Disabled
- BOOST_ENABLED, ///< Boost Enabled
- BOOST_EN_MPC, ///< Boost Enabled by MPC pin
- } boostEn_t;
-
- /**
- * @brief Buck Operating Modes
- * @details Enumerated operating modes for buck regulator
- */
- typedef enum {
- BUCK_BURST, ///< Burst Mode Operation
- BUCK_FPWM, ///< Forced PWM Operation
- BUCK_MPC_FPWM, ///< MPC activated Forced PWM
- } buckMd_t;
-
- /**
- * @brief Buck Peak Current Settings
- * @details Enumerated peak current settings for buck regulator
- */
- typedef enum {
- BUCK_ISET_50mA, ///< 50mA Peak Current
- BUCK_ISET_100mA, ///< 100mA Peak Current
- BUCK_ISET_150mA, ///< 150mA Peak Current
- BUCK_ISET_200mA, ///< 200mA Peak Current
- BUCK_ISET_250mA, ///< 250mA Peak Current
- BUCK_ISET_300mA, ///< 300mA Peak Current
- BUCK_ISET_350mA, ///< 350mA Peak Current
- BUCK_ISET_400mA, ///< 400mA Peak Current
- } buckISet_t;
-
- /**
- * @brief Monitor Configurations
- * @details Enumerated configuration modes for monitor multiplexer
- */
- typedef enum {
- MON_PULLDOWN = 0x00, ///< Pulled down by 100k Ohm
- MON_HI_Z = 0x08, ///< High Impedance
- MON_SWIN = 0x80, ///< SWIN Selected
- MON_SWOUT = 0x81, ///< SWOUT Selected
- MON_BIN = 0x82, ///< BIN Selected
- MON_BOUT = 0x83, ///< BOUT Selected
- MON_HVIN = 0x84, ///< HVIN Selected
- MON_HVOUT = 0x85, ///< HVOUT Selected
- MON_LIN = 0x86, ///< LIN Selected
- MON_LOUT = 0x87, ///< LOUT Selected
- } monCfg_t;
-
- /**
- * @brief Under-Voltage Lock Out Input
- * @details Enumerated input selection options for UVLO
- */
- typedef enum {
- LIN_UVLO, ///< LIN used to determine UVLO condition
- BIN_UVLO, ///< BIN used to determine UVLO condition
- } uvloIn_t;
-
- /**
- * MAX14720 constructor.
- *
- * @param sda mbed pin to use for SDA line of I2C interface.
- * @param scl mbed pin to use for SCL line of I2C interface.
- * @param slaveAddress Slave Address of the device.
- */
- MAX14720(PinName sda, PinName scl, int slaveAddress);
-
- /**
- * MAX14720 constructor.
- *
- * @param i2c I2C object to use.
- * @param slaveAddress Slave Address of the device.
- */
- MAX14720(I2C *i2c, int slaveAddress);
-
- /**
- * MAX14720 destructor.
- */
- ~MAX14720();
-
- /**
- * @brief Initialize MAX14720
- * @details Applies settings to MAX14720.
- * Settings are stored in public variables.
- * The variables are pre-loaded with the most common configuation.
- * Assign new values to the public variables before calling init.
- * This will update all the settings including the boost voltage
- * from boostMillivolts and the boost enable mode from boostEn.
- * @returns 0 if no errors, -1 if error.
- */
- int init();
-
- /**
- * @brief Set the Boost Voltage
- * @details Sets the voltage for the boost regulator.
- * The voltage is specified in millivolts.
- * The MAX14720 cannot update the voltage when enabled.
- * This function checks the local boostEn variable and if the
- * regualtor is enabled it will send the disable command before
- * sending the new voltage and re-enable the boost regulator after
- * the new voltage is written.
- * @param mV voltage for boost regualtor in millivolts
- * @returns 0 if no errors, -1 if error.
- */
- int boostSetVoltage(int mV);
-
- /**
- * @brief Set Boost Enable Mode
- * @details Sets the enable mode for the boost regulator
- * @param mode The enable mode for the boost regulator
- * @returns 0 if no errors, -1 if error.
- */
- int boostSetMode(boostEn_t mode);
-
- /**
- * @brief Configure Mon Pin
- * @details Configures the operating mode of the monitor multiplexer
- * @param monCfg The configuration mode for the monitor pin
- * @returns 0 if no errors, -1 if error.
- */
- int monSet(monCfg_t monCfg);
-
- /**
- * @brief Shutdown
- * @details Sends the command to turn off all supplies and put the part
- * in battery saving shelf mode.
- * @returns 0 if no errors, -1 if error.
- */
- int shutdown();
-
- /**
- * @brief Write Register
- * @details Writes the given value to the specified register.
- * Note, this function provides direct access to the registers
- * without any awareness or effect on the settings stored in
- * the public variables. This is used by the other functions to
- * set the values inside the MAX14720. Calling this outside of the
- * other functions can break the synchronization of the variables
- * to the state of the MAX14720.
- * @param reg The register to be written
- * @param value The data to be written
- * @returns 0 if no errors, -1 if error.
- */
- int writeReg(registers_t reg, char value);
-
- /**
- * @brief Read Register
- * @details Reads from the specified register
- * @param reg The register to be read
- * @param value Pointer for where to store the data
- * @returns 0 if no errors, -1 if error.
- */
- int readReg(registers_t reg, char *value);
-
- /// Boost Clock Divider Enable: default 0 - Disabled, 1 - Enabled
- bool clkDivEn;
- /// Boost Clock Divider Setting: default 0, The clock is divided by this value +10 when enabled
- int clkDivSet;
- /// Boost Peak Current Setting: default BOOST_ISET_100mA
- boostISet_t boostISet;
- /// Boost Voltage in millivolts: default 3300
- int boostMillivolts;
- /// Boost Enable Mode: default BOOST_DISABLED
- boostEn_t boostEn;
- /// Boost EMI Setting: default 0 - EMI damping active (lower noise), 1 - Damping disabled (more efficient)
- bool boostEMI;
- /// Boost Inductor Setting: default 0 - 4.7uH, 1 - 3.3uH
- bool boostInd;
- /// Boost Hysteresis Off: default 0 - Hysteresis enabled (more efficient), 1 - Hysteresis off (lower voltage ripple)
- bool boostHysOff;
- /// Boost Passive Discharge: default 0 - Disabled, 1 - Enabled when boost disabled
- bool boostPasDsc;
- /// Boost Active Discharge: default 0 - Disabled, 1 - Enabled when boost disabled
- bool boostActDsc;
- /// Buck Operating Mode: default BUCK_BURST
- buckMd_t buckMd;
- /// Buck Fast Start: default 0 - Normal startup current limit, 1 - Double startup current for fast start
- bool buckFst;
- /// Buck Peak Current Setting: default BUCK_ISET_300mA
- buckISet_t buckISet;
- /// Buck Configuration: default 0 - For burst mode, 1 - For FPWM mode
- bool buckCfg;
- /// Buck Inductor Setting: default 0 - 2.2uH, 1 - 4.7uH
- bool buckInd;
- /// Buck Hysteresis Off: default 0 - Hysteresis enabled (more efficient), 1 - Hysteresis off (lower voltage ripple)
- bool buckHysOff;
- /// Buck Minimum On Time: default 1 - Disable deglitch delay (lower voltage ripple), 0 - Enable deglitch dealy (more efficient)
- bool buckMinOT;
- /// Buck Integrate: default 1 - Better load regulation at higher current (recommended for output capacitance >6uF), 0 - More stable operation with smaller output capacitor
- bool buckInteg;
- /// Buck Passive Discharge: default 0 - Disabled, 1 - Enabled when buck disabled
- bool buckPasDsc;
- /// Buck Active Discharge: default 0 - Disabled, 1 - Enabled when buck disabled
- bool buckActDsc;
- /// Buck Fet Scaling: default 0 - Full buck FET after soft start (more efficient for larger loads), 1 - Reduced buck FET while active (lower quiescent current for light loads)
- bool buckFScl;
-
-private:
- /// I2C pointer
- I2C *i2c;
- /// Is this object the owner of the I2C object
- bool isOwner;
- /// Device slave address
- int slaveAddress;
-};
-
-#endif /* _MAX14720_H_ */
