MAX14690 Library
Dependents: MAX32630HSP3_IMU_HelloWorld MAX32630HSP3_IMU_HelloWorld max32630fthr max4146x_comp ... more
Fork of MAX14690 by
Diff: MAX14720.cpp
- Revision:
- 3:cdd88a3d3d24
- Parent:
- 0:0e40db4a2b3e
- Child:
- 7:2e9f6e70b34f
diff -r 5bcfe7e294b6 -r cdd88a3d3d24 MAX14720.cpp
--- a/MAX14720.cpp Wed Sep 28 19:52:29 2016 +0000
+++ b/MAX14720.cpp Tue Oct 04 22:26:50 2016 +0000
@@ -35,87 +35,157 @@
//******************************************************************************
MAX14720::MAX14720(PinName sda, PinName scl, int slaveAddress) :
- slaveAddress(slaveAddress)
+ slaveAddress(slaveAddress)
{
- i2c = new I2C(sda,scl);
- isOwner = true;
+ i2c = new I2C(sda,scl);
+ isOwner = true;
+ clkDivEn = false;
+ clkDivSet = 0;
+ boostISet = BOOST_ISET_100mA;
+ boostMillivolts = 3300;
+ boostEn = BOOST_DISABLED;
+ boostEMI = false;
+ boostInd = false;
+ boostHysOff = false;
+ boostPasDsc = false;
+ boostActDsc = false;
+ buckMd = BUCK_BURST;
+ buckFst = false;
+ buckISet = BUCK_ISET_300mA;
+ buckCfg = false;
+ buckInd = false;
+ buckHysOff = true;
+ buckMinOT = true;
+ buckInteg = true;
+ buckPasDsc = false;
+ buckActDsc = false;
+ buckFScl = false;
}
//******************************************************************************
MAX14720::MAX14720(I2C *i2c, int slaveAddress) :
- slaveAddress(slaveAddress)
+ slaveAddress(slaveAddress)
{
- this->i2c = i2c;
- isOwner = false;
+ this->i2c = i2c;
+ isOwner = false;
+ clkDivEn = false;
+ clkDivSet = 0;
+ boostISet = BOOST_ISET_100mA;
+ boostMillivolts = 3300;
+ boostEn = BOOST_DISABLED;
+ boostEMI = false;
+ boostInd = false;
+ boostHysOff = false;
+ boostPasDsc = false;
+ boostActDsc = false;
+ buckMd = BUCK_BURST;
+ buckFst = false;
+ buckISet = BUCK_ISET_300mA;
+ buckCfg = false;
+ buckInd = false;
+ buckHysOff = true;
+ buckMinOT = true;
+ buckInteg = true;
+ buckPasDsc = false;
+ buckActDsc = false;
+ buckFScl = false;
}
//******************************************************************************
MAX14720::~MAX14720()
{
- if (isOwner == true) {
- delete i2c;
- }
+ if (isOwner == true) {
+ delete i2c;
+ }
+}
+
+//******************************************************************************
+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;
}
//******************************************************************************
-int MAX14720::boostEn(BoostEn_Values value) {
+int MAX14720::boostSetVoltage(int mV)
+{
int result;
- max14720_BoostCfg val;
-
- // read modify write BoostEn to desired state
- result = readReg(BOOST_CFG, &val.all);
- val.bit.BoostEn = (char)value;
- result = writeReg(BOOST_CFG, val.all);
+ char data;
+ 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;
- return 0;
-}
-
-//******************************************************************************
-int MAX14720::boostVSet(BoostVSet_Values value) {
- int result;
- max14720_BoostVSet val;
-
- // read modify write boostVSet to desired state
- result = readReg(BOOST_V_SET, &val.all);
- val.bit.BoostVSet = (char)value;
- result = writeReg(BOOST_V_SET, val.all);
+ result = writeReg(REG_BOOST_VSET, data);
if (result == MAX14720_ERROR) return result;
- return 0;
+ if (boostEn == BOOST_ENABLED) {
+ data = (boostEn << 3) | (boostEMI << 1) | (boostInd);
+ result = writeReg(REG_BOOST_CFG, data);
+ }
+ if (result == MAX14720_ERROR) return result;
+ return 0;
}
//******************************************************************************
-int MAX14720::readBoostVSet(BoostVSet_Values *value) {
+int MAX14720::init()
+{
int result;
- char val;
-
- result = readReg(BOOST_V_SET,&val);
- *value = (BoostVSet_Values)val;
- return result;
+ char data;
+ data = (clkDivEn << 7) | (clkDivSet);
+ result = writeReg(REG_BOOST_CDIV, data);
+ if (result == MAX14720_ERROR) return result;
+ 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)) {
+ data = (boostMillivolts - MAX14720_BOOST_MIN_MV) / MAX14720_BOOST_STEP_MV;
+ } 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;
+ // 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;
}
//******************************************************************************
-int MAX14720::readBoostISet(BoostISet_Values *value) {
+int MAX14720::monSet(monCfg_t monCfg)
+{
int result;
- char val;
-
- result = readReg(BOOST_V_SET,&val);
- *value = (BoostISet_Values)val;
- return result;
+ result = writeReg(REG_MON_CFG, monCfg);
+ if (result == MAX14720_ERROR) return result;
+ return 0;
}
//******************************************************************************
-int MAX14720::boostISet(BoostISet_Values value) {
+int MAX14720::shutdown()
+{
int result;
- max14720_BoostISet val;
-
- // read modify write boostVSet to desired state
- result = readReg(BOOST_I_SET, &val.all);
- val.bit.BoostISet = (char)value;
- result = writeReg(BOOST_I_SET, val.all);
+ result = writeReg(REG_PWR_OFF, 0xB2);
if (result == MAX14720_ERROR) return result;
- return 0;
+ return 0;
}
+
//******************************************************************************
-int MAX14720::writeReg(MAX14720_REG_map_t reg, char value)
+int MAX14720::writeReg(registers_t reg, char value)
{
int result;
char cmdData[2] = { (char)reg, value };
@@ -125,11 +195,11 @@
}
//******************************************************************************
-int MAX14720::readReg(MAX14720_REG_map_t reg, char *value)
+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);
