MAX32620HSP (MAXREFDES100) RPC Example for Graphical User Interface

Dependencies:   USBDevice

Fork of HSP_Release by Jerry Bradshaw

This is an example program for the MAX32620HSP (MAXREFDES100 Health Sensor Platform). It demonstrates all the features of the platform and works with a companion graphical user interface (GUI) to help evaluate/configure/monitor the board. Go to the MAXREFDES100 product page and click on "design resources" to download the companion software. The GUI connects to the board through an RPC interface on a virtual serial port over the USB interface.

The RPC interface provides access to all the features of the board and is available to interface with other development environments such Matlab. This firmware provides realtime data streaming through the RPC interface over USB, and also provides the ability to log the data to flash for untethered battery operation. The data logging settings are configured through the GUI, and the GUI also provides the interface to download logged data.

Details on the RPC interface can be found here: HSP RPC Interface Documentation

Windows

With this program loaded, the MAX32620HSP will appear on your computer as a serial port. On Mac and Linux, this will happen by default. For Windows, you need to install a driver: HSP serial port windows driver

For more details about this platform and how to use it, see the MAXREFDES100 product page.

Committer:
jbradshaw
Date:
Tue Oct 25 15:22:11 2016 +0000
Revision:
0:e4a10ed6eb92
Child:
1:9490836294ea
tewt

Who changed what in which revision?

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