Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of MAX14690 by
Revision 8:2c3f2da51c5d, committed 2016-10-19
- Comitter:
- jessexm
- Date:
- Wed Oct 19 22:32:56 2016 +0000
- Parent:
- 7:2e9f6e70b34f
- Child:
- 9:8fb54367ceb5
- Commit message:
- Code review updates
Changed in this revision
| MAX14720.cpp | Show annotated file Show diff for this revision Revisions of this file |
| MAX14720.h | Show annotated file Show diff for this revision Revisions of this file |
--- a/MAX14720.cpp Thu Oct 06 21:33:25 2016 +0000
+++ b/MAX14720.cpp Wed Oct 19 22:32:56 2016 +0000
@@ -89,6 +89,7 @@
buckActDsc = false;
buckFScl = false;
}
+
//******************************************************************************
MAX14720::~MAX14720()
{
@@ -100,116 +101,127 @@
//******************************************************************************
int MAX14720::boostSetMode(boostEn_t mode)
{
- int result;
char data;
+
boostEn = mode;
data = (boostEn << 3) | (boostEMI << 1) | (boostInd);
- result = writeReg(REG_BOOST_CFG, data);
- if (result == MAX14720_ERROR) return result;
- return 0;
+ return writeReg(REG_BOOST_CFG, data);
}
//******************************************************************************
int MAX14720::boostSetVoltage(int mV)
{
- int result;
char data;
- if ((MAX14720_BOOST_MIN_MV <= mV)&&(mV <= MAX14720_BOOST_MAX_MV)) {
+
+ 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) {
- result = writeReg(REG_BOOST_CFG, 0x00);
- if (result == MAX14720_ERROR) return result;
+ if (writeReg(REG_BOOST_CFG, 0x00) != MAX14720_NO_ERROR) {
+ return MAX14720_ERROR;
+ }
}
- result = writeReg(REG_BOOST_VSET, data);
- if (result == MAX14720_ERROR) return result;
+
+ if (writeReg(REG_BOOST_VSET, data) != MAX14720_NO_ERROR) {
+ return MAX14720_ERROR;
+ }
+
if (boostEn == BOOST_ENABLED) {
data = (boostEn << 3) | (boostEMI << 1) | (boostInd);
- result = writeReg(REG_BOOST_CFG, data);
- if (result == MAX14720_ERROR) return result;
+ if (writeReg(REG_BOOST_CFG, data) != MAX14720_NO_ERROR) {
+ return MAX14720_ERROR;
+ }
}
- return 0;
+
+ return MAX14720_NO_ERROR;
}
//******************************************************************************
int MAX14720::init()
{
- int result;
char data;
+
data = (clkDivEn << 7) | (clkDivSet);
- result = writeReg(REG_BOOST_CDIV, data);
- if (result == MAX14720_ERROR) return result;
+ if (writeReg(REG_BOOST_CDIV, data) != MAX14720_NO_ERROR) {
+ return MAX14720_ERROR;
+ }
+
data = (boostISet);
- result = writeReg(REG_BOOST_ISET, data);
- if (result == MAX14720_ERROR) return result;
- if ((MAX14720_BOOST_MIN_MV <= boostMillivolts)&&(boostMillivolts <= MAX14720_BOOST_MAX_MV)) {
+ 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;
}
- result = writeReg(REG_BOOST_VSET, data);
- if (result == MAX14720_ERROR) return result;
+
data = (buckMd << 1) | (buckFst);
- result = writeReg(REG_BUCK_CFG, data);
- if (result == MAX14720_ERROR) return result;
- data = (boostHysOff << 7) | (boostPasDsc << 6) | (boostActDsc << 5) | (buckPasDsc << 2) | (buckActDsc << 1) | (buckFScl);
- result = writeReg(REG_BBB_EXTRA, data);
- if (result == MAX14720_ERROR) return result;
+ 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);
- result = writeReg(REG_BOOST_CFG, data);
- if (result == MAX14720_ERROR) return result;
- return 0;
+ if (writeReg(REG_BOOST_CFG, data) != MAX14720_NO_ERROR) {
+ return MAX14720_ERROR;
+ }
+
+ return MAX14720_NO_ERROR;
}
//******************************************************************************
int MAX14720::monSet(monCfg_t monCfg)
{
- int result;
- result = writeReg(REG_MON_CFG, monCfg);
- if (result == MAX14720_ERROR) return result;
- return 0;
+ return writeReg(REG_MON_CFG, monCfg);
}
//******************************************************************************
int MAX14720::shutdown()
{
- int result;
- result = writeReg(REG_PWR_OFF, 0xB2);
- if (result == MAX14720_ERROR) return result;
- return 0;
+ return writeReg(REG_PWR_OFF, 0xB2);
}
//******************************************************************************
int MAX14720::writeReg(registers_t reg, char value)
{
- int result;
char cmdData[2] = { (char)reg, value };
- result = i2c->write(slaveAddress, cmdData, 2);
- if (result != 0) return MAX14720_ERROR;
+
+ if (i2c->write(slaveAddress, cmdData, sizeof(cmdData)) != 0) {
+ return MAX14720_ERROR;
+ }
+
return MAX14720_NO_ERROR;
}
//******************************************************************************
int MAX14720::readReg(registers_t reg, char *value)
{
- int result;
char cmdData[1] = { (char)reg };
- result = i2c->write(slaveAddress, cmdData, 1);
- if (result != 0) return MAX14720_ERROR;
- result = i2c->read(slaveAddress, value, 1);
- if (result != 0) return MAX14720_ERROR;
+ 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 Thu Oct 06 21:33:25 2016 +0000
+++ b/MAX14720.h Wed Oct 19 22:32:56 2016 +0000
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (C) 2015 Maxim Integrated Products, Inc., All Rights Reserved.
+ * 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"),
@@ -44,7 +44,13 @@
#define MAX14720_BOOST_STEP_MV 100
/**
- * MAX14720 PMIC Driver
+ * @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"
@@ -54,9 +60,9 @@
* I2C i2c2(I2C2_SDA, I2C2_SCL);
*
* #define I2C_ADDR_PMIC (0x54)
- * MAX14720 max14720(&i2c2,I2C_ADDR_PMIC);
+ * MAX14720 max14720(&i2c2, I2C_ADDR_PMIC);
*
- * DigitalOut led(LED1);
+ * DigitalOut led(LED1, 0);
* InterruptIn button(SW1);
*
* void turnOff()
@@ -66,13 +72,15 @@
*
* int main()
* {
- * int result;
* button.fall(&turnOff);
- * led = 0;
+ *
* max14720.boostEn = MAX14720::BOOST_ENABLED;
- * result = max14720.init();
- * if (result == MAX14720_ERROR) printf("Error initializing MAX14720");
+ * if (max14720.init() == MAX14720_ERROR) {
+ * printf("Error initializing MAX14720");
+ * }
+ *
* wait(1);
+ *
* while(1) {
* max14720.boostSetMode(MAX14720::BOOST_DISABLED);
* max14720.boostEn = MAX14720::BOOST_ENABLED;
@@ -87,7 +95,6 @@
*/
class MAX14720
{
-
public:
/**
@@ -96,28 +103,28 @@
*/
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_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_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_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_UVLO_CFG = 0x1E, ///< Under-Voltage Lock Out
REG_PWR_OFF = 0x1F, ///< Power Off Command
} registers_t;
@@ -177,15 +184,15 @@
*/
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
+ 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;
/**
@@ -343,7 +350,6 @@
bool isOwner;
/// Device slave address
int slaveAddress;
-
};
#endif /* _MAX14720_H_ */
