MAX14690 library

Fork of MAX14690 by Maxim Integrated

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

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jbradshaw 0:0e40db4a2b3e 1 /*******************************************************************************
jbradshaw 0:0e40db4a2b3e 2 * Copyright (C) 2016 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 #include "MAX14720.h"
jbradshaw 0:0e40db4a2b3e 35
jbradshaw 0:0e40db4a2b3e 36 //******************************************************************************
jbradshaw 0:0e40db4a2b3e 37 MAX14720::MAX14720(PinName sda, PinName scl, int slaveAddress) :
jbradshaw 0:0e40db4a2b3e 38 slaveAddress(slaveAddress)
jbradshaw 0:0e40db4a2b3e 39 {
jbradshaw 0:0e40db4a2b3e 40 i2c = new I2C(sda,scl);
jbradshaw 0:0e40db4a2b3e 41 isOwner = true;
jbradshaw 0:0e40db4a2b3e 42 }
jbradshaw 0:0e40db4a2b3e 43 //******************************************************************************
jbradshaw 0:0e40db4a2b3e 44 MAX14720::MAX14720(I2C *i2c, int slaveAddress) :
jbradshaw 0:0e40db4a2b3e 45 slaveAddress(slaveAddress)
jbradshaw 0:0e40db4a2b3e 46 {
jbradshaw 0:0e40db4a2b3e 47 this->i2c = i2c;
jbradshaw 0:0e40db4a2b3e 48 isOwner = false;
jbradshaw 0:0e40db4a2b3e 49 }
jbradshaw 0:0e40db4a2b3e 50 //******************************************************************************
jbradshaw 0:0e40db4a2b3e 51 MAX14720::~MAX14720()
jbradshaw 0:0e40db4a2b3e 52 {
jbradshaw 0:0e40db4a2b3e 53 if (isOwner == true) {
jbradshaw 0:0e40db4a2b3e 54 delete i2c;
jbradshaw 0:0e40db4a2b3e 55 }
jbradshaw 0:0e40db4a2b3e 56 }
jbradshaw 0:0e40db4a2b3e 57
jbradshaw 0:0e40db4a2b3e 58 //******************************************************************************
jbradshaw 0:0e40db4a2b3e 59 int MAX14720::boostEn(BoostEn_Values value) {
jbradshaw 0:0e40db4a2b3e 60 int result;
jbradshaw 0:0e40db4a2b3e 61 max14720_BoostCfg val;
jbradshaw 0:0e40db4a2b3e 62
jbradshaw 0:0e40db4a2b3e 63 // read modify write BoostEn to desired state
jbradshaw 0:0e40db4a2b3e 64 result = readReg(BOOST_CFG, &val.all);
jbradshaw 0:0e40db4a2b3e 65 val.bit.BoostEn = (char)value;
jbradshaw 0:0e40db4a2b3e 66 result = writeReg(BOOST_CFG, val.all);
jbradshaw 0:0e40db4a2b3e 67 if (result == MAX14720_ERROR) return result;
jbradshaw 0:0e40db4a2b3e 68 return 0;
jbradshaw 0:0e40db4a2b3e 69 }
jbradshaw 0:0e40db4a2b3e 70
jbradshaw 0:0e40db4a2b3e 71 //******************************************************************************
jbradshaw 0:0e40db4a2b3e 72 int MAX14720::boostVSet(BoostVSet_Values value) {
jbradshaw 0:0e40db4a2b3e 73 int result;
jbradshaw 0:0e40db4a2b3e 74 max14720_BoostVSet val;
jbradshaw 0:0e40db4a2b3e 75
jbradshaw 0:0e40db4a2b3e 76 // read modify write boostVSet to desired state
jbradshaw 0:0e40db4a2b3e 77 result = readReg(BOOST_V_SET, &val.all);
jbradshaw 0:0e40db4a2b3e 78 val.bit.BoostVSet = (char)value;
jbradshaw 0:0e40db4a2b3e 79 result = writeReg(BOOST_V_SET, val.all);
jbradshaw 0:0e40db4a2b3e 80 if (result == MAX14720_ERROR) return result;
jbradshaw 0:0e40db4a2b3e 81 return 0;
jbradshaw 0:0e40db4a2b3e 82 }
jbradshaw 0:0e40db4a2b3e 83
jbradshaw 0:0e40db4a2b3e 84 //******************************************************************************
jbradshaw 0:0e40db4a2b3e 85 int MAX14720::readBoostVSet(BoostVSet_Values *value) {
jbradshaw 0:0e40db4a2b3e 86 int result;
jbradshaw 0:0e40db4a2b3e 87 char val;
jbradshaw 0:0e40db4a2b3e 88
jbradshaw 0:0e40db4a2b3e 89 result = readReg(BOOST_V_SET,&val);
jbradshaw 0:0e40db4a2b3e 90 *value = (BoostVSet_Values)val;
jbradshaw 0:0e40db4a2b3e 91 return result;
jbradshaw 0:0e40db4a2b3e 92 }
jbradshaw 0:0e40db4a2b3e 93
jbradshaw 0:0e40db4a2b3e 94 //******************************************************************************
jbradshaw 0:0e40db4a2b3e 95 int MAX14720::readBoostISet(BoostISet_Values *value) {
jbradshaw 0:0e40db4a2b3e 96 int result;
jbradshaw 0:0e40db4a2b3e 97 char val;
jbradshaw 0:0e40db4a2b3e 98
jbradshaw 0:0e40db4a2b3e 99 result = readReg(BOOST_V_SET,&val);
jbradshaw 0:0e40db4a2b3e 100 *value = (BoostISet_Values)val;
jbradshaw 0:0e40db4a2b3e 101 return result;
jbradshaw 0:0e40db4a2b3e 102 }
jbradshaw 0:0e40db4a2b3e 103
jbradshaw 0:0e40db4a2b3e 104 //******************************************************************************
jbradshaw 0:0e40db4a2b3e 105 int MAX14720::boostISet(BoostISet_Values value) {
jbradshaw 0:0e40db4a2b3e 106 int result;
jbradshaw 0:0e40db4a2b3e 107 max14720_BoostISet val;
jbradshaw 0:0e40db4a2b3e 108
jbradshaw 0:0e40db4a2b3e 109 // read modify write boostVSet to desired state
jbradshaw 0:0e40db4a2b3e 110 result = readReg(BOOST_I_SET, &val.all);
jbradshaw 0:0e40db4a2b3e 111 val.bit.BoostISet = (char)value;
jbradshaw 0:0e40db4a2b3e 112 result = writeReg(BOOST_I_SET, val.all);
jbradshaw 0:0e40db4a2b3e 113 if (result == MAX14720_ERROR) return result;
jbradshaw 0:0e40db4a2b3e 114 return 0;
jbradshaw 0:0e40db4a2b3e 115 }
jbradshaw 0:0e40db4a2b3e 116
jbradshaw 0:0e40db4a2b3e 117 //******************************************************************************
jbradshaw 0:0e40db4a2b3e 118 int MAX14720::writeReg(MAX14720_REG_map_t reg, char value)
jbradshaw 0:0e40db4a2b3e 119 {
jbradshaw 0:0e40db4a2b3e 120 int result;
jbradshaw 0:0e40db4a2b3e 121 char cmdData[2] = { (char)reg, value };
jbradshaw 0:0e40db4a2b3e 122 result = i2c->write(slaveAddress, cmdData, 2);
jbradshaw 0:0e40db4a2b3e 123 if (result != 0) return MAX14720_ERROR;
jbradshaw 0:0e40db4a2b3e 124 return MAX14720_NO_ERROR;
jbradshaw 0:0e40db4a2b3e 125 }
jbradshaw 0:0e40db4a2b3e 126
jbradshaw 0:0e40db4a2b3e 127 //******************************************************************************
jbradshaw 0:0e40db4a2b3e 128 int MAX14720::readReg(MAX14720_REG_map_t reg, char *value)
jbradshaw 0:0e40db4a2b3e 129 {
jbradshaw 0:0e40db4a2b3e 130 int result;
jbradshaw 0:0e40db4a2b3e 131 char cmdData[1] = { (char)reg };
jbradshaw 0:0e40db4a2b3e 132
jbradshaw 0:0e40db4a2b3e 133 result = i2c->write(slaveAddress, cmdData, 1);
jbradshaw 0:0e40db4a2b3e 134 if (result != 0) return MAX14720_ERROR;
jbradshaw 0:0e40db4a2b3e 135 result = i2c->read(slaveAddress, value, 1);
jbradshaw 0:0e40db4a2b3e 136 if (result != 0) return MAX14720_ERROR;
jbradshaw 0:0e40db4a2b3e 137 return MAX14720_NO_ERROR;
jbradshaw 0:0e40db4a2b3e 138 }
jbradshaw 0:0e40db4a2b3e 139
jbradshaw 0:0e40db4a2b3e 140
jbradshaw 0:0e40db4a2b3e 141
jbradshaw 0:0e40db4a2b3e 142
jbradshaw 0:0e40db4a2b3e 143
jbradshaw 0:0e40db4a2b3e 144
jbradshaw 0:0e40db4a2b3e 145