Ahmad Alkaff / Mbed 2 deprecated CS3237

Dependencies:   mbed

Committer:
AhmadAlkaff
Date:
Wed Oct 09 09:38:09 2019 +0000
Revision:
0:7b5d37ca532f
Initial Commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AhmadAlkaff 0:7b5d37ca532f 1 /*******************************************************************************
AhmadAlkaff 0:7b5d37ca532f 2 * Copyright (C) 2016 Maxim Integrated Products, Inc., All Rights Reserved.
AhmadAlkaff 0:7b5d37ca532f 3 *
AhmadAlkaff 0:7b5d37ca532f 4 * Permission is hereby granted, free of charge, to any person obtaining a
AhmadAlkaff 0:7b5d37ca532f 5 * copy of this software and associated documentation files (the "Software"),
AhmadAlkaff 0:7b5d37ca532f 6 * to deal in the Software without restriction, including without limitation
AhmadAlkaff 0:7b5d37ca532f 7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
AhmadAlkaff 0:7b5d37ca532f 8 * and/or sell copies of the Software, and to permit persons to whom the
AhmadAlkaff 0:7b5d37ca532f 9 * Software is furnished to do so, subject to the following conditions:
AhmadAlkaff 0:7b5d37ca532f 10 *
AhmadAlkaff 0:7b5d37ca532f 11 * The above copyright notice and this permission notice shall be included
AhmadAlkaff 0:7b5d37ca532f 12 * in all copies or substantial portions of the Software.
AhmadAlkaff 0:7b5d37ca532f 13 *
AhmadAlkaff 0:7b5d37ca532f 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
AhmadAlkaff 0:7b5d37ca532f 15 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
AhmadAlkaff 0:7b5d37ca532f 16 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
AhmadAlkaff 0:7b5d37ca532f 17 * IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES
AhmadAlkaff 0:7b5d37ca532f 18 * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
AhmadAlkaff 0:7b5d37ca532f 19 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
AhmadAlkaff 0:7b5d37ca532f 20 * OTHER DEALINGS IN THE SOFTWARE.
AhmadAlkaff 0:7b5d37ca532f 21 *
AhmadAlkaff 0:7b5d37ca532f 22 * Except as contained in this notice, the name of Maxim Integrated
AhmadAlkaff 0:7b5d37ca532f 23 * Products, Inc. shall not be used except as stated in the Maxim Integrated
AhmadAlkaff 0:7b5d37ca532f 24 * Products, Inc. Branding Policy.
AhmadAlkaff 0:7b5d37ca532f 25 *
AhmadAlkaff 0:7b5d37ca532f 26 * The mere transfer of this software does not imply any licenses
AhmadAlkaff 0:7b5d37ca532f 27 * of trade secrets, proprietary technology, copyrights, patents,
AhmadAlkaff 0:7b5d37ca532f 28 * trademarks, maskwork rights, or any other form of intellectual
AhmadAlkaff 0:7b5d37ca532f 29 * property whatsoever. Maxim Integrated Products, Inc. retains all
AhmadAlkaff 0:7b5d37ca532f 30 * ownership rights.
AhmadAlkaff 0:7b5d37ca532f 31 *******************************************************************************
AhmadAlkaff 0:7b5d37ca532f 32 */
AhmadAlkaff 0:7b5d37ca532f 33
AhmadAlkaff 0:7b5d37ca532f 34 #ifndef _MAX14720_H_
AhmadAlkaff 0:7b5d37ca532f 35 #define _MAX14720_H_
AhmadAlkaff 0:7b5d37ca532f 36
AhmadAlkaff 0:7b5d37ca532f 37 #include "mbed.h"
AhmadAlkaff 0:7b5d37ca532f 38
AhmadAlkaff 0:7b5d37ca532f 39 #define MAX14720_NO_ERROR 0
AhmadAlkaff 0:7b5d37ca532f 40 #define MAX14720_ERROR -1
AhmadAlkaff 0:7b5d37ca532f 41
AhmadAlkaff 0:7b5d37ca532f 42 #define MAX14720_BOOST_MIN_MV 2500
AhmadAlkaff 0:7b5d37ca532f 43 #define MAX14720_BOOST_MAX_MV 5000
AhmadAlkaff 0:7b5d37ca532f 44 #define MAX14720_BOOST_STEP_MV 100
AhmadAlkaff 0:7b5d37ca532f 45
AhmadAlkaff 0:7b5d37ca532f 46 /**
AhmadAlkaff 0:7b5d37ca532f 47 * @brief MAX14720 Power-Management Solution Driver
AhmadAlkaff 0:7b5d37ca532f 48 *
AhmadAlkaff 0:7b5d37ca532f 49 * @details The MAX14720/MAX14750 are compact power-management solutions for
AhmadAlkaff 0:7b5d37ca532f 50 * space-constrained, battery-powered applications where size and efficiency are
AhmadAlkaff 0:7b5d37ca532f 51 * critical. Both devices integrate a power switch, a linear regulator, a buck
AhmadAlkaff 0:7b5d37ca532f 52 * regulator, and a buck-boost regulator.
AhmadAlkaff 0:7b5d37ca532f 53 * <br>https://www.maximintegrated.com/en/products/power/battery-management/MAX14720.html
AhmadAlkaff 0:7b5d37ca532f 54 *
AhmadAlkaff 0:7b5d37ca532f 55 * @code
AhmadAlkaff 0:7b5d37ca532f 56 * #include "mbed.h"
AhmadAlkaff 0:7b5d37ca532f 57 * #include "MAX14720.h"
AhmadAlkaff 0:7b5d37ca532f 58 *
AhmadAlkaff 0:7b5d37ca532f 59 * // I2C Master 2
AhmadAlkaff 0:7b5d37ca532f 60 * I2C i2c2(I2C2_SDA, I2C2_SCL);
AhmadAlkaff 0:7b5d37ca532f 61 *
AhmadAlkaff 0:7b5d37ca532f 62 * #define I2C_ADDR_PMIC (0x54)
AhmadAlkaff 0:7b5d37ca532f 63 * MAX14720 max14720(&i2c2, I2C_ADDR_PMIC);
AhmadAlkaff 0:7b5d37ca532f 64 *
AhmadAlkaff 0:7b5d37ca532f 65 * DigitalOut led(LED1, 0);
AhmadAlkaff 0:7b5d37ca532f 66 * InterruptIn button(SW1);
AhmadAlkaff 0:7b5d37ca532f 67 *
AhmadAlkaff 0:7b5d37ca532f 68 * void turnOff()
AhmadAlkaff 0:7b5d37ca532f 69 * {
AhmadAlkaff 0:7b5d37ca532f 70 * max14720.shutdown();
AhmadAlkaff 0:7b5d37ca532f 71 * }
AhmadAlkaff 0:7b5d37ca532f 72 *
AhmadAlkaff 0:7b5d37ca532f 73 * int main()
AhmadAlkaff 0:7b5d37ca532f 74 * {
AhmadAlkaff 0:7b5d37ca532f 75 * button.fall(&turnOff);
AhmadAlkaff 0:7b5d37ca532f 76 *
AhmadAlkaff 0:7b5d37ca532f 77 * max14720.boostEn = MAX14720::BOOST_ENABLED;
AhmadAlkaff 0:7b5d37ca532f 78 * if (max14720.init() == MAX14720_ERROR) {
AhmadAlkaff 0:7b5d37ca532f 79 * printf("Error initializing MAX14720");
AhmadAlkaff 0:7b5d37ca532f 80 * }
AhmadAlkaff 0:7b5d37ca532f 81 *
AhmadAlkaff 0:7b5d37ca532f 82 * wait(1);
AhmadAlkaff 0:7b5d37ca532f 83 *
AhmadAlkaff 0:7b5d37ca532f 84 * while(1) {
AhmadAlkaff 0:7b5d37ca532f 85 * max14720.boostSetMode(MAX14720::BOOST_DISABLED);
AhmadAlkaff 0:7b5d37ca532f 86 * max14720.boostEn = MAX14720::BOOST_ENABLED;
AhmadAlkaff 0:7b5d37ca532f 87 * wait(0.5);
AhmadAlkaff 0:7b5d37ca532f 88 * max14720.boostSetVoltage(2500);
AhmadAlkaff 0:7b5d37ca532f 89 * wait(0.5);
AhmadAlkaff 0:7b5d37ca532f 90 * max14720.boostSetVoltage(5000);
AhmadAlkaff 0:7b5d37ca532f 91 * wait(0.5);
AhmadAlkaff 0:7b5d37ca532f 92 * }
AhmadAlkaff 0:7b5d37ca532f 93 * }
AhmadAlkaff 0:7b5d37ca532f 94 * @endcode
AhmadAlkaff 0:7b5d37ca532f 95 */
AhmadAlkaff 0:7b5d37ca532f 96 class MAX14720
AhmadAlkaff 0:7b5d37ca532f 97 {
AhmadAlkaff 0:7b5d37ca532f 98 public:
AhmadAlkaff 0:7b5d37ca532f 99
AhmadAlkaff 0:7b5d37ca532f 100 /**
AhmadAlkaff 0:7b5d37ca532f 101 * @brief Register Addresses
AhmadAlkaff 0:7b5d37ca532f 102 * @details Enumerated MAX14720 register addresses
AhmadAlkaff 0:7b5d37ca532f 103 */
AhmadAlkaff 0:7b5d37ca532f 104 typedef enum {
AhmadAlkaff 0:7b5d37ca532f 105 REG_CHIP_ID = 0x00, ///< Chip ID
AhmadAlkaff 0:7b5d37ca532f 106 REG_CHIP_REV = 0x01, ///< Chip Revision
AhmadAlkaff 0:7b5d37ca532f 107 REG_BOOST_CDIV = 0x03, ///< Boost Clock Divider
AhmadAlkaff 0:7b5d37ca532f 108 REG_BOOST_ISET = 0x04, ///< Boost Peak Current
AhmadAlkaff 0:7b5d37ca532f 109 REG_BOOST_VSET = 0x05, ///< Boost Voltage Setting
AhmadAlkaff 0:7b5d37ca532f 110 REG_BOOST_CFG = 0x06, ///< Boost Configuration
AhmadAlkaff 0:7b5d37ca532f 111 REG_BUCK_VSET = 0x07, ///< Buck Voltage Setting
AhmadAlkaff 0:7b5d37ca532f 112 REG_BUCK_CFG = 0x08, ///< Buck Configuration
AhmadAlkaff 0:7b5d37ca532f 113 REG_BUCK_ISET = 0x09, ///< Buck Peak Current and Settings
AhmadAlkaff 0:7b5d37ca532f 114 REG_LDO_VSET = 0x0A, ///< LDO Voltage Setting
AhmadAlkaff 0:7b5d37ca532f 115 REG_LDO_CFG = 0x0B, ///< LDO Configuration
AhmadAlkaff 0:7b5d37ca532f 116 REG_SWITCH_CFG = 0x0C, ///< Switch Configuration
AhmadAlkaff 0:7b5d37ca532f 117 REG_BAT_TIME = 0x0D, ///< Battery Impedance Timing
AhmadAlkaff 0:7b5d37ca532f 118 REG_BAT_CFG = 0x0E, ///< Battery Impedance Configuration
AhmadAlkaff 0:7b5d37ca532f 119 REG_BAT_BCV = 0x0F, ///< Battery Cell Voltage
AhmadAlkaff 0:7b5d37ca532f 120 REG_BAT_OCV = 0x10, ///< Open Cell Voltage
AhmadAlkaff 0:7b5d37ca532f 121 REG_BAT_LCV = 0x11, ///< Loaded Cell Voltage
AhmadAlkaff 0:7b5d37ca532f 122 REG_MON_CFG = 0x19, ///< Monitor Multiplexer Configuration
AhmadAlkaff 0:7b5d37ca532f 123 REG_BOOT_CFG = 0x1A, ///< Boot Configuration
AhmadAlkaff 0:7b5d37ca532f 124 REG_PIN_STAT = 0x1B, ///< Pin Status
AhmadAlkaff 0:7b5d37ca532f 125 REG_BBB_EXTRA = 0x1C, ///< Buck/Buck-Boost Extra
AhmadAlkaff 0:7b5d37ca532f 126 REG_HANDSHK = 0x1D, ///< Power-On Handshake
AhmadAlkaff 0:7b5d37ca532f 127 REG_UVLO_CFG = 0x1E, ///< Under-Voltage Lock Out
AhmadAlkaff 0:7b5d37ca532f 128 REG_PWR_OFF = 0x1F, ///< Power Off Command
AhmadAlkaff 0:7b5d37ca532f 129 } registers_t;
AhmadAlkaff 0:7b5d37ca532f 130
AhmadAlkaff 0:7b5d37ca532f 131 /**
AhmadAlkaff 0:7b5d37ca532f 132 * @brief Boost Peak Current Settings
AhmadAlkaff 0:7b5d37ca532f 133 * @details Enumerated peak current settings for boost regulator
AhmadAlkaff 0:7b5d37ca532f 134 */
AhmadAlkaff 0:7b5d37ca532f 135 typedef enum {
AhmadAlkaff 0:7b5d37ca532f 136 BOOST_ISET_MIN, ///< Minimum On-Time
AhmadAlkaff 0:7b5d37ca532f 137 BOOST_ISET_50mA, ///< 50mA Peak Current
AhmadAlkaff 0:7b5d37ca532f 138 BOOST_ISET_100mA, ///< 100mA Peak Current
AhmadAlkaff 0:7b5d37ca532f 139 BOOST_ISET_150mA, ///< 150mA Peak Current
AhmadAlkaff 0:7b5d37ca532f 140 BOOST_ISET_200mA, ///< 200mA Peak Current
AhmadAlkaff 0:7b5d37ca532f 141 BOOST_ISET_250mA, ///< 250mA Peak Current
AhmadAlkaff 0:7b5d37ca532f 142 BOOST_ISET_300mA, ///< 300mA Peak Current
AhmadAlkaff 0:7b5d37ca532f 143 BOOST_ISET_350mA, ///< 350mA Peak Current
AhmadAlkaff 0:7b5d37ca532f 144 } boostISet_t;
AhmadAlkaff 0:7b5d37ca532f 145
AhmadAlkaff 0:7b5d37ca532f 146 /**
AhmadAlkaff 0:7b5d37ca532f 147 * @brief Boost Enable Mode
AhmadAlkaff 0:7b5d37ca532f 148 * @details Enumerated enable modes for boost regulator
AhmadAlkaff 0:7b5d37ca532f 149 */
AhmadAlkaff 0:7b5d37ca532f 150 typedef enum {
AhmadAlkaff 0:7b5d37ca532f 151 BOOST_DISABLED, ///< Boost Disabled
AhmadAlkaff 0:7b5d37ca532f 152 BOOST_ENABLED, ///< Boost Enabled
AhmadAlkaff 0:7b5d37ca532f 153 BOOST_EN_MPC, ///< Boost Enabled by MPC pin
AhmadAlkaff 0:7b5d37ca532f 154 } boostEn_t;
AhmadAlkaff 0:7b5d37ca532f 155
AhmadAlkaff 0:7b5d37ca532f 156 /**
AhmadAlkaff 0:7b5d37ca532f 157 * @brief Buck Operating Modes
AhmadAlkaff 0:7b5d37ca532f 158 * @details Enumerated operating modes for buck regulator
AhmadAlkaff 0:7b5d37ca532f 159 */
AhmadAlkaff 0:7b5d37ca532f 160 typedef enum {
AhmadAlkaff 0:7b5d37ca532f 161 BUCK_BURST, ///< Burst Mode Operation
AhmadAlkaff 0:7b5d37ca532f 162 BUCK_FPWM, ///< Forced PWM Operation
AhmadAlkaff 0:7b5d37ca532f 163 BUCK_MPC_FPWM, ///< MPC activated Forced PWM
AhmadAlkaff 0:7b5d37ca532f 164 } buckMd_t;
AhmadAlkaff 0:7b5d37ca532f 165
AhmadAlkaff 0:7b5d37ca532f 166 /**
AhmadAlkaff 0:7b5d37ca532f 167 * @brief Buck Peak Current Settings
AhmadAlkaff 0:7b5d37ca532f 168 * @details Enumerated peak current settings for buck regulator
AhmadAlkaff 0:7b5d37ca532f 169 */
AhmadAlkaff 0:7b5d37ca532f 170 typedef enum {
AhmadAlkaff 0:7b5d37ca532f 171 BUCK_ISET_50mA, ///< 50mA Peak Current
AhmadAlkaff 0:7b5d37ca532f 172 BUCK_ISET_100mA, ///< 100mA Peak Current
AhmadAlkaff 0:7b5d37ca532f 173 BUCK_ISET_150mA, ///< 150mA Peak Current
AhmadAlkaff 0:7b5d37ca532f 174 BUCK_ISET_200mA, ///< 200mA Peak Current
AhmadAlkaff 0:7b5d37ca532f 175 BUCK_ISET_250mA, ///< 250mA Peak Current
AhmadAlkaff 0:7b5d37ca532f 176 BUCK_ISET_300mA, ///< 300mA Peak Current
AhmadAlkaff 0:7b5d37ca532f 177 BUCK_ISET_350mA, ///< 350mA Peak Current
AhmadAlkaff 0:7b5d37ca532f 178 BUCK_ISET_400mA, ///< 400mA Peak Current
AhmadAlkaff 0:7b5d37ca532f 179 } buckISet_t;
AhmadAlkaff 0:7b5d37ca532f 180
AhmadAlkaff 0:7b5d37ca532f 181 /**
AhmadAlkaff 0:7b5d37ca532f 182 * @brief Monitor Configurations
AhmadAlkaff 0:7b5d37ca532f 183 * @details Enumerated configuration modes for monitor multiplexer
AhmadAlkaff 0:7b5d37ca532f 184 */
AhmadAlkaff 0:7b5d37ca532f 185 typedef enum {
AhmadAlkaff 0:7b5d37ca532f 186 MON_PULLDOWN = 0x00, ///< Pulled down by 100k Ohm
AhmadAlkaff 0:7b5d37ca532f 187 MON_HI_Z = 0x08, ///< High Impedance
AhmadAlkaff 0:7b5d37ca532f 188 MON_SWIN = 0x80, ///< SWIN Selected
AhmadAlkaff 0:7b5d37ca532f 189 MON_SWOUT = 0x81, ///< SWOUT Selected
AhmadAlkaff 0:7b5d37ca532f 190 MON_BIN = 0x82, ///< BIN Selected
AhmadAlkaff 0:7b5d37ca532f 191 MON_BOUT = 0x83, ///< BOUT Selected
AhmadAlkaff 0:7b5d37ca532f 192 MON_HVIN = 0x84, ///< HVIN Selected
AhmadAlkaff 0:7b5d37ca532f 193 MON_HVOUT = 0x85, ///< HVOUT Selected
AhmadAlkaff 0:7b5d37ca532f 194 MON_LIN = 0x86, ///< LIN Selected
AhmadAlkaff 0:7b5d37ca532f 195 MON_LOUT = 0x87, ///< LOUT Selected
AhmadAlkaff 0:7b5d37ca532f 196 } monCfg_t;
AhmadAlkaff 0:7b5d37ca532f 197
AhmadAlkaff 0:7b5d37ca532f 198 /**
AhmadAlkaff 0:7b5d37ca532f 199 * @brief Under-Voltage Lock Out Input
AhmadAlkaff 0:7b5d37ca532f 200 * @details Enumerated input selection options for UVLO
AhmadAlkaff 0:7b5d37ca532f 201 */
AhmadAlkaff 0:7b5d37ca532f 202 typedef enum {
AhmadAlkaff 0:7b5d37ca532f 203 LIN_UVLO, ///< LIN used to determine UVLO condition
AhmadAlkaff 0:7b5d37ca532f 204 BIN_UVLO, ///< BIN used to determine UVLO condition
AhmadAlkaff 0:7b5d37ca532f 205 } uvloIn_t;
AhmadAlkaff 0:7b5d37ca532f 206
AhmadAlkaff 0:7b5d37ca532f 207 /**
AhmadAlkaff 0:7b5d37ca532f 208 * MAX14720 constructor.
AhmadAlkaff 0:7b5d37ca532f 209 *
AhmadAlkaff 0:7b5d37ca532f 210 * @param sda mbed pin to use for SDA line of I2C interface.
AhmadAlkaff 0:7b5d37ca532f 211 * @param scl mbed pin to use for SCL line of I2C interface.
AhmadAlkaff 0:7b5d37ca532f 212 * @param slaveAddress Slave Address of the device.
AhmadAlkaff 0:7b5d37ca532f 213 */
AhmadAlkaff 0:7b5d37ca532f 214 MAX14720(PinName sda, PinName scl, int slaveAddress);
AhmadAlkaff 0:7b5d37ca532f 215
AhmadAlkaff 0:7b5d37ca532f 216 /**
AhmadAlkaff 0:7b5d37ca532f 217 * MAX14720 constructor.
AhmadAlkaff 0:7b5d37ca532f 218 *
AhmadAlkaff 0:7b5d37ca532f 219 * @param i2c I2C object to use.
AhmadAlkaff 0:7b5d37ca532f 220 * @param slaveAddress Slave Address of the device.
AhmadAlkaff 0:7b5d37ca532f 221 */
AhmadAlkaff 0:7b5d37ca532f 222 MAX14720(I2C *i2c, int slaveAddress);
AhmadAlkaff 0:7b5d37ca532f 223
AhmadAlkaff 0:7b5d37ca532f 224 /**
AhmadAlkaff 0:7b5d37ca532f 225 * MAX14720 destructor.
AhmadAlkaff 0:7b5d37ca532f 226 */
AhmadAlkaff 0:7b5d37ca532f 227 ~MAX14720();
AhmadAlkaff 0:7b5d37ca532f 228
AhmadAlkaff 0:7b5d37ca532f 229 /**
AhmadAlkaff 0:7b5d37ca532f 230 * @brief Initialize MAX14720
AhmadAlkaff 0:7b5d37ca532f 231 * @details Applies settings to MAX14720.
AhmadAlkaff 0:7b5d37ca532f 232 * Settings are stored in public variables.
AhmadAlkaff 0:7b5d37ca532f 233 * The variables are pre-loaded with the most common configuation.
AhmadAlkaff 0:7b5d37ca532f 234 * Assign new values to the public variables before calling init.
AhmadAlkaff 0:7b5d37ca532f 235 * This will update all the settings including the boost voltage
AhmadAlkaff 0:7b5d37ca532f 236 * from boostMillivolts and the boost enable mode from boostEn.
AhmadAlkaff 0:7b5d37ca532f 237 * @returns 0 if no errors, -1 if error.
AhmadAlkaff 0:7b5d37ca532f 238 */
AhmadAlkaff 0:7b5d37ca532f 239 int init();
AhmadAlkaff 0:7b5d37ca532f 240
AhmadAlkaff 0:7b5d37ca532f 241 /**
AhmadAlkaff 0:7b5d37ca532f 242 * @brief Set the Boost Voltage
AhmadAlkaff 0:7b5d37ca532f 243 * @details Sets the voltage for the boost regulator.
AhmadAlkaff 0:7b5d37ca532f 244 * The voltage is specified in millivolts.
AhmadAlkaff 0:7b5d37ca532f 245 * The MAX14720 cannot update the voltage when enabled.
AhmadAlkaff 0:7b5d37ca532f 246 * This function checks the local boostEn variable and if the
AhmadAlkaff 0:7b5d37ca532f 247 * regualtor is enabled it will send the disable command before
AhmadAlkaff 0:7b5d37ca532f 248 * sending the new voltage and re-enable the boost regulator after
AhmadAlkaff 0:7b5d37ca532f 249 * the new voltage is written.
AhmadAlkaff 0:7b5d37ca532f 250 * @param mV voltage for boost regualtor in millivolts
AhmadAlkaff 0:7b5d37ca532f 251 * @returns 0 if no errors, -1 if error.
AhmadAlkaff 0:7b5d37ca532f 252 */
AhmadAlkaff 0:7b5d37ca532f 253 int boostSetVoltage(int mV);
AhmadAlkaff 0:7b5d37ca532f 254
AhmadAlkaff 0:7b5d37ca532f 255 /**
AhmadAlkaff 0:7b5d37ca532f 256 * @brief Set Boost Enable Mode
AhmadAlkaff 0:7b5d37ca532f 257 * @details Sets the enable mode for the boost regulator
AhmadAlkaff 0:7b5d37ca532f 258 * @param mode The enable mode for the boost regulator
AhmadAlkaff 0:7b5d37ca532f 259 * @returns 0 if no errors, -1 if error.
AhmadAlkaff 0:7b5d37ca532f 260 */
AhmadAlkaff 0:7b5d37ca532f 261 int boostSetMode(boostEn_t mode);
AhmadAlkaff 0:7b5d37ca532f 262
AhmadAlkaff 0:7b5d37ca532f 263 /**
AhmadAlkaff 0:7b5d37ca532f 264 * @brief Configure Mon Pin
AhmadAlkaff 0:7b5d37ca532f 265 * @details Configures the operating mode of the monitor multiplexer
AhmadAlkaff 0:7b5d37ca532f 266 * @param monCfg The configuration mode for the monitor pin
AhmadAlkaff 0:7b5d37ca532f 267 * @returns 0 if no errors, -1 if error.
AhmadAlkaff 0:7b5d37ca532f 268 */
AhmadAlkaff 0:7b5d37ca532f 269 int monSet(monCfg_t monCfg);
AhmadAlkaff 0:7b5d37ca532f 270
AhmadAlkaff 0:7b5d37ca532f 271 /**
AhmadAlkaff 0:7b5d37ca532f 272 * @brief Shutdown
AhmadAlkaff 0:7b5d37ca532f 273 * @details Sends the command to turn off all supplies and put the part
AhmadAlkaff 0:7b5d37ca532f 274 * in battery saving shelf mode.
AhmadAlkaff 0:7b5d37ca532f 275 * @returns 0 if no errors, -1 if error.
AhmadAlkaff 0:7b5d37ca532f 276 */
AhmadAlkaff 0:7b5d37ca532f 277 int shutdown();
AhmadAlkaff 0:7b5d37ca532f 278
AhmadAlkaff 0:7b5d37ca532f 279 /**
AhmadAlkaff 0:7b5d37ca532f 280 * @brief Write Register
AhmadAlkaff 0:7b5d37ca532f 281 * @details Writes the given value to the specified register.
AhmadAlkaff 0:7b5d37ca532f 282 * Note, this function provides direct access to the registers
AhmadAlkaff 0:7b5d37ca532f 283 * without any awareness or effect on the settings stored in
AhmadAlkaff 0:7b5d37ca532f 284 * the public variables. This is used by the other functions to
AhmadAlkaff 0:7b5d37ca532f 285 * set the values inside the MAX14720. Calling this outside of the
AhmadAlkaff 0:7b5d37ca532f 286 * other functions can break the synchronization of the variables
AhmadAlkaff 0:7b5d37ca532f 287 * to the state of the MAX14720.
AhmadAlkaff 0:7b5d37ca532f 288 * @param reg The register to be written
AhmadAlkaff 0:7b5d37ca532f 289 * @param value The data to be written
AhmadAlkaff 0:7b5d37ca532f 290 * @returns 0 if no errors, -1 if error.
AhmadAlkaff 0:7b5d37ca532f 291 */
AhmadAlkaff 0:7b5d37ca532f 292 int writeReg(registers_t reg, char value);
AhmadAlkaff 0:7b5d37ca532f 293
AhmadAlkaff 0:7b5d37ca532f 294 /**
AhmadAlkaff 0:7b5d37ca532f 295 * @brief Read Register
AhmadAlkaff 0:7b5d37ca532f 296 * @details Reads from the specified register
AhmadAlkaff 0:7b5d37ca532f 297 * @param reg The register to be read
AhmadAlkaff 0:7b5d37ca532f 298 * @param value Pointer for where to store the data
AhmadAlkaff 0:7b5d37ca532f 299 * @returns 0 if no errors, -1 if error.
AhmadAlkaff 0:7b5d37ca532f 300 */
AhmadAlkaff 0:7b5d37ca532f 301 int readReg(registers_t reg, char *value);
AhmadAlkaff 0:7b5d37ca532f 302
AhmadAlkaff 0:7b5d37ca532f 303 /// Boost Clock Divider Enable: default 0 - Disabled, 1 - Enabled
AhmadAlkaff 0:7b5d37ca532f 304 bool clkDivEn;
AhmadAlkaff 0:7b5d37ca532f 305 /// Boost Clock Divider Setting: default 0, The clock is divided by this value +10 when enabled
AhmadAlkaff 0:7b5d37ca532f 306 int clkDivSet;
AhmadAlkaff 0:7b5d37ca532f 307 /// Boost Peak Current Setting: default BOOST_ISET_100mA
AhmadAlkaff 0:7b5d37ca532f 308 boostISet_t boostISet;
AhmadAlkaff 0:7b5d37ca532f 309 /// Boost Voltage in millivolts: default 3300
AhmadAlkaff 0:7b5d37ca532f 310 int boostMillivolts;
AhmadAlkaff 0:7b5d37ca532f 311 /// Boost Enable Mode: default BOOST_DISABLED
AhmadAlkaff 0:7b5d37ca532f 312 boostEn_t boostEn;
AhmadAlkaff 0:7b5d37ca532f 313 /// Boost EMI Setting: default 0 - EMI damping active (lower noise), 1 - Damping disabled (more efficient)
AhmadAlkaff 0:7b5d37ca532f 314 bool boostEMI;
AhmadAlkaff 0:7b5d37ca532f 315 /// Boost Inductor Setting: default 0 - 4.7uH, 1 - 3.3uH
AhmadAlkaff 0:7b5d37ca532f 316 bool boostInd;
AhmadAlkaff 0:7b5d37ca532f 317 /// Boost Hysteresis Off: default 0 - Hysteresis enabled (more efficient), 1 - Hysteresis off (lower voltage ripple)
AhmadAlkaff 0:7b5d37ca532f 318 bool boostHysOff;
AhmadAlkaff 0:7b5d37ca532f 319 /// Boost Passive Discharge: default 0 - Disabled, 1 - Enabled when boost disabled
AhmadAlkaff 0:7b5d37ca532f 320 bool boostPasDsc;
AhmadAlkaff 0:7b5d37ca532f 321 /// Boost Active Discharge: default 0 - Disabled, 1 - Enabled when boost disabled
AhmadAlkaff 0:7b5d37ca532f 322 bool boostActDsc;
AhmadAlkaff 0:7b5d37ca532f 323 /// Buck Operating Mode: default BUCK_BURST
AhmadAlkaff 0:7b5d37ca532f 324 buckMd_t buckMd;
AhmadAlkaff 0:7b5d37ca532f 325 /// Buck Fast Start: default 0 - Normal startup current limit, 1 - Double startup current for fast start
AhmadAlkaff 0:7b5d37ca532f 326 bool buckFst;
AhmadAlkaff 0:7b5d37ca532f 327 /// Buck Peak Current Setting: default BUCK_ISET_300mA
AhmadAlkaff 0:7b5d37ca532f 328 buckISet_t buckISet;
AhmadAlkaff 0:7b5d37ca532f 329 /// Buck Configuration: default 0 - For burst mode, 1 - For FPWM mode
AhmadAlkaff 0:7b5d37ca532f 330 bool buckCfg;
AhmadAlkaff 0:7b5d37ca532f 331 /// Buck Inductor Setting: default 0 - 2.2uH, 1 - 4.7uH
AhmadAlkaff 0:7b5d37ca532f 332 bool buckInd;
AhmadAlkaff 0:7b5d37ca532f 333 /// Buck Hysteresis Off: default 0 - Hysteresis enabled (more efficient), 1 - Hysteresis off (lower voltage ripple)
AhmadAlkaff 0:7b5d37ca532f 334 bool buckHysOff;
AhmadAlkaff 0:7b5d37ca532f 335 /// Buck Minimum On Time: default 1 - Disable deglitch delay (lower voltage ripple), 0 - Enable deglitch dealy (more efficient)
AhmadAlkaff 0:7b5d37ca532f 336 bool buckMinOT;
AhmadAlkaff 0:7b5d37ca532f 337 /// Buck Integrate: default 1 - Better load regulation at higher current (recommended for output capacitance >6uF), 0 - More stable operation with smaller output capacitor
AhmadAlkaff 0:7b5d37ca532f 338 bool buckInteg;
AhmadAlkaff 0:7b5d37ca532f 339 /// Buck Passive Discharge: default 0 - Disabled, 1 - Enabled when buck disabled
AhmadAlkaff 0:7b5d37ca532f 340 bool buckPasDsc;
AhmadAlkaff 0:7b5d37ca532f 341 /// Buck Active Discharge: default 0 - Disabled, 1 - Enabled when buck disabled
AhmadAlkaff 0:7b5d37ca532f 342 bool buckActDsc;
AhmadAlkaff 0:7b5d37ca532f 343 /// 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)
AhmadAlkaff 0:7b5d37ca532f 344 bool buckFScl;
AhmadAlkaff 0:7b5d37ca532f 345
AhmadAlkaff 0:7b5d37ca532f 346 private:
AhmadAlkaff 0:7b5d37ca532f 347 /// I2C pointer
AhmadAlkaff 0:7b5d37ca532f 348 I2C *i2c;
AhmadAlkaff 0:7b5d37ca532f 349 /// Is this object the owner of the I2C object
AhmadAlkaff 0:7b5d37ca532f 350 bool isOwner;
AhmadAlkaff 0:7b5d37ca532f 351 /// Device slave address
AhmadAlkaff 0:7b5d37ca532f 352 int slaveAddress;
AhmadAlkaff 0:7b5d37ca532f 353 };
AhmadAlkaff 0:7b5d37ca532f 354
AhmadAlkaff 0:7b5d37ca532f 355 #endif /* _MAX14720_H_ */