MAX14690 library

Fork of MAX14690 by Maxim Integrated

Committer:
jbradshaw
Date:
Wed Sep 28 16:42:42 2016 +0000
Revision:
0:0e40db4a2b3e
Child:
1:f8919b0c2052
initial commit

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 0:0e40db4a2b3e 39 #define MAX14720_NO_ERROR 0
jbradshaw 0:0e40db4a2b3e 40 #define MAX14720_ERROR -1
jbradshaw 0:0e40db4a2b3e 41
jbradshaw 0:0e40db4a2b3e 42 class MAX14720
jbradshaw 0:0e40db4a2b3e 43 {
jbradshaw 0:0e40db4a2b3e 44 public:
jbradshaw 0:0e40db4a2b3e 45 typedef enum { // I2C Register Addresses
jbradshaw 0:0e40db4a2b3e 46 CHIP_ID = 0x00,
jbradshaw 0:0e40db4a2b3e 47 CHIP_REV = 0x01,
jbradshaw 0:0e40db4a2b3e 48 BOOST_C_DIV = 0x03,
jbradshaw 0:0e40db4a2b3e 49 BOOST_I_SET = 0x04,
jbradshaw 0:0e40db4a2b3e 50 BOOST_V_SET = 0x05,
jbradshaw 0:0e40db4a2b3e 51 BOOST_CFG = 0x06,
jbradshaw 0:0e40db4a2b3e 52 BUCK_V_SET = 0x07,
jbradshaw 0:0e40db4a2b3e 53 BUCK_CFG = 0x08,
jbradshaw 0:0e40db4a2b3e 54 BUCK_I_SET = 0x09,
jbradshaw 0:0e40db4a2b3e 55 LDOV_SET = 0x0A,
jbradshaw 0:0e40db4a2b3e 56 LDO_CFG = 0x0B,
jbradshaw 0:0e40db4a2b3e 57 SWITCH_CFG = 0x0C,
jbradshaw 0:0e40db4a2b3e 58 BAT_TIME = 0x0D,
jbradshaw 0:0e40db4a2b3e 59 BAT_CFG = 0x0E,
jbradshaw 0:0e40db4a2b3e 60 BAT_BCV = 0x0F,
jbradshaw 0:0e40db4a2b3e 61 BAT_OCV = 0x10,
jbradshaw 0:0e40db4a2b3e 62 BAT_LCV = 0x11,
jbradshaw 0:0e40db4a2b3e 63 MON_CFG = 0X19,
jbradshaw 0:0e40db4a2b3e 64 BOOT_CFG = 0x1A,
jbradshaw 0:0e40db4a2b3e 65 PIN_STAT = 0x1B,
jbradshaw 0:0e40db4a2b3e 66 BBB_EXTRA = 0x1C,
jbradshaw 0:0e40db4a2b3e 67 HAND_SHK = 0x1D,
jbradshaw 0:0e40db4a2b3e 68 UVLO_CFG = 0x1E,
jbradshaw 0:0e40db4a2b3e 69 PWR_OFF = 0x1F,
jbradshaw 0:0e40db4a2b3e 70 OTP_MAP_0 = 0x20,
jbradshaw 0:0e40db4a2b3e 71 OTP_MAP_1 = 0x21,
jbradshaw 0:0e40db4a2b3e 72 OTP_MAP_2 = 0x22,
jbradshaw 0:0e40db4a2b3e 73 OTP_MAP_3 = 0x23,
jbradshaw 0:0e40db4a2b3e 74 OTP_MAP_4 = 0x24,
jbradshaw 0:0e40db4a2b3e 75 OTP_MAP_5 = 0x25,
jbradshaw 0:0e40db4a2b3e 76 OTP_MAP_6 = 0x26,
jbradshaw 0:0e40db4a2b3e 77 OTP_MAP_7 = 0x27,
jbradshaw 0:0e40db4a2b3e 78 OTP_MAP_8 = 0x28,
jbradshaw 0:0e40db4a2b3e 79 OTP_MAP_9 = 0x29,
jbradshaw 0:0e40db4a2b3e 80 OTP_MAP_A = 0x2A,
jbradshaw 0:0e40db4a2b3e 81 OTP_MAP_b = 0x2B,
jbradshaw 0:0e40db4a2b3e 82 } MAX14720_REG_map_t;
jbradshaw 0:0e40db4a2b3e 83
jbradshaw 0:0e40db4a2b3e 84 /// @brief ChipId Register (0x00)
jbradshaw 0:0e40db4a2b3e 85 typedef union ChipId_ {
jbradshaw 0:0e40db4a2b3e 86 char all;
jbradshaw 0:0e40db4a2b3e 87 } max14720_ChipId;
jbradshaw 0:0e40db4a2b3e 88
jbradshaw 0:0e40db4a2b3e 89 /// @brief ChipRev Register (0x01)
jbradshaw 0:0e40db4a2b3e 90 typedef union ChipRev_ {
jbradshaw 0:0e40db4a2b3e 91 char all;
jbradshaw 0:0e40db4a2b3e 92 } max14720_ChipRev;
jbradshaw 0:0e40db4a2b3e 93
jbradshaw 0:0e40db4a2b3e 94 /// @brief BoostCDiv Register (0x03)
jbradshaw 0:0e40db4a2b3e 95 typedef union BoostCDiv_ {
jbradshaw 0:0e40db4a2b3e 96 char all;
jbradshaw 0:0e40db4a2b3e 97 struct {
jbradshaw 0:0e40db4a2b3e 98 char ClkDivSet : 7;
jbradshaw 0:0e40db4a2b3e 99 char ClkDivEn : 1;
jbradshaw 0:0e40db4a2b3e 100 } bit;
jbradshaw 0:0e40db4a2b3e 101 } max14720_BoostCDiv;
jbradshaw 0:0e40db4a2b3e 102
jbradshaw 0:0e40db4a2b3e 103 /// @brief BoostISet Register (0x04)
jbradshaw 0:0e40db4a2b3e 104 typedef union BoostISet_ {
jbradshaw 0:0e40db4a2b3e 105 char all;
jbradshaw 0:0e40db4a2b3e 106 struct {
jbradshaw 0:0e40db4a2b3e 107 char BoostISet : 3;
jbradshaw 0:0e40db4a2b3e 108 } bit;
jbradshaw 0:0e40db4a2b3e 109 } max14720_BoostISet;
jbradshaw 0:0e40db4a2b3e 110
jbradshaw 0:0e40db4a2b3e 111 /// @brief BoostVSet Register (0x05)
jbradshaw 0:0e40db4a2b3e 112 typedef union BoostVSet_ {
jbradshaw 0:0e40db4a2b3e 113 char all;
jbradshaw 0:0e40db4a2b3e 114 struct {
jbradshaw 0:0e40db4a2b3e 115 char BoostVSet : 5;
jbradshaw 0:0e40db4a2b3e 116 } bit;
jbradshaw 0:0e40db4a2b3e 117 } max14720_BoostVSet;
jbradshaw 0:0e40db4a2b3e 118
jbradshaw 0:0e40db4a2b3e 119 /// @brief BoostCfg Register (0x06)
jbradshaw 0:0e40db4a2b3e 120 typedef union BoostCfg_ {
jbradshaw 0:0e40db4a2b3e 121 char all;
jbradshaw 0:0e40db4a2b3e 122 struct {
jbradshaw 0:0e40db4a2b3e 123 char BoostInd : 1;
jbradshaw 0:0e40db4a2b3e 124 char BoostEMI : 1;
jbradshaw 0:0e40db4a2b3e 125 char reserved : 1;
jbradshaw 0:0e40db4a2b3e 126 char BoostEn : 2;
jbradshaw 0:0e40db4a2b3e 127 char BoostSeq : 3;
jbradshaw 0:0e40db4a2b3e 128 } bit;
jbradshaw 0:0e40db4a2b3e 129 } max14720_BoostCfg;
jbradshaw 0:0e40db4a2b3e 130
jbradshaw 0:0e40db4a2b3e 131 /// @brief BuckVSet Register (0x07)
jbradshaw 0:0e40db4a2b3e 132 typedef union BuckVSet_ {
jbradshaw 0:0e40db4a2b3e 133 char all;
jbradshaw 0:0e40db4a2b3e 134 struct {
jbradshaw 0:0e40db4a2b3e 135 char BuckVSet : 6;
jbradshaw 0:0e40db4a2b3e 136 } bit;
jbradshaw 0:0e40db4a2b3e 137 } max14720_BuckVSet;
jbradshaw 0:0e40db4a2b3e 138
jbradshaw 0:0e40db4a2b3e 139 /// @brief BuckCfg Register (0x08)
jbradshaw 0:0e40db4a2b3e 140 typedef union BuckCfg_ {
jbradshaw 0:0e40db4a2b3e 141 char all;
jbradshaw 0:0e40db4a2b3e 142 struct {
jbradshaw 0:0e40db4a2b3e 143 char BuckFst : 1;
jbradshaw 0:0e40db4a2b3e 144 char BuckMd : 2;
jbradshaw 0:0e40db4a2b3e 145 char BoostEn : 2;
jbradshaw 0:0e40db4a2b3e 146 char BuckSeq : 3;
jbradshaw 0:0e40db4a2b3e 147 } bit;
jbradshaw 0:0e40db4a2b3e 148 } max14720_BuckCfg;
jbradshaw 0:0e40db4a2b3e 149
jbradshaw 0:0e40db4a2b3e 150 /// @brief BuckISet Register (0x09)
jbradshaw 0:0e40db4a2b3e 151 typedef union BuckISet_ {
jbradshaw 0:0e40db4a2b3e 152 char all;
jbradshaw 0:0e40db4a2b3e 153 struct {
jbradshaw 0:0e40db4a2b3e 154 char BuckInteg : 1;
jbradshaw 0:0e40db4a2b3e 155 char BuckMinOT : 1;
jbradshaw 0:0e40db4a2b3e 156 char BuckHysOff : 1;
jbradshaw 0:0e40db4a2b3e 157 char BuckInd : 1;
jbradshaw 0:0e40db4a2b3e 158 char BuckCfg : 1;
jbradshaw 0:0e40db4a2b3e 159 char BuckISet : 3;
jbradshaw 0:0e40db4a2b3e 160 } bit;
jbradshaw 0:0e40db4a2b3e 161 } max14720_BuckISet;
jbradshaw 0:0e40db4a2b3e 162
jbradshaw 0:0e40db4a2b3e 163 /// @brief LDOVSet Register (0x0A)
jbradshaw 0:0e40db4a2b3e 164 typedef union LDOVSet_ {
jbradshaw 0:0e40db4a2b3e 165 char all;
jbradshaw 0:0e40db4a2b3e 166 struct {
jbradshaw 0:0e40db4a2b3e 167 char LDOVSet : 5;
jbradshaw 0:0e40db4a2b3e 168 } bit;
jbradshaw 0:0e40db4a2b3e 169 } max14720_LDOVSet;
jbradshaw 0:0e40db4a2b3e 170
jbradshaw 0:0e40db4a2b3e 171 /// @brief LDOCfg Register (0x0B)
jbradshaw 0:0e40db4a2b3e 172 typedef union LDOCfg_ {
jbradshaw 0:0e40db4a2b3e 173 char all;
jbradshaw 0:0e40db4a2b3e 174 struct {
jbradshaw 0:0e40db4a2b3e 175 char LDOMode : 1;
jbradshaw 0:0e40db4a2b3e 176 char LDOEn : 2;
jbradshaw 0:0e40db4a2b3e 177 char LDO_ActDSC : 1;
jbradshaw 0:0e40db4a2b3e 178 char LDO_PasDSC : 1;
jbradshaw 0:0e40db4a2b3e 179 char LDOSeq : 3;
jbradshaw 0:0e40db4a2b3e 180 } bit;
jbradshaw 0:0e40db4a2b3e 181 } max14720_LDOCfg;
jbradshaw 0:0e40db4a2b3e 182
jbradshaw 0:0e40db4a2b3e 183 /// @brief SwitchCfg Register (0x0C)
jbradshaw 0:0e40db4a2b3e 184 typedef union SwitchCfg_ {
jbradshaw 0:0e40db4a2b3e 185 char all;
jbradshaw 0:0e40db4a2b3e 186 struct {
jbradshaw 0:0e40db4a2b3e 187 char SWSoftStart : 1;
jbradshaw 0:0e40db4a2b3e 188 char SWEn : 2;
jbradshaw 0:0e40db4a2b3e 189 char reserved : 2;
jbradshaw 0:0e40db4a2b3e 190 char SWSeq : 3;
jbradshaw 0:0e40db4a2b3e 191 } bit;
jbradshaw 0:0e40db4a2b3e 192 } max14720_SwitchCfg;
jbradshaw 0:0e40db4a2b3e 193
jbradshaw 0:0e40db4a2b3e 194 /// @brief BatTime Register (0x0D)
jbradshaw 0:0e40db4a2b3e 195 typedef union BatTime_ {
jbradshaw 0:0e40db4a2b3e 196 char all;
jbradshaw 0:0e40db4a2b3e 197 struct {
jbradshaw 0:0e40db4a2b3e 198 char LCVTm : 2;
jbradshaw 0:0e40db4a2b3e 199 char OCVTm : 2;
jbradshaw 0:0e40db4a2b3e 200 char BCVTm : 2;
jbradshaw 0:0e40db4a2b3e 201 } bit;
jbradshaw 0:0e40db4a2b3e 202 } max14720_BatTime;
jbradshaw 0:0e40db4a2b3e 203
jbradshaw 0:0e40db4a2b3e 204 /// @brief BatCfg Register (0x0E)
jbradshaw 0:0e40db4a2b3e 205 typedef union BatCfg_ {
jbradshaw 0:0e40db4a2b3e 206 char all;
jbradshaw 0:0e40db4a2b3e 207 struct {
jbradshaw 0:0e40db4a2b3e 208 char BatImpCur : 3;
jbradshaw 0:0e40db4a2b3e 209 char LcvDly2Skip : 1;
jbradshaw 0:0e40db4a2b3e 210 char reserved : 2;
jbradshaw 0:0e40db4a2b3e 211 char BIMAbort : 1;
jbradshaw 0:0e40db4a2b3e 212 char BIA : 1;
jbradshaw 0:0e40db4a2b3e 213 } bit;
jbradshaw 0:0e40db4a2b3e 214 } max14720_BatCfg;
jbradshaw 0:0e40db4a2b3e 215
jbradshaw 0:0e40db4a2b3e 216 /// @brief BatV Register (0x0F)
jbradshaw 0:0e40db4a2b3e 217 typedef union BatBCV_ {
jbradshaw 0:0e40db4a2b3e 218 char all;
jbradshaw 0:0e40db4a2b3e 219 } max14720_BatBCV;
jbradshaw 0:0e40db4a2b3e 220
jbradshaw 0:0e40db4a2b3e 221 /// @brief BatOCV Register (0x10)
jbradshaw 0:0e40db4a2b3e 222 typedef union BatOCV_ {
jbradshaw 0:0e40db4a2b3e 223 char all;
jbradshaw 0:0e40db4a2b3e 224 } max14720_BatOCV;
jbradshaw 0:0e40db4a2b3e 225
jbradshaw 0:0e40db4a2b3e 226 /// @brief BatLCV Register (0x11)
jbradshaw 0:0e40db4a2b3e 227 typedef union BatLCV_ {
jbradshaw 0:0e40db4a2b3e 228 char all;
jbradshaw 0:0e40db4a2b3e 229 } max14720_BatLCV;
jbradshaw 0:0e40db4a2b3e 230
jbradshaw 0:0e40db4a2b3e 231 /// @brief MONCfg Register (0x19)
jbradshaw 0:0e40db4a2b3e 232 typedef union MONCfg_ {
jbradshaw 0:0e40db4a2b3e 233 char all;
jbradshaw 0:0e40db4a2b3e 234 struct {
jbradshaw 0:0e40db4a2b3e 235 char MONCtr : 3;
jbradshaw 0:0e40db4a2b3e 236 char MONHiZ : 1;
jbradshaw 0:0e40db4a2b3e 237 char reserved : 3;
jbradshaw 0:0e40db4a2b3e 238 char MONEn : 1;
jbradshaw 0:0e40db4a2b3e 239 } bit;
jbradshaw 0:0e40db4a2b3e 240 } max14720_MONCfg;
jbradshaw 0:0e40db4a2b3e 241
jbradshaw 0:0e40db4a2b3e 242 /// @brief BootCfg Register (0x1A)
jbradshaw 0:0e40db4a2b3e 243 typedef union BootCfg_ {
jbradshaw 0:0e40db4a2b3e 244 char all;
jbradshaw 0:0e40db4a2b3e 245 struct {
jbradshaw 0:0e40db4a2b3e 246 char BootDly : 2;
jbradshaw 0:0e40db4a2b3e 247 char PFNPUDCfg : 1;
jbradshaw 0:0e40db4a2b3e 248 char SftRstCfg : 1;
jbradshaw 0:0e40db4a2b3e 249 char PwrRstCfg : 4;
jbradshaw 0:0e40db4a2b3e 250 } bit;
jbradshaw 0:0e40db4a2b3e 251 } max14720_BootCfg;
jbradshaw 0:0e40db4a2b3e 252
jbradshaw 0:0e40db4a2b3e 253 /// @brief PinStat Register (0x1B)
jbradshaw 0:0e40db4a2b3e 254 typedef union PinStat_ {
jbradshaw 0:0e40db4a2b3e 255 char all;
jbradshaw 0:0e40db4a2b3e 256 struct {
jbradshaw 0:0e40db4a2b3e 257 char RST_LEN : 1;
jbradshaw 0:0e40db4a2b3e 258 char MPC_BEN : 1;
jbradshaw 0:0e40db4a2b3e 259 char KOUT_HVEN : 1;
jbradshaw 0:0e40db4a2b3e 260 char KIN_SWEN : 1;
jbradshaw 0:0e40db4a2b3e 261 } bit;
jbradshaw 0:0e40db4a2b3e 262 } max14720_PinStat;
jbradshaw 0:0e40db4a2b3e 263
jbradshaw 0:0e40db4a2b3e 264 /// @brief BBBExtra Register (0x1C)
jbradshaw 0:0e40db4a2b3e 265 typedef union BBBExtra_ {
jbradshaw 0:0e40db4a2b3e 266 char all;
jbradshaw 0:0e40db4a2b3e 267 struct {
jbradshaw 0:0e40db4a2b3e 268 char BuckFScl : 1;
jbradshaw 0:0e40db4a2b3e 269 char BuckActDsc : 1;
jbradshaw 0:0e40db4a2b3e 270 char BuckPasDsc : 1;
jbradshaw 0:0e40db4a2b3e 271 char reserved : 2;
jbradshaw 0:0e40db4a2b3e 272 char Boost_ActDsc : 1;
jbradshaw 0:0e40db4a2b3e 273 char BoostPasDsc : 1;
jbradshaw 0:0e40db4a2b3e 274 char Boost_HysOff : 1;
jbradshaw 0:0e40db4a2b3e 275 } bit;
jbradshaw 0:0e40db4a2b3e 276 } max14720_BBBExtra;
jbradshaw 0:0e40db4a2b3e 277
jbradshaw 0:0e40db4a2b3e 278 /// @brief HandShk Register (0x1D)
jbradshaw 0:0e40db4a2b3e 279 typedef union HandShk_ {
jbradshaw 0:0e40db4a2b3e 280 char all;
jbradshaw 0:0e40db4a2b3e 281 struct {
jbradshaw 0:0e40db4a2b3e 282 char StayOn : 1;
jbradshaw 0:0e40db4a2b3e 283 char reserved : 5;
jbradshaw 0:0e40db4a2b3e 284 char GlbPasDsc : 1;
jbradshaw 0:0e40db4a2b3e 285 char StartOff : 1;
jbradshaw 0:0e40db4a2b3e 286 } bit;
jbradshaw 0:0e40db4a2b3e 287 } max14720_HandShk;
jbradshaw 0:0e40db4a2b3e 288
jbradshaw 0:0e40db4a2b3e 289 /// @brief UVLOCfg Register (0x1E)
jbradshaw 0:0e40db4a2b3e 290 typedef union UVLOCfg_ {
jbradshaw 0:0e40db4a2b3e 291 char all;
jbradshaw 0:0e40db4a2b3e 292 struct {
jbradshaw 0:0e40db4a2b3e 293 char LDO_UVLOsel : 1;
jbradshaw 0:0e40db4a2b3e 294 char BBBUVLOsel : 1;
jbradshaw 0:0e40db4a2b3e 295 } bit;
jbradshaw 0:0e40db4a2b3e 296 } max14720_UVLOCfg;
jbradshaw 0:0e40db4a2b3e 297
jbradshaw 0:0e40db4a2b3e 298 /// @brief PWRCFG Register (0x1F)
jbradshaw 0:0e40db4a2b3e 299 typedef union PWROFF_ {
jbradshaw 0:0e40db4a2b3e 300 char all;
jbradshaw 0:0e40db4a2b3e 301 } max14720_PWROFF;
jbradshaw 0:0e40db4a2b3e 302
jbradshaw 0:0e40db4a2b3e 303 /// All of the possible BoostVSet values
jbradshaw 0:0e40db4a2b3e 304 typedef enum {
jbradshaw 0:0e40db4a2b3e 305 BoostVSet_25,
jbradshaw 0:0e40db4a2b3e 306 BoostVSet_26,
jbradshaw 0:0e40db4a2b3e 307 BoostVSet_27,
jbradshaw 0:0e40db4a2b3e 308 BoostVSet_28,
jbradshaw 0:0e40db4a2b3e 309 BoostVSet_29,
jbradshaw 0:0e40db4a2b3e 310 BoostVSet_30,
jbradshaw 0:0e40db4a2b3e 311 BoostVSet_31,
jbradshaw 0:0e40db4a2b3e 312 BoostVSet_32,
jbradshaw 0:0e40db4a2b3e 313 BoostVSet_33,
jbradshaw 0:0e40db4a2b3e 314 BoostVSet_34,
jbradshaw 0:0e40db4a2b3e 315 BoostVSet_35,
jbradshaw 0:0e40db4a2b3e 316 BoostVSet_36,
jbradshaw 0:0e40db4a2b3e 317 BoostVSet_37,
jbradshaw 0:0e40db4a2b3e 318 BoostVSet_38,
jbradshaw 0:0e40db4a2b3e 319 BoostVSet_39,
jbradshaw 0:0e40db4a2b3e 320 BoostVSet_40,
jbradshaw 0:0e40db4a2b3e 321 BoostVSet_41,
jbradshaw 0:0e40db4a2b3e 322 BoostVSet_42,
jbradshaw 0:0e40db4a2b3e 323 BoostVSet_43,
jbradshaw 0:0e40db4a2b3e 324 BoostVSet_44,
jbradshaw 0:0e40db4a2b3e 325 BoostVSet_45,
jbradshaw 0:0e40db4a2b3e 326 BoostVSet_46,
jbradshaw 0:0e40db4a2b3e 327 BoostVSet_47,
jbradshaw 0:0e40db4a2b3e 328 BoostVSet_48,
jbradshaw 0:0e40db4a2b3e 329 BoostVSet_49,
jbradshaw 0:0e40db4a2b3e 330 BoostVSet_50,
jbradshaw 0:0e40db4a2b3e 331 } BoostVSet_Values;
jbradshaw 0:0e40db4a2b3e 332
jbradshaw 0:0e40db4a2b3e 333 typedef enum {
jbradshaw 0:0e40db4a2b3e 334 BoostEn_Disable,
jbradshaw 0:0e40db4a2b3e 335 BoostEn_Enable,
jbradshaw 0:0e40db4a2b3e 336 BoostEn_Enable_MPC_High,
jbradshaw 0:0e40db4a2b3e 337 } BoostEn_Values;
jbradshaw 0:0e40db4a2b3e 338
jbradshaw 0:0e40db4a2b3e 339 typedef enum {
jbradshaw 0:0e40db4a2b3e 340 BoostISet_0,
jbradshaw 0:0e40db4a2b3e 341 BoostISet_50mA,
jbradshaw 0:0e40db4a2b3e 342 BoostISet_100mA,
jbradshaw 0:0e40db4a2b3e 343 BoostISet_150mA,
jbradshaw 0:0e40db4a2b3e 344 BoostISet_200mA,
jbradshaw 0:0e40db4a2b3e 345 BoostISet_250mA,
jbradshaw 0:0e40db4a2b3e 346 BoostISet_300mA,
jbradshaw 0:0e40db4a2b3e 347 BoostISet_350mA,
jbradshaw 0:0e40db4a2b3e 348 } BoostISet_Values;
jbradshaw 0:0e40db4a2b3e 349
jbradshaw 0:0e40db4a2b3e 350 typedef enum {
jbradshaw 0:0e40db4a2b3e 351 BoostSeq_Disabled,
jbradshaw 0:0e40db4a2b3e 352 BoostSeq_Reserved,
jbradshaw 0:0e40db4a2b3e 353 BoostSeq_Enabled_0,
jbradshaw 0:0e40db4a2b3e 354 BoostSeq_Enabled_25,
jbradshaw 0:0e40db4a2b3e 355 BoostSeq_Enabled_50,
jbradshaw 0:0e40db4a2b3e 356 BoostSeq_Reserved2,
jbradshaw 0:0e40db4a2b3e 357 BoostSeq_Controlled_HVEN,
jbradshaw 0:0e40db4a2b3e 358 BoostSeq_Controlled_BoostEn,
jbradshaw 0:0e40db4a2b3e 359 } BoostSeq_Values;
jbradshaw 0:0e40db4a2b3e 360
jbradshaw 0:0e40db4a2b3e 361 typedef enum {
jbradshaw 0:0e40db4a2b3e 362 BoostEMI_Active,
jbradshaw 0:0e40db4a2b3e 363 BoostEMI_Disabled,
jbradshaw 0:0e40db4a2b3e 364 } BoostEMI_Values;
jbradshaw 0:0e40db4a2b3e 365
jbradshaw 0:0e40db4a2b3e 366 typedef enum {
jbradshaw 0:0e40db4a2b3e 367 BoostInd_3_3,
jbradshaw 0:0e40db4a2b3e 368 BoostInd_4_7,
jbradshaw 0:0e40db4a2b3e 369 } BoostInd_Values;
jbradshaw 0:0e40db4a2b3e 370
jbradshaw 0:0e40db4a2b3e 371 /**
jbradshaw 0:0e40db4a2b3e 372 * MAX14720 constructor.
jbradshaw 0:0e40db4a2b3e 373 *
jbradshaw 0:0e40db4a2b3e 374 * @param sda mbed pin to use for SDA line of I2C interface.
jbradshaw 0:0e40db4a2b3e 375 * @param scl mbed pin to use for SCL line of I2C interface.
jbradshaw 0:0e40db4a2b3e 376 * @param slaveAddress Slave Address of the device.
jbradshaw 0:0e40db4a2b3e 377 */
jbradshaw 0:0e40db4a2b3e 378 MAX14720(PinName sda, PinName scl, int slaveAddress);
jbradshaw 0:0e40db4a2b3e 379
jbradshaw 0:0e40db4a2b3e 380 /**
jbradshaw 0:0e40db4a2b3e 381 * MAX14720 constructor.
jbradshaw 0:0e40db4a2b3e 382 *
jbradshaw 0:0e40db4a2b3e 383 * @param i2c I2C object to use.
jbradshaw 0:0e40db4a2b3e 384 * @param slaveAddress Slave Address of the device.
jbradshaw 0:0e40db4a2b3e 385 */
jbradshaw 0:0e40db4a2b3e 386 MAX14720(I2C *i2c, int slaveAddress);
jbradshaw 0:0e40db4a2b3e 387
jbradshaw 0:0e40db4a2b3e 388 /**
jbradshaw 0:0e40db4a2b3e 389 * MAX14720 destructor.
jbradshaw 0:0e40db4a2b3e 390 */
jbradshaw 0:0e40db4a2b3e 391 ~MAX14720();
jbradshaw 0:0e40db4a2b3e 392
jbradshaw 0:0e40db4a2b3e 393 /**
jbradshaw 0:0e40db4a2b3e 394 * Enable or disable Boost
jbradshaw 0:0e40db4a2b3e 395 */
jbradshaw 0:0e40db4a2b3e 396 int boostEn(BoostEn_Values value);
jbradshaw 0:0e40db4a2b3e 397 /**
jbradshaw 0:0e40db4a2b3e 398 * Set the Boost Output Voltage from 2.5V to 5V with 100mV increments
jbradshaw 0:0e40db4a2b3e 399 */
jbradshaw 0:0e40db4a2b3e 400 int boostVSet(BoostVSet_Values value);
jbradshaw 0:0e40db4a2b3e 401 /**
jbradshaw 0:0e40db4a2b3e 402 * Read the Boost Output Voltage
jbradshaw 0:0e40db4a2b3e 403 */
jbradshaw 0:0e40db4a2b3e 404 int readBoostVSet(BoostVSet_Values *value);
jbradshaw 0:0e40db4a2b3e 405 /**
jbradshaw 0:0e40db4a2b3e 406 * Set the Buck-Boost Peak Current-Limit
jbradshaw 0:0e40db4a2b3e 407 */
jbradshaw 0:0e40db4a2b3e 408 int boostISet(BoostISet_Values value);
jbradshaw 0:0e40db4a2b3e 409 /**
jbradshaw 0:0e40db4a2b3e 410 * Read the Buck-Boost Peak Current-Limit
jbradshaw 0:0e40db4a2b3e 411 */
jbradshaw 0:0e40db4a2b3e 412 int readBoostISet(BoostISet_Values *value);
jbradshaw 0:0e40db4a2b3e 413
jbradshaw 0:0e40db4a2b3e 414 /**
jbradshaw 0:0e40db4a2b3e 415 * Write a device register
jbradshaw 0:0e40db4a2b3e 416 */
jbradshaw 0:0e40db4a2b3e 417 int writeReg(MAX14720_REG_map_t reg, char value);
jbradshaw 0:0e40db4a2b3e 418 /**
jbradshaw 0:0e40db4a2b3e 419 * Read a device register
jbradshaw 0:0e40db4a2b3e 420 */
jbradshaw 0:0e40db4a2b3e 421 int readReg(MAX14720_REG_map_t reg, char *value);
jbradshaw 0:0e40db4a2b3e 422 private:
jbradshaw 0:0e40db4a2b3e 423 /// I2C pointer
jbradshaw 0:0e40db4a2b3e 424 I2C *i2c;
jbradshaw 0:0e40db4a2b3e 425 /// Is this object the owner of the I2C object
jbradshaw 0:0e40db4a2b3e 426 bool isOwner;
jbradshaw 0:0e40db4a2b3e 427 /// Device slave address
jbradshaw 0:0e40db4a2b3e 428 int slaveAddress;
jbradshaw 0:0e40db4a2b3e 429
jbradshaw 0:0e40db4a2b3e 430 };
jbradshaw 0:0e40db4a2b3e 431
jbradshaw 0:0e40db4a2b3e 432 #endif /* PMIC_H_ */