MAX14690 library

Fork of MAX14690 by Maxim Integrated

Committer:
jbradshaw
Date:
Wed Sep 28 19:52:29 2016 +0000
Revision:
2:5bcfe7e294b6
Parent:
1:f8919b0c2052
Child:
3:cdd88a3d3d24
added slave address #define in the MAX14720.h @code example

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jbradshaw 0:0e40db4a2b3e 1 /*******************************************************************************
jbradshaw 0:0e40db4a2b3e 2 * Copyright (C) 2015 Maxim Integrated Products, Inc., All Rights Reserved.
jbradshaw 0:0e40db4a2b3e 3 *
jbradshaw 0:0e40db4a2b3e 4 * Permission is hereby granted, free of charge, to any person obtaining a
jbradshaw 0:0e40db4a2b3e 5 * copy of this software and associated documentation files (the "Software"),
jbradshaw 0:0e40db4a2b3e 6 * to deal in the Software without restriction, including without limitation
jbradshaw 0:0e40db4a2b3e 7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
jbradshaw 0:0e40db4a2b3e 8 * and/or sell copies of the Software, and to permit persons to whom the
jbradshaw 0:0e40db4a2b3e 9 * Software is furnished to do so, subject to the following conditions:
jbradshaw 0:0e40db4a2b3e 10 *
jbradshaw 0:0e40db4a2b3e 11 * The above copyright notice and this permission notice shall be included
jbradshaw 0:0e40db4a2b3e 12 * in all copies or substantial portions of the Software.
jbradshaw 0:0e40db4a2b3e 13 *
jbradshaw 0:0e40db4a2b3e 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
jbradshaw 0:0e40db4a2b3e 15 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
jbradshaw 0:0e40db4a2b3e 16 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
jbradshaw 0:0e40db4a2b3e 17 * IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES
jbradshaw 0:0e40db4a2b3e 18 * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
jbradshaw 0:0e40db4a2b3e 19 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
jbradshaw 0:0e40db4a2b3e 20 * OTHER DEALINGS IN THE SOFTWARE.
jbradshaw 0:0e40db4a2b3e 21 *
jbradshaw 0:0e40db4a2b3e 22 * Except as contained in this notice, the name of Maxim Integrated
jbradshaw 0:0e40db4a2b3e 23 * Products, Inc. shall not be used except as stated in the Maxim Integrated
jbradshaw 0:0e40db4a2b3e 24 * Products, Inc. Branding Policy.
jbradshaw 0:0e40db4a2b3e 25 *
jbradshaw 0:0e40db4a2b3e 26 * The mere transfer of this software does not imply any licenses
jbradshaw 0:0e40db4a2b3e 27 * of trade secrets, proprietary technology, copyrights, patents,
jbradshaw 0:0e40db4a2b3e 28 * trademarks, maskwork rights, or any other form of intellectual
jbradshaw 0:0e40db4a2b3e 29 * property whatsoever. Maxim Integrated Products, Inc. retains all
jbradshaw 0:0e40db4a2b3e 30 * ownership rights.
jbradshaw 0:0e40db4a2b3e 31 *******************************************************************************
jbradshaw 0:0e40db4a2b3e 32 */
jbradshaw 0:0e40db4a2b3e 33
jbradshaw 0:0e40db4a2b3e 34 #ifndef PMIC_H_
jbradshaw 0:0e40db4a2b3e 35 #define PMIC_H_
jbradshaw 0:0e40db4a2b3e 36
jbradshaw 0:0e40db4a2b3e 37 #include "mbed.h"
jbradshaw 0:0e40db4a2b3e 38
jbradshaw 1:f8919b0c2052 39 /**
jbradshaw 1:f8919b0c2052 40 * Example for the MAX14720 PMIC Driver
jbradshaw 1:f8919b0c2052 41 *
jbradshaw 1:f8919b0c2052 42 * @code
jbradshaw 1:f8919b0c2052 43 * #include <stdio.h>
jbradshaw 1:f8919b0c2052 44 * #include "mbed.h"
jbradshaw 1:f8919b0c2052 45 * #include "MAX14720.h"
jbradshaw 1:f8919b0c2052 46 *
jbradshaw 1:f8919b0c2052 47 * // I2C Master 2
jbradshaw 2:5bcfe7e294b6 48 * I2C i2c2(I2C2_SDA, I2C2_SCL);
jbradshaw 2:5bcfe7e294b6 49 *
jbradshaw 2:5bcfe7e294b6 50 * #define I2C_ADDR_PMIC (0x54)
jbradshaw 2:5bcfe7e294b6 51 * MAX14720 max14720(&i2c2,I2C_ADDR_PMIC);
jbradshaw 1:f8919b0c2052 52 *
jbradshaw 1:f8919b0c2052 53 * int main(void) {
jbradshaw 1:f8919b0c2052 54 * int result;
jbradshaw 1:f8919b0c2052 55 *
jbradshaw 1:f8919b0c2052 56 * // initialize BoostVSet on the MAX14720 PMIC to 4.5 Volts
jbradshaw 1:f8919b0c2052 57 * printf("Init MAX14720\n");
jbradshaw 1:f8919b0c2052 58 * result = max14720.boostEn(MAX14720::BoostEn_Disable);
jbradshaw 1:f8919b0c2052 59 * if (result == MAX14720_ERROR) printf("Error communicating with MAX14720");
jbradshaw 1:f8919b0c2052 60 * result = max14720.boostVSet(MAX14720::BoostVSet_45);
jbradshaw 1:f8919b0c2052 61 * if (result == MAX14720_ERROR) printf("Error communicating with MAX14720");
jbradshaw 1:f8919b0c2052 62 * result = max14720.boostEn(MAX14720::BoostEn_Enable);
jbradshaw 1:f8919b0c2052 63 * if (result == MAX14720_ERROR) printf("Error communicating with MAX14720");
jbradshaw 1:f8919b0c2052 64 *
jbradshaw 1:f8919b0c2052 65 * while (1) {
jbradshaw 1:f8919b0c2052 66 * }
jbradshaw 1:f8919b0c2052 67 * }
jbradshaw 1:f8919b0c2052 68 * @endcode
jbradshaw 1:f8919b0c2052 69 */
jbradshaw 1:f8919b0c2052 70
jbradshaw 0:0e40db4a2b3e 71 #define MAX14720_NO_ERROR 0
jbradshaw 0:0e40db4a2b3e 72 #define MAX14720_ERROR -1
jbradshaw 0:0e40db4a2b3e 73
jbradshaw 0:0e40db4a2b3e 74 class MAX14720
jbradshaw 0:0e40db4a2b3e 75 {
jbradshaw 0:0e40db4a2b3e 76 public:
jbradshaw 0:0e40db4a2b3e 77 typedef enum { // I2C Register Addresses
jbradshaw 0:0e40db4a2b3e 78 CHIP_ID = 0x00,
jbradshaw 0:0e40db4a2b3e 79 CHIP_REV = 0x01,
jbradshaw 0:0e40db4a2b3e 80 BOOST_C_DIV = 0x03,
jbradshaw 0:0e40db4a2b3e 81 BOOST_I_SET = 0x04,
jbradshaw 0:0e40db4a2b3e 82 BOOST_V_SET = 0x05,
jbradshaw 0:0e40db4a2b3e 83 BOOST_CFG = 0x06,
jbradshaw 0:0e40db4a2b3e 84 BUCK_V_SET = 0x07,
jbradshaw 0:0e40db4a2b3e 85 BUCK_CFG = 0x08,
jbradshaw 0:0e40db4a2b3e 86 BUCK_I_SET = 0x09,
jbradshaw 0:0e40db4a2b3e 87 LDOV_SET = 0x0A,
jbradshaw 0:0e40db4a2b3e 88 LDO_CFG = 0x0B,
jbradshaw 0:0e40db4a2b3e 89 SWITCH_CFG = 0x0C,
jbradshaw 0:0e40db4a2b3e 90 BAT_TIME = 0x0D,
jbradshaw 0:0e40db4a2b3e 91 BAT_CFG = 0x0E,
jbradshaw 0:0e40db4a2b3e 92 BAT_BCV = 0x0F,
jbradshaw 0:0e40db4a2b3e 93 BAT_OCV = 0x10,
jbradshaw 0:0e40db4a2b3e 94 BAT_LCV = 0x11,
jbradshaw 0:0e40db4a2b3e 95 MON_CFG = 0X19,
jbradshaw 0:0e40db4a2b3e 96 BOOT_CFG = 0x1A,
jbradshaw 0:0e40db4a2b3e 97 PIN_STAT = 0x1B,
jbradshaw 0:0e40db4a2b3e 98 BBB_EXTRA = 0x1C,
jbradshaw 0:0e40db4a2b3e 99 HAND_SHK = 0x1D,
jbradshaw 0:0e40db4a2b3e 100 UVLO_CFG = 0x1E,
jbradshaw 0:0e40db4a2b3e 101 PWR_OFF = 0x1F,
jbradshaw 0:0e40db4a2b3e 102 OTP_MAP_0 = 0x20,
jbradshaw 0:0e40db4a2b3e 103 OTP_MAP_1 = 0x21,
jbradshaw 0:0e40db4a2b3e 104 OTP_MAP_2 = 0x22,
jbradshaw 0:0e40db4a2b3e 105 OTP_MAP_3 = 0x23,
jbradshaw 0:0e40db4a2b3e 106 OTP_MAP_4 = 0x24,
jbradshaw 0:0e40db4a2b3e 107 OTP_MAP_5 = 0x25,
jbradshaw 0:0e40db4a2b3e 108 OTP_MAP_6 = 0x26,
jbradshaw 0:0e40db4a2b3e 109 OTP_MAP_7 = 0x27,
jbradshaw 0:0e40db4a2b3e 110 OTP_MAP_8 = 0x28,
jbradshaw 0:0e40db4a2b3e 111 OTP_MAP_9 = 0x29,
jbradshaw 0:0e40db4a2b3e 112 OTP_MAP_A = 0x2A,
jbradshaw 0:0e40db4a2b3e 113 OTP_MAP_b = 0x2B,
jbradshaw 0:0e40db4a2b3e 114 } MAX14720_REG_map_t;
jbradshaw 0:0e40db4a2b3e 115
jbradshaw 0:0e40db4a2b3e 116 /// @brief ChipId Register (0x00)
jbradshaw 0:0e40db4a2b3e 117 typedef union ChipId_ {
jbradshaw 0:0e40db4a2b3e 118 char all;
jbradshaw 0:0e40db4a2b3e 119 } max14720_ChipId;
jbradshaw 0:0e40db4a2b3e 120
jbradshaw 0:0e40db4a2b3e 121 /// @brief ChipRev Register (0x01)
jbradshaw 0:0e40db4a2b3e 122 typedef union ChipRev_ {
jbradshaw 0:0e40db4a2b3e 123 char all;
jbradshaw 0:0e40db4a2b3e 124 } max14720_ChipRev;
jbradshaw 0:0e40db4a2b3e 125
jbradshaw 0:0e40db4a2b3e 126 /// @brief BoostCDiv Register (0x03)
jbradshaw 0:0e40db4a2b3e 127 typedef union BoostCDiv_ {
jbradshaw 0:0e40db4a2b3e 128 char all;
jbradshaw 0:0e40db4a2b3e 129 struct {
jbradshaw 0:0e40db4a2b3e 130 char ClkDivSet : 7;
jbradshaw 0:0e40db4a2b3e 131 char ClkDivEn : 1;
jbradshaw 0:0e40db4a2b3e 132 } bit;
jbradshaw 0:0e40db4a2b3e 133 } max14720_BoostCDiv;
jbradshaw 0:0e40db4a2b3e 134
jbradshaw 0:0e40db4a2b3e 135 /// @brief BoostISet Register (0x04)
jbradshaw 0:0e40db4a2b3e 136 typedef union BoostISet_ {
jbradshaw 0:0e40db4a2b3e 137 char all;
jbradshaw 0:0e40db4a2b3e 138 struct {
jbradshaw 0:0e40db4a2b3e 139 char BoostISet : 3;
jbradshaw 0:0e40db4a2b3e 140 } bit;
jbradshaw 0:0e40db4a2b3e 141 } max14720_BoostISet;
jbradshaw 0:0e40db4a2b3e 142
jbradshaw 0:0e40db4a2b3e 143 /// @brief BoostVSet Register (0x05)
jbradshaw 0:0e40db4a2b3e 144 typedef union BoostVSet_ {
jbradshaw 0:0e40db4a2b3e 145 char all;
jbradshaw 0:0e40db4a2b3e 146 struct {
jbradshaw 0:0e40db4a2b3e 147 char BoostVSet : 5;
jbradshaw 0:0e40db4a2b3e 148 } bit;
jbradshaw 0:0e40db4a2b3e 149 } max14720_BoostVSet;
jbradshaw 0:0e40db4a2b3e 150
jbradshaw 0:0e40db4a2b3e 151 /// @brief BoostCfg Register (0x06)
jbradshaw 0:0e40db4a2b3e 152 typedef union BoostCfg_ {
jbradshaw 0:0e40db4a2b3e 153 char all;
jbradshaw 0:0e40db4a2b3e 154 struct {
jbradshaw 0:0e40db4a2b3e 155 char BoostInd : 1;
jbradshaw 0:0e40db4a2b3e 156 char BoostEMI : 1;
jbradshaw 0:0e40db4a2b3e 157 char reserved : 1;
jbradshaw 0:0e40db4a2b3e 158 char BoostEn : 2;
jbradshaw 0:0e40db4a2b3e 159 char BoostSeq : 3;
jbradshaw 0:0e40db4a2b3e 160 } bit;
jbradshaw 0:0e40db4a2b3e 161 } max14720_BoostCfg;
jbradshaw 0:0e40db4a2b3e 162
jbradshaw 0:0e40db4a2b3e 163 /// @brief BuckVSet Register (0x07)
jbradshaw 0:0e40db4a2b3e 164 typedef union BuckVSet_ {
jbradshaw 0:0e40db4a2b3e 165 char all;
jbradshaw 0:0e40db4a2b3e 166 struct {
jbradshaw 0:0e40db4a2b3e 167 char BuckVSet : 6;
jbradshaw 0:0e40db4a2b3e 168 } bit;
jbradshaw 0:0e40db4a2b3e 169 } max14720_BuckVSet;
jbradshaw 0:0e40db4a2b3e 170
jbradshaw 0:0e40db4a2b3e 171 /// @brief BuckCfg Register (0x08)
jbradshaw 0:0e40db4a2b3e 172 typedef union BuckCfg_ {
jbradshaw 0:0e40db4a2b3e 173 char all;
jbradshaw 0:0e40db4a2b3e 174 struct {
jbradshaw 0:0e40db4a2b3e 175 char BuckFst : 1;
jbradshaw 0:0e40db4a2b3e 176 char BuckMd : 2;
jbradshaw 0:0e40db4a2b3e 177 char BoostEn : 2;
jbradshaw 0:0e40db4a2b3e 178 char BuckSeq : 3;
jbradshaw 0:0e40db4a2b3e 179 } bit;
jbradshaw 0:0e40db4a2b3e 180 } max14720_BuckCfg;
jbradshaw 0:0e40db4a2b3e 181
jbradshaw 0:0e40db4a2b3e 182 /// @brief BuckISet Register (0x09)
jbradshaw 0:0e40db4a2b3e 183 typedef union BuckISet_ {
jbradshaw 0:0e40db4a2b3e 184 char all;
jbradshaw 0:0e40db4a2b3e 185 struct {
jbradshaw 0:0e40db4a2b3e 186 char BuckInteg : 1;
jbradshaw 0:0e40db4a2b3e 187 char BuckMinOT : 1;
jbradshaw 0:0e40db4a2b3e 188 char BuckHysOff : 1;
jbradshaw 0:0e40db4a2b3e 189 char BuckInd : 1;
jbradshaw 0:0e40db4a2b3e 190 char BuckCfg : 1;
jbradshaw 0:0e40db4a2b3e 191 char BuckISet : 3;
jbradshaw 0:0e40db4a2b3e 192 } bit;
jbradshaw 0:0e40db4a2b3e 193 } max14720_BuckISet;
jbradshaw 0:0e40db4a2b3e 194
jbradshaw 0:0e40db4a2b3e 195 /// @brief LDOVSet Register (0x0A)
jbradshaw 0:0e40db4a2b3e 196 typedef union LDOVSet_ {
jbradshaw 0:0e40db4a2b3e 197 char all;
jbradshaw 0:0e40db4a2b3e 198 struct {
jbradshaw 0:0e40db4a2b3e 199 char LDOVSet : 5;
jbradshaw 0:0e40db4a2b3e 200 } bit;
jbradshaw 0:0e40db4a2b3e 201 } max14720_LDOVSet;
jbradshaw 0:0e40db4a2b3e 202
jbradshaw 0:0e40db4a2b3e 203 /// @brief LDOCfg Register (0x0B)
jbradshaw 0:0e40db4a2b3e 204 typedef union LDOCfg_ {
jbradshaw 0:0e40db4a2b3e 205 char all;
jbradshaw 0:0e40db4a2b3e 206 struct {
jbradshaw 0:0e40db4a2b3e 207 char LDOMode : 1;
jbradshaw 0:0e40db4a2b3e 208 char LDOEn : 2;
jbradshaw 0:0e40db4a2b3e 209 char LDO_ActDSC : 1;
jbradshaw 0:0e40db4a2b3e 210 char LDO_PasDSC : 1;
jbradshaw 0:0e40db4a2b3e 211 char LDOSeq : 3;
jbradshaw 0:0e40db4a2b3e 212 } bit;
jbradshaw 0:0e40db4a2b3e 213 } max14720_LDOCfg;
jbradshaw 0:0e40db4a2b3e 214
jbradshaw 0:0e40db4a2b3e 215 /// @brief SwitchCfg Register (0x0C)
jbradshaw 0:0e40db4a2b3e 216 typedef union SwitchCfg_ {
jbradshaw 0:0e40db4a2b3e 217 char all;
jbradshaw 0:0e40db4a2b3e 218 struct {
jbradshaw 0:0e40db4a2b3e 219 char SWSoftStart : 1;
jbradshaw 0:0e40db4a2b3e 220 char SWEn : 2;
jbradshaw 0:0e40db4a2b3e 221 char reserved : 2;
jbradshaw 0:0e40db4a2b3e 222 char SWSeq : 3;
jbradshaw 0:0e40db4a2b3e 223 } bit;
jbradshaw 0:0e40db4a2b3e 224 } max14720_SwitchCfg;
jbradshaw 0:0e40db4a2b3e 225
jbradshaw 0:0e40db4a2b3e 226 /// @brief BatTime Register (0x0D)
jbradshaw 0:0e40db4a2b3e 227 typedef union BatTime_ {
jbradshaw 0:0e40db4a2b3e 228 char all;
jbradshaw 0:0e40db4a2b3e 229 struct {
jbradshaw 0:0e40db4a2b3e 230 char LCVTm : 2;
jbradshaw 0:0e40db4a2b3e 231 char OCVTm : 2;
jbradshaw 0:0e40db4a2b3e 232 char BCVTm : 2;
jbradshaw 0:0e40db4a2b3e 233 } bit;
jbradshaw 0:0e40db4a2b3e 234 } max14720_BatTime;
jbradshaw 0:0e40db4a2b3e 235
jbradshaw 0:0e40db4a2b3e 236 /// @brief BatCfg Register (0x0E)
jbradshaw 0:0e40db4a2b3e 237 typedef union BatCfg_ {
jbradshaw 0:0e40db4a2b3e 238 char all;
jbradshaw 0:0e40db4a2b3e 239 struct {
jbradshaw 0:0e40db4a2b3e 240 char BatImpCur : 3;
jbradshaw 0:0e40db4a2b3e 241 char LcvDly2Skip : 1;
jbradshaw 0:0e40db4a2b3e 242 char reserved : 2;
jbradshaw 0:0e40db4a2b3e 243 char BIMAbort : 1;
jbradshaw 0:0e40db4a2b3e 244 char BIA : 1;
jbradshaw 0:0e40db4a2b3e 245 } bit;
jbradshaw 0:0e40db4a2b3e 246 } max14720_BatCfg;
jbradshaw 0:0e40db4a2b3e 247
jbradshaw 0:0e40db4a2b3e 248 /// @brief BatV Register (0x0F)
jbradshaw 0:0e40db4a2b3e 249 typedef union BatBCV_ {
jbradshaw 0:0e40db4a2b3e 250 char all;
jbradshaw 0:0e40db4a2b3e 251 } max14720_BatBCV;
jbradshaw 0:0e40db4a2b3e 252
jbradshaw 0:0e40db4a2b3e 253 /// @brief BatOCV Register (0x10)
jbradshaw 0:0e40db4a2b3e 254 typedef union BatOCV_ {
jbradshaw 0:0e40db4a2b3e 255 char all;
jbradshaw 0:0e40db4a2b3e 256 } max14720_BatOCV;
jbradshaw 0:0e40db4a2b3e 257
jbradshaw 0:0e40db4a2b3e 258 /// @brief BatLCV Register (0x11)
jbradshaw 0:0e40db4a2b3e 259 typedef union BatLCV_ {
jbradshaw 0:0e40db4a2b3e 260 char all;
jbradshaw 0:0e40db4a2b3e 261 } max14720_BatLCV;
jbradshaw 0:0e40db4a2b3e 262
jbradshaw 0:0e40db4a2b3e 263 /// @brief MONCfg Register (0x19)
jbradshaw 0:0e40db4a2b3e 264 typedef union MONCfg_ {
jbradshaw 0:0e40db4a2b3e 265 char all;
jbradshaw 0:0e40db4a2b3e 266 struct {
jbradshaw 0:0e40db4a2b3e 267 char MONCtr : 3;
jbradshaw 0:0e40db4a2b3e 268 char MONHiZ : 1;
jbradshaw 0:0e40db4a2b3e 269 char reserved : 3;
jbradshaw 0:0e40db4a2b3e 270 char MONEn : 1;
jbradshaw 0:0e40db4a2b3e 271 } bit;
jbradshaw 0:0e40db4a2b3e 272 } max14720_MONCfg;
jbradshaw 0:0e40db4a2b3e 273
jbradshaw 0:0e40db4a2b3e 274 /// @brief BootCfg Register (0x1A)
jbradshaw 0:0e40db4a2b3e 275 typedef union BootCfg_ {
jbradshaw 0:0e40db4a2b3e 276 char all;
jbradshaw 0:0e40db4a2b3e 277 struct {
jbradshaw 0:0e40db4a2b3e 278 char BootDly : 2;
jbradshaw 0:0e40db4a2b3e 279 char PFNPUDCfg : 1;
jbradshaw 0:0e40db4a2b3e 280 char SftRstCfg : 1;
jbradshaw 0:0e40db4a2b3e 281 char PwrRstCfg : 4;
jbradshaw 0:0e40db4a2b3e 282 } bit;
jbradshaw 0:0e40db4a2b3e 283 } max14720_BootCfg;
jbradshaw 0:0e40db4a2b3e 284
jbradshaw 0:0e40db4a2b3e 285 /// @brief PinStat Register (0x1B)
jbradshaw 0:0e40db4a2b3e 286 typedef union PinStat_ {
jbradshaw 0:0e40db4a2b3e 287 char all;
jbradshaw 0:0e40db4a2b3e 288 struct {
jbradshaw 0:0e40db4a2b3e 289 char RST_LEN : 1;
jbradshaw 0:0e40db4a2b3e 290 char MPC_BEN : 1;
jbradshaw 0:0e40db4a2b3e 291 char KOUT_HVEN : 1;
jbradshaw 0:0e40db4a2b3e 292 char KIN_SWEN : 1;
jbradshaw 0:0e40db4a2b3e 293 } bit;
jbradshaw 0:0e40db4a2b3e 294 } max14720_PinStat;
jbradshaw 0:0e40db4a2b3e 295
jbradshaw 0:0e40db4a2b3e 296 /// @brief BBBExtra Register (0x1C)
jbradshaw 0:0e40db4a2b3e 297 typedef union BBBExtra_ {
jbradshaw 0:0e40db4a2b3e 298 char all;
jbradshaw 0:0e40db4a2b3e 299 struct {
jbradshaw 0:0e40db4a2b3e 300 char BuckFScl : 1;
jbradshaw 0:0e40db4a2b3e 301 char BuckActDsc : 1;
jbradshaw 0:0e40db4a2b3e 302 char BuckPasDsc : 1;
jbradshaw 0:0e40db4a2b3e 303 char reserved : 2;
jbradshaw 0:0e40db4a2b3e 304 char Boost_ActDsc : 1;
jbradshaw 0:0e40db4a2b3e 305 char BoostPasDsc : 1;
jbradshaw 0:0e40db4a2b3e 306 char Boost_HysOff : 1;
jbradshaw 0:0e40db4a2b3e 307 } bit;
jbradshaw 0:0e40db4a2b3e 308 } max14720_BBBExtra;
jbradshaw 0:0e40db4a2b3e 309
jbradshaw 0:0e40db4a2b3e 310 /// @brief HandShk Register (0x1D)
jbradshaw 0:0e40db4a2b3e 311 typedef union HandShk_ {
jbradshaw 0:0e40db4a2b3e 312 char all;
jbradshaw 0:0e40db4a2b3e 313 struct {
jbradshaw 0:0e40db4a2b3e 314 char StayOn : 1;
jbradshaw 0:0e40db4a2b3e 315 char reserved : 5;
jbradshaw 0:0e40db4a2b3e 316 char GlbPasDsc : 1;
jbradshaw 0:0e40db4a2b3e 317 char StartOff : 1;
jbradshaw 0:0e40db4a2b3e 318 } bit;
jbradshaw 0:0e40db4a2b3e 319 } max14720_HandShk;
jbradshaw 0:0e40db4a2b3e 320
jbradshaw 0:0e40db4a2b3e 321 /// @brief UVLOCfg Register (0x1E)
jbradshaw 0:0e40db4a2b3e 322 typedef union UVLOCfg_ {
jbradshaw 0:0e40db4a2b3e 323 char all;
jbradshaw 0:0e40db4a2b3e 324 struct {
jbradshaw 0:0e40db4a2b3e 325 char LDO_UVLOsel : 1;
jbradshaw 0:0e40db4a2b3e 326 char BBBUVLOsel : 1;
jbradshaw 0:0e40db4a2b3e 327 } bit;
jbradshaw 0:0e40db4a2b3e 328 } max14720_UVLOCfg;
jbradshaw 0:0e40db4a2b3e 329
jbradshaw 0:0e40db4a2b3e 330 /// @brief PWRCFG Register (0x1F)
jbradshaw 0:0e40db4a2b3e 331 typedef union PWROFF_ {
jbradshaw 0:0e40db4a2b3e 332 char all;
jbradshaw 0:0e40db4a2b3e 333 } max14720_PWROFF;
jbradshaw 0:0e40db4a2b3e 334
jbradshaw 0:0e40db4a2b3e 335 /// All of the possible BoostVSet values
jbradshaw 0:0e40db4a2b3e 336 typedef enum {
jbradshaw 0:0e40db4a2b3e 337 BoostVSet_25,
jbradshaw 0:0e40db4a2b3e 338 BoostVSet_26,
jbradshaw 0:0e40db4a2b3e 339 BoostVSet_27,
jbradshaw 0:0e40db4a2b3e 340 BoostVSet_28,
jbradshaw 0:0e40db4a2b3e 341 BoostVSet_29,
jbradshaw 0:0e40db4a2b3e 342 BoostVSet_30,
jbradshaw 0:0e40db4a2b3e 343 BoostVSet_31,
jbradshaw 0:0e40db4a2b3e 344 BoostVSet_32,
jbradshaw 0:0e40db4a2b3e 345 BoostVSet_33,
jbradshaw 0:0e40db4a2b3e 346 BoostVSet_34,
jbradshaw 0:0e40db4a2b3e 347 BoostVSet_35,
jbradshaw 0:0e40db4a2b3e 348 BoostVSet_36,
jbradshaw 0:0e40db4a2b3e 349 BoostVSet_37,
jbradshaw 0:0e40db4a2b3e 350 BoostVSet_38,
jbradshaw 0:0e40db4a2b3e 351 BoostVSet_39,
jbradshaw 0:0e40db4a2b3e 352 BoostVSet_40,
jbradshaw 0:0e40db4a2b3e 353 BoostVSet_41,
jbradshaw 0:0e40db4a2b3e 354 BoostVSet_42,
jbradshaw 0:0e40db4a2b3e 355 BoostVSet_43,
jbradshaw 0:0e40db4a2b3e 356 BoostVSet_44,
jbradshaw 0:0e40db4a2b3e 357 BoostVSet_45,
jbradshaw 0:0e40db4a2b3e 358 BoostVSet_46,
jbradshaw 0:0e40db4a2b3e 359 BoostVSet_47,
jbradshaw 0:0e40db4a2b3e 360 BoostVSet_48,
jbradshaw 0:0e40db4a2b3e 361 BoostVSet_49,
jbradshaw 0:0e40db4a2b3e 362 BoostVSet_50,
jbradshaw 0:0e40db4a2b3e 363 } BoostVSet_Values;
jbradshaw 0:0e40db4a2b3e 364
jbradshaw 0:0e40db4a2b3e 365 typedef enum {
jbradshaw 0:0e40db4a2b3e 366 BoostEn_Disable,
jbradshaw 0:0e40db4a2b3e 367 BoostEn_Enable,
jbradshaw 0:0e40db4a2b3e 368 BoostEn_Enable_MPC_High,
jbradshaw 0:0e40db4a2b3e 369 } BoostEn_Values;
jbradshaw 0:0e40db4a2b3e 370
jbradshaw 0:0e40db4a2b3e 371 typedef enum {
jbradshaw 0:0e40db4a2b3e 372 BoostISet_0,
jbradshaw 0:0e40db4a2b3e 373 BoostISet_50mA,
jbradshaw 0:0e40db4a2b3e 374 BoostISet_100mA,
jbradshaw 0:0e40db4a2b3e 375 BoostISet_150mA,
jbradshaw 0:0e40db4a2b3e 376 BoostISet_200mA,
jbradshaw 0:0e40db4a2b3e 377 BoostISet_250mA,
jbradshaw 0:0e40db4a2b3e 378 BoostISet_300mA,
jbradshaw 0:0e40db4a2b3e 379 BoostISet_350mA,
jbradshaw 0:0e40db4a2b3e 380 } BoostISet_Values;
jbradshaw 0:0e40db4a2b3e 381
jbradshaw 0:0e40db4a2b3e 382 typedef enum {
jbradshaw 0:0e40db4a2b3e 383 BoostSeq_Disabled,
jbradshaw 0:0e40db4a2b3e 384 BoostSeq_Reserved,
jbradshaw 0:0e40db4a2b3e 385 BoostSeq_Enabled_0,
jbradshaw 0:0e40db4a2b3e 386 BoostSeq_Enabled_25,
jbradshaw 0:0e40db4a2b3e 387 BoostSeq_Enabled_50,
jbradshaw 0:0e40db4a2b3e 388 BoostSeq_Reserved2,
jbradshaw 0:0e40db4a2b3e 389 BoostSeq_Controlled_HVEN,
jbradshaw 0:0e40db4a2b3e 390 BoostSeq_Controlled_BoostEn,
jbradshaw 0:0e40db4a2b3e 391 } BoostSeq_Values;
jbradshaw 0:0e40db4a2b3e 392
jbradshaw 0:0e40db4a2b3e 393 typedef enum {
jbradshaw 0:0e40db4a2b3e 394 BoostEMI_Active,
jbradshaw 0:0e40db4a2b3e 395 BoostEMI_Disabled,
jbradshaw 0:0e40db4a2b3e 396 } BoostEMI_Values;
jbradshaw 0:0e40db4a2b3e 397
jbradshaw 0:0e40db4a2b3e 398 typedef enum {
jbradshaw 0:0e40db4a2b3e 399 BoostInd_3_3,
jbradshaw 0:0e40db4a2b3e 400 BoostInd_4_7,
jbradshaw 0:0e40db4a2b3e 401 } BoostInd_Values;
jbradshaw 0:0e40db4a2b3e 402
jbradshaw 0:0e40db4a2b3e 403 /**
jbradshaw 0:0e40db4a2b3e 404 * MAX14720 constructor.
jbradshaw 0:0e40db4a2b3e 405 *
jbradshaw 0:0e40db4a2b3e 406 * @param sda mbed pin to use for SDA line of I2C interface.
jbradshaw 0:0e40db4a2b3e 407 * @param scl mbed pin to use for SCL line of I2C interface.
jbradshaw 0:0e40db4a2b3e 408 * @param slaveAddress Slave Address of the device.
jbradshaw 0:0e40db4a2b3e 409 */
jbradshaw 0:0e40db4a2b3e 410 MAX14720(PinName sda, PinName scl, int slaveAddress);
jbradshaw 0:0e40db4a2b3e 411
jbradshaw 0:0e40db4a2b3e 412 /**
jbradshaw 0:0e40db4a2b3e 413 * MAX14720 constructor.
jbradshaw 0:0e40db4a2b3e 414 *
jbradshaw 0:0e40db4a2b3e 415 * @param i2c I2C object to use.
jbradshaw 0:0e40db4a2b3e 416 * @param slaveAddress Slave Address of the device.
jbradshaw 0:0e40db4a2b3e 417 */
jbradshaw 0:0e40db4a2b3e 418 MAX14720(I2C *i2c, int slaveAddress);
jbradshaw 0:0e40db4a2b3e 419
jbradshaw 0:0e40db4a2b3e 420 /**
jbradshaw 0:0e40db4a2b3e 421 * MAX14720 destructor.
jbradshaw 0:0e40db4a2b3e 422 */
jbradshaw 0:0e40db4a2b3e 423 ~MAX14720();
jbradshaw 0:0e40db4a2b3e 424
jbradshaw 0:0e40db4a2b3e 425 /**
jbradshaw 0:0e40db4a2b3e 426 * Enable or disable Boost
jbradshaw 0:0e40db4a2b3e 427 */
jbradshaw 0:0e40db4a2b3e 428 int boostEn(BoostEn_Values value);
jbradshaw 0:0e40db4a2b3e 429 /**
jbradshaw 0:0e40db4a2b3e 430 * Set the Boost Output Voltage from 2.5V to 5V with 100mV increments
jbradshaw 0:0e40db4a2b3e 431 */
jbradshaw 0:0e40db4a2b3e 432 int boostVSet(BoostVSet_Values value);
jbradshaw 0:0e40db4a2b3e 433 /**
jbradshaw 0:0e40db4a2b3e 434 * Read the Boost Output Voltage
jbradshaw 0:0e40db4a2b3e 435 */
jbradshaw 0:0e40db4a2b3e 436 int readBoostVSet(BoostVSet_Values *value);
jbradshaw 0:0e40db4a2b3e 437 /**
jbradshaw 0:0e40db4a2b3e 438 * Set the Buck-Boost Peak Current-Limit
jbradshaw 0:0e40db4a2b3e 439 */
jbradshaw 0:0e40db4a2b3e 440 int boostISet(BoostISet_Values value);
jbradshaw 0:0e40db4a2b3e 441 /**
jbradshaw 0:0e40db4a2b3e 442 * Read the Buck-Boost Peak Current-Limit
jbradshaw 0:0e40db4a2b3e 443 */
jbradshaw 0:0e40db4a2b3e 444 int readBoostISet(BoostISet_Values *value);
jbradshaw 0:0e40db4a2b3e 445
jbradshaw 0:0e40db4a2b3e 446 /**
jbradshaw 0:0e40db4a2b3e 447 * Write a device register
jbradshaw 0:0e40db4a2b3e 448 */
jbradshaw 0:0e40db4a2b3e 449 int writeReg(MAX14720_REG_map_t reg, char value);
jbradshaw 0:0e40db4a2b3e 450 /**
jbradshaw 0:0e40db4a2b3e 451 * Read a device register
jbradshaw 0:0e40db4a2b3e 452 */
jbradshaw 0:0e40db4a2b3e 453 int readReg(MAX14720_REG_map_t reg, char *value);
jbradshaw 0:0e40db4a2b3e 454 private:
jbradshaw 0:0e40db4a2b3e 455 /// I2C pointer
jbradshaw 0:0e40db4a2b3e 456 I2C *i2c;
jbradshaw 0:0e40db4a2b3e 457 /// Is this object the owner of the I2C object
jbradshaw 0:0e40db4a2b3e 458 bool isOwner;
jbradshaw 0:0e40db4a2b3e 459 /// Device slave address
jbradshaw 0:0e40db4a2b3e 460 int slaveAddress;
jbradshaw 0:0e40db4a2b3e 461
jbradshaw 0:0e40db4a2b3e 462 };
jbradshaw 0:0e40db4a2b3e 463
jbradshaw 0:0e40db4a2b3e 464 #endif /* PMIC_H_ */