This is a sample library for the MAX77650 incorporated with the MAX32620FTHR development board.

Dependents:   Low_Power_Long_Distance_IR_Vision_Robot Low_Power_Long_Distance_IR_Vision_Robot

Fork of max77650_charger_sample by Maxim Integrated

Committer:
fneirab
Date:
Tue Aug 14 16:57:16 2018 +0000
Revision:
1:324b6205cdd8
Parent:
0:0bb9daf44568
changes to made public with Charger functions with LED indicator

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fneirab 0:0bb9daf44568 1 /*******************************************************************************
fneirab 0:0bb9daf44568 2 * Copyright (C) 2018 Maxim Integrated Products, Inc., All Rights Reserved.
fneirab 0:0bb9daf44568 3 *
fneirab 0:0bb9daf44568 4 * Permission is hereby granted, free of charge, to any person obtaining a
fneirab 0:0bb9daf44568 5 * copy of this software and associated documentation files (the "Software"),
fneirab 0:0bb9daf44568 6 * to deal in the Software without restriction, including without limitation
fneirab 0:0bb9daf44568 7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
fneirab 0:0bb9daf44568 8 * and/or sell copies of the Software, and to permit persons to whom the
fneirab 0:0bb9daf44568 9 * Software is furnished to do so, subject to the following conditions:
fneirab 0:0bb9daf44568 10 *
fneirab 0:0bb9daf44568 11 * The above copyright notice and this permission notice shall be included
fneirab 0:0bb9daf44568 12 * in all copies or substantial portions of the Software.
fneirab 0:0bb9daf44568 13 *
fneirab 0:0bb9daf44568 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
fneirab 0:0bb9daf44568 15 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
fneirab 0:0bb9daf44568 16 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
fneirab 0:0bb9daf44568 17 * IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES
fneirab 0:0bb9daf44568 18 * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
fneirab 0:0bb9daf44568 19 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
fneirab 0:0bb9daf44568 20 * OTHER DEALINGS IN THE SOFTWARE.
fneirab 0:0bb9daf44568 21 *
fneirab 0:0bb9daf44568 22 * Except as contained in this notice, the name of Maxim Integrated
fneirab 0:0bb9daf44568 23 * Products, Inc. shall not be used except as stated in the Maxim Integrated
fneirab 0:0bb9daf44568 24 * Products, Inc. Branding Policy.
fneirab 0:0bb9daf44568 25 *
fneirab 0:0bb9daf44568 26 * The mere transfer of this software does not imply any licenses
fneirab 0:0bb9daf44568 27 * of trade secrets, proprietary technology, copyrights, patents,
fneirab 0:0bb9daf44568 28 * trademarks, maskwork rights, or any other form of intellectual
fneirab 0:0bb9daf44568 29 * property whatsoever. Maxim Integrated Products, Inc. retains all
fneirab 0:0bb9daf44568 30 * ownership rights.
fneirab 0:0bb9daf44568 31 *******************************************************************************
fneirab 0:0bb9daf44568 32 */
fneirab 0:0bb9daf44568 33
fneirab 0:0bb9daf44568 34 #ifndef __MAX77650_H_
fneirab 0:0bb9daf44568 35 #define __MAX77650_H_
fneirab 0:0bb9daf44568 36
fneirab 0:0bb9daf44568 37 // Include
fneirab 0:0bb9daf44568 38 #include "mbed.h"
fneirab 0:0bb9daf44568 39
fneirab 0:0bb9daf44568 40
fneirab 0:0bb9daf44568 41
fneirab 0:0bb9daf44568 42 /**
fneirab 0:0bb9daf44568 43 * @brief Library for the MAX77650
fneirab 0:0bb9daf44568 44 * The MAX77650/MAX77651 provide highly-integrated battery charging and
fneirab 0:0bb9daf44568 45 * power supply solutions for low-power wearable applications where size and
fneirab 0:0bb9daf44568 46 * efficiency are critical. Both devices feature a SIMO buck-boost regulator
fneirab 0:0bb9daf44568 47 * that provides three independently programmable power rails from a single
fneirab 0:0bb9daf44568 48 * inductor to minimize total solution size. A 150mA LDO provides ripple
fneirab 0:0bb9daf44568 49 * rejection for audio and other noise-sensitive applications. A highly
fneirab 0:0bb9daf44568 50 * configurable linear charger supports a wide range of Li+ battery capacities
fneirab 0:0bb9daf44568 51 * and includes battery temperature monitoring for additional safety (JEITA).
fneirab 0:0bb9daf44568 52 *
fneirab 0:0bb9daf44568 53 * @code
fneirab 0:0bb9daf44568 54 * #include "mbed.h"
fneirab 0:0bb9daf44568 55 * #include "MAX77650"
fneirab 0:0bb9daf44568 56 *
fneirab 0:0bb9daf44568 57 *
fneirab 0:0bb9daf44568 58 * // Hardware serial port
fneirab 0:0bb9daf44568 59 * Serial serial(USBTX, USBRX);
fneirab 0:0bb9daf44568 60 *
fneirab 0:0bb9daf44568 61 * //SPI communications
fneirab 0:0bb9daf44568 62 * I2C i2c(SCL, SDA);
fneirab 0:0bb9daf44568 63 *
fneirab 0:0bb9daf44568 64 * //Fuel Gauge
fneirab 0:0bb9daf44568 65 * MAX77650 max77650(i2C, Sutff );//To be completed
fneirab 0:0bb9daf44568 66 *
fneirab 0:0bb9daf44568 67 *
fneirab 0:0bb9daf44568 68 * int main(void)
fneirab 0:0bb9daf44568 69 * {
fneirab 0:0bb9daf44568 70 * CODE CODE
fneirab 0:0bb9daf44568 71 * while(true)
fneirab 0:0bb9daf44568 72 * {
fneirab 0:0bb9daf44568 73 * CODE CODE
fneirab 0:0bb9daf44568 74 * }
fneirab 0:0bb9daf44568 75 * }
fneirab 0:0bb9daf44568 76 * @endcode
fneirab 0:0bb9daf44568 77 */
fneirab 0:0bb9daf44568 78
fneirab 0:0bb9daf44568 79 // Definitions
fneirab 1:324b6205cdd8 80
fneirab 0:0bb9daf44568 81 #define DEVICE_ID 0x00
fneirab 0:0bb9daf44568 82 #define NUM_INTERRUPTS 12
fneirab 0:0bb9daf44568 83
fneirab 0:0bb9daf44568 84
fneirab 0:0bb9daf44568 85
fneirab 0:0bb9daf44568 86 class MAX77650
fneirab 0:0bb9daf44568 87 {
fneirab 0:0bb9daf44568 88
fneirab 0:0bb9daf44568 89 public:
fneirab 1:324b6205cdd8 90
fneirab 1:324b6205cdd8 91 ///8-bit write address
fneirab 1:324b6205cdd8 92 static const int I2C_W_ADRS = 0x90;
fneirab 1:324b6205cdd8 93 ///8-bit read address
fneirab 1:324b6205cdd8 94 static const int I2C_R_ADRS = 0x91;
fneirab 1:324b6205cdd8 95
fneirab 0:0bb9daf44568 96 /**
fneirab 0:0bb9daf44568 97 * @brief Register Addresses
fneirab 0:0bb9daf44568 98 * @details Enumerated MAX77650 register addresses
fneirab 0:0bb9daf44568 99 *
fneirab 1:324b6205cdd8 100 */
fneirab 0:0bb9daf44568 101 enum registers_t {
fneirab 0:0bb9daf44568 102 INT_GLBL, ///< Global Interrupt
fneirab 0:0bb9daf44568 103 INT_CHG, ///< Charger Interrupt
fneirab 0:0bb9daf44568 104 STAT_CHG_A, ///< Status of charging station A
fneirab 0:0bb9daf44568 105 STAT_CHG_B, ///< Status of charging station B
fneirab 0:0bb9daf44568 106 ERCFLAG, ///< Flag Status
fneirab 0:0bb9daf44568 107 STAT_GLBL, ///< Status
fneirab 0:0bb9daf44568 108 INTM_GLBL, ///< Interrupt Mask
fneirab 0:0bb9daf44568 109 INT_M_CHG, ///< Interrupt Mask for Charger
fneirab 0:0bb9daf44568 110
fneirab 0:0bb9daf44568 111 CNFG_GLBL = 0x10, ///< Global Resources
fneirab 0:0bb9daf44568 112 CID, ///< Data Register
fneirab 0:0bb9daf44568 113 CNFG_GPIO, ///< GPIO Config Register
fneirab 0:0bb9daf44568 114 CNFG_CHG_A = 0x18, ///< Configuration Charging Station A
fneirab 0:0bb9daf44568 115 CNFG_CHG_B, ///< Configuration Charging Station B
fneirab 0:0bb9daf44568 116 CNFG_CHG_C, ///< Configuration Charging Station C
fneirab 0:0bb9daf44568 117 CNFG_CHG_D, ///< Configuration Charging Station D
fneirab 0:0bb9daf44568 118 CNFG_CHG_E, ///< Configuration Charging Station E
fneirab 0:0bb9daf44568 119 CNFG_CHG_F, ///< Configuration Charging Station F
fneirab 0:0bb9daf44568 120 CNFG_CHG_G, ///< Configuration Charging Station G
fneirab 0:0bb9daf44568 121 CNFG_CHG_H, ///< Configuration Charging Station H
fneirab 0:0bb9daf44568 122 CNFG_CHG_I, ///< Configuration Charging Station I
fneirab 0:0bb9daf44568 123
fneirab 0:0bb9daf44568 124 CNFG_SBB_TOP = 0x28, ///< Configuration SIMO Buck Boost Register Top
fneirab 0:0bb9daf44568 125 CNFG_SBB0_A, ///< Configuration SIMO Buck Boost Register A, CN0
fneirab 0:0bb9daf44568 126 CNFG_SBB0_B, ///< Configuration SIMO Buck Boost Register B, CN0
fneirab 0:0bb9daf44568 127 CNFG_SBB1_A, ///< Configuration SIMO Buck Boost Register A, CN1
fneirab 0:0bb9daf44568 128 CNFG_SBB1_B, ///< Configuration SIMO Buck Boost Register B, CN1
fneirab 0:0bb9daf44568 129 CNFG_SBB2_A, ///< Configuration SIMO Buck Boost Register A, CN2
fneirab 0:0bb9daf44568 130 CNFG_SBB2_B, ///< Configuration SIMO Buck Boost Register B, CN2
fneirab 0:0bb9daf44568 131
fneirab 0:0bb9daf44568 132 CNFG_LDO_A = 0x38, ///< LDO Configuration Register A
fneirab 0:0bb9daf44568 133 CNFG_LDO_B, ///< LDO Configuration Register B
fneirab 0:0bb9daf44568 134
fneirab 0:0bb9daf44568 135 CNFG_LED0_A = 0x40, ///< LED Configuration A for LED number 0
fneirab 0:0bb9daf44568 136 CNFG_LED1_A, ///< LED Configuration A for LED number 1
fneirab 0:0bb9daf44568 137 CNFG_LED2_A, ///< LED Configuration A for LED number 2
fneirab 0:0bb9daf44568 138
fneirab 0:0bb9daf44568 139 CNFG_LED0_B = 0x43, ///< LED Configuration B for LED number 0
fneirab 0:0bb9daf44568 140 CNFG_LED1_B, ///< LED Configuration B for LED number 1
fneirab 0:0bb9daf44568 141 CNFG_LED2_B, ///< LED Configuration B for LED number 2
fneirab 0:0bb9daf44568 142 CNFG_LED_TOP, ///< LED Configuration Master Control
fneirab 0:0bb9daf44568 143 };
fneirab 0:0bb9daf44568 144
fneirab 0:0bb9daf44568 145 /**
fneirab 0:0bb9daf44568 146 * @brief MAX77650 constructor.
fneirab 0:0bb9daf44568 147 * @details Default Constructor
fneirab 0:0bb9daf44568 148 *
fneirab 0:0bb9daf44568 149 */
fneirab 0:0bb9daf44568 150 MAX77650(I2C &i2c);
fneirab 0:0bb9daf44568 151
fneirab 0:0bb9daf44568 152 /**
fneirab 0:0bb9daf44568 153 * @brief MAX77650 Destructor
fneirab 0:0bb9daf44568 154 */
fneirab 0:0bb9daf44568 155 ~MAX77650();
fneirab 0:0bb9daf44568 156
fneirab 0:0bb9daf44568 157 /**
fneirab 0:0bb9daf44568 158 * @brief Write Register
fneirab 0:0bb9daf44568 159 * @details Writes data to MAX77650 Register
fneirab 0:0bb9daf44568 160 *
fneirab 0:0bb9daf44568 161 * @parameters reg_addr Registers to write
fneirab 0:0bb9daf44568 162 * reg_data Data to write
fneirab 0:0bb9daf44568 163 */
fneirab 0:0bb9daf44568 164 int writeReg(registers_t reg_addr, uint8_t reg_data);
fneirab 0:0bb9daf44568 165
fneirab 0:0bb9daf44568 166 /**
fneirab 0:0bb9daf44568 167 * @brief Read Register
fneirab 0:0bb9daf44568 168 * @details Reads data from MAX77650 register
fneirab 0:0bb9daf44568 169 *
fneirab 0:0bb9daf44568 170 * @parameters reg_addr Register to read
fneirab 0:0bb9daf44568 171 */
fneirab 0:0bb9daf44568 172 int readReg(registers_t reg_addr, uint8_t &value);
fneirab 0:0bb9daf44568 173
fneirab 0:0bb9daf44568 174
fneirab 0:0bb9daf44568 175 /**
fneirab 0:0bb9daf44568 176 * @brief init Charger Function
fneirab 0:0bb9daf44568 177 * @details Sets the parameters for the charger.
fneirab 0:0bb9daf44568 178 *
fneirab 0:0bb9daf44568 179 * @parameters reg_addr Register to read
fneirab 0:0bb9daf44568 180 */
fneirab 0:0bb9daf44568 181
fneirab 0:0bb9daf44568 182 int initCharger();
fneirab 0:0bb9daf44568 183
fneirab 0:0bb9daf44568 184 /**
fneirab 0:0bb9daf44568 185 * @brief Enable Charger Function
fneirab 0:0bb9daf44568 186 * @details Sets the parameters for the charger.
fneirab 0:0bb9daf44568 187 *
fneirab 0:0bb9daf44568 188 * @parameters reg_addr Register to read
fneirab 0:0bb9daf44568 189 */
fneirab 0:0bb9daf44568 190
fneirab 0:0bb9daf44568 191 int enCharger();
fneirab 0:0bb9daf44568 192
fneirab 0:0bb9daf44568 193 /**
fneirab 0:0bb9daf44568 194 * @brief Disable Charger Function
fneirab 0:0bb9daf44568 195 * @details Sets the parameters for the charger.
fneirab 0:0bb9daf44568 196 *
fneirab 0:0bb9daf44568 197 * @parameters reg_addr Register to read
fneirab 0:0bb9daf44568 198 */
fneirab 1:324b6205cdd8 199 int disblCharger();
fneirab 0:0bb9daf44568 200
fneirab 0:0bb9daf44568 201
fneirab 0:0bb9daf44568 202
fneirab 0:0bb9daf44568 203
fneirab 0:0bb9daf44568 204 private:
fneirab 0:0bb9daf44568 205 I2C &m_i2cBus;
fneirab 0:0bb9daf44568 206 int interrupt_pin_num;
fneirab 0:0bb9daf44568 207 };
fneirab 0:0bb9daf44568 208
fneirab 0:0bb9daf44568 209 #endif /* _MAX77650_H_ */