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 max20303 by
MAX20303.h@0:ff4818eff240, 2018-01-19 (annotated)
- Committer:
- Ismail Kose
- Date:
- Fri Jan 19 15:47:44 2018 -0800
- Revision:
- 0:ff4818eff240
- Child:
- 1:d85b06dc60a3
Add initial max20303 pmic library
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Ismail Kose |
0:ff4818eff240 | 1 | /******************************************************************************* |
Ismail Kose |
0:ff4818eff240 | 2 | * Copyright (C) 2018 Maxim Integrated Products, Inc., All Rights Reserved. |
Ismail Kose |
0:ff4818eff240 | 3 | * |
Ismail Kose |
0:ff4818eff240 | 4 | * Permission is hereby granted, free of charge, to any person obtaining a |
Ismail Kose |
0:ff4818eff240 | 5 | * copy of this software and associated documentation files (the "Software"), |
Ismail Kose |
0:ff4818eff240 | 6 | * to deal in the Software without restriction, including without limitation |
Ismail Kose |
0:ff4818eff240 | 7 | * the rights to use, copy, modify, merge, publish, distribute, sublicense, |
Ismail Kose |
0:ff4818eff240 | 8 | * and/or sell copies of the Software, and to permit persons to whom the |
Ismail Kose |
0:ff4818eff240 | 9 | * Software is furnished to do so, subject to the following conditions: |
Ismail Kose |
0:ff4818eff240 | 10 | * |
Ismail Kose |
0:ff4818eff240 | 11 | * The above copyright notice and this permission notice shall be included |
Ismail Kose |
0:ff4818eff240 | 12 | * in all copies or substantial portions of the Software. |
Ismail Kose |
0:ff4818eff240 | 13 | * |
Ismail Kose |
0:ff4818eff240 | 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |
Ismail Kose |
0:ff4818eff240 | 15 | * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
Ismail Kose |
0:ff4818eff240 | 16 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. |
Ismail Kose |
0:ff4818eff240 | 17 | * IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES |
Ismail Kose |
0:ff4818eff240 | 18 | * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, |
Ismail Kose |
0:ff4818eff240 | 19 | * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR |
Ismail Kose |
0:ff4818eff240 | 20 | * OTHER DEALINGS IN THE SOFTWARE. |
Ismail Kose |
0:ff4818eff240 | 21 | * |
Ismail Kose |
0:ff4818eff240 | 22 | * Except as contained in this notice, the name of Maxim Integrated |
Ismail Kose |
0:ff4818eff240 | 23 | * Products, Inc. shall not be used except as stated in the Maxim Integrated |
Ismail Kose |
0:ff4818eff240 | 24 | * Products, Inc. Branding Policy. |
Ismail Kose |
0:ff4818eff240 | 25 | * |
Ismail Kose |
0:ff4818eff240 | 26 | * The mere transfer of this software does not imply any licenses |
Ismail Kose |
0:ff4818eff240 | 27 | * of trade secrets, proprietary technology, copyrights, patents, |
Ismail Kose |
0:ff4818eff240 | 28 | * trademarks, maskwork rights, or any other form of intellectual |
Ismail Kose |
0:ff4818eff240 | 29 | * property whatsoever. Maxim Integrated Products, Inc. retains all |
Ismail Kose |
0:ff4818eff240 | 30 | * ownership rights. |
Ismail Kose |
0:ff4818eff240 | 31 | ******************************************************************************* |
Ismail Kose |
0:ff4818eff240 | 32 | */ |
Ismail Kose |
0:ff4818eff240 | 33 | #ifndef __MAX20303_H_ |
Ismail Kose |
0:ff4818eff240 | 34 | #define __MAX20303_H_ |
Ismail Kose |
0:ff4818eff240 | 35 | |
Ismail Kose |
0:ff4818eff240 | 36 | #include "mbed.h" |
Ismail Kose |
0:ff4818eff240 | 37 | |
Ismail Kose |
0:ff4818eff240 | 38 | #define MAX20303_SLAVE_ADDR (0x50 >> 1) |
Ismail Kose |
0:ff4818eff240 | 39 | #define MAX20303_SLAVE_WR_ADDR ((MAX20303_SLAVE_ADDR << 1)) |
Ismail Kose |
0:ff4818eff240 | 40 | #define MAX20303_SLAVE_RD_ADDR ((MAX20303_SLAVE_ADDR << 1) | 1) |
Ismail Kose |
0:ff4818eff240 | 41 | |
Ismail Kose |
0:ff4818eff240 | 42 | |
Ismail Kose |
0:ff4818eff240 | 43 | #define MAX20303_NO_ERROR 0 |
Ismail Kose |
0:ff4818eff240 | 44 | #define MAX20303_ERROR -1 |
Ismail Kose |
0:ff4818eff240 | 45 | |
Ismail Kose |
0:ff4818eff240 | 46 | #define MAX20303_I2C_ADDR_FUEL_GAUGE 0x6c |
Ismail Kose |
0:ff4818eff240 | 47 | |
Ismail Kose |
0:ff4818eff240 | 48 | #define MAX20303_LDO_MIN_MV 800 |
Ismail Kose |
0:ff4818eff240 | 49 | #define MAX20303_LDO_MAX_MV 3600 |
Ismail Kose |
0:ff4818eff240 | 50 | #define MAX20303_LDO_STEP_MV 100 |
Ismail Kose |
0:ff4818eff240 | 51 | |
Ismail Kose |
0:ff4818eff240 | 52 | #define MAX20303_OFF_COMMAND 0xB2 |
Ismail Kose |
0:ff4818eff240 | 53 | |
Ismail Kose |
0:ff4818eff240 | 54 | class MAX20303 |
Ismail Kose |
0:ff4818eff240 | 55 | { |
Ismail Kose |
0:ff4818eff240 | 56 | |
Ismail Kose |
0:ff4818eff240 | 57 | public: |
Ismail Kose |
0:ff4818eff240 | 58 | /** |
Ismail Kose |
0:ff4818eff240 | 59 | * @brief Constructor using reference to I2C object |
Ismail Kose |
0:ff4818eff240 | 60 | * @param i2c - Reference to I2C object |
Ismail Kose |
0:ff4818eff240 | 61 | * @param slaveAddress - 7-bit I2C address |
Ismail Kose |
0:ff4818eff240 | 62 | */ |
Ismail Kose |
0:ff4818eff240 | 63 | MAX20303(I2C *i2c); |
Ismail Kose |
0:ff4818eff240 | 64 | |
Ismail Kose |
0:ff4818eff240 | 65 | /** @brief Destructor */ |
Ismail Kose |
0:ff4818eff240 | 66 | ~MAX20303(void); |
Ismail Kose |
0:ff4818eff240 | 67 | |
Ismail Kose |
0:ff4818eff240 | 68 | int led0on(void); |
Ismail Kose |
0:ff4818eff240 | 69 | int BoostEnable(void); |
Ismail Kose |
0:ff4818eff240 | 70 | int BuckBoostEnable(void); |
Ismail Kose |
0:ff4818eff240 | 71 | |
Ismail Kose |
0:ff4818eff240 | 72 | /** @brief Enable the 1.8V output rail **/ |
Ismail Kose |
0:ff4818eff240 | 73 | int LDO1Config(void); |
Ismail Kose |
0:ff4818eff240 | 74 | int mv2bits(int mV); |
Ismail Kose |
0:ff4818eff240 | 75 | |
Ismail Kose |
0:ff4818eff240 | 76 | private: |
Ismail Kose |
0:ff4818eff240 | 77 | /** |
Ismail Kose |
0:ff4818eff240 | 78 | * @brief Register Addresses |
Ismail Kose |
0:ff4818eff240 | 79 | * @details Enumerated MAX20303 register addresses |
Ismail Kose |
0:ff4818eff240 | 80 | */ |
Ismail Kose |
0:ff4818eff240 | 81 | enum registers_t { |
Ismail Kose |
0:ff4818eff240 | 82 | REG_HARDWARE_ID = 0x00, ///< HardwareID Register |
Ismail Kose |
0:ff4818eff240 | 83 | REG_FIRMWARE_REV = 0x01, ///< FirmwareID Register |
Ismail Kose |
0:ff4818eff240 | 84 | // = 0x02, ///< |
Ismail Kose |
0:ff4818eff240 | 85 | REG_INT0 = 0x03, ///< Int0 Register |
Ismail Kose |
0:ff4818eff240 | 86 | REG_INT1 = 0x04, ///< Int1 Register |
Ismail Kose |
0:ff4818eff240 | 87 | REG_INT2 = 0x05, ///< Int2 Register |
Ismail Kose |
0:ff4818eff240 | 88 | REG_STATUS0 = 0x06, ///< Status Register 0 |
Ismail Kose |
0:ff4818eff240 | 89 | REG_STATUS1 = 0x07, ///< Status Register 1 |
Ismail Kose |
0:ff4818eff240 | 90 | REG_STATUS2 = 0x08, ///< Status Register 2 |
Ismail Kose |
0:ff4818eff240 | 91 | REG_STATUS3 = 0x09, ///< Status Register 2 |
Ismail Kose |
0:ff4818eff240 | 92 | // = 0x0A, ///< |
Ismail Kose |
0:ff4818eff240 | 93 | REG_SYSTEM_ERROR = 0x0B, ///< SystemError Register |
Ismail Kose |
0:ff4818eff240 | 94 | REG_INT_MASK0 = 0x0C, ///< IntMask0 Register |
Ismail Kose |
0:ff4818eff240 | 95 | REG_INT_MASK1 = 0x0D, ///< IntMask1 Register |
Ismail Kose |
0:ff4818eff240 | 96 | REG_INT_MASK2 = 0x0E, ///< IntMask1 Register |
Ismail Kose |
0:ff4818eff240 | 97 | REG_AP_DATOUT0 = 0x0F, ///< APDataOut0 Register |
Ismail Kose |
0:ff4818eff240 | 98 | REG_AP_DATOUT1 = 0x10, ///< APDataOut1 Register |
Ismail Kose |
0:ff4818eff240 | 99 | REG_AP_DATOUT2 = 0x11, ///< APDataOut2 Register |
Ismail Kose |
0:ff4818eff240 | 100 | REG_AP_DATOUT3 = 0x12, ///< APDataOut3 Register |
Ismail Kose |
0:ff4818eff240 | 101 | REG_AP_DATOUT4 = 0x13, ///< APDataOut4 Register |
Ismail Kose |
0:ff4818eff240 | 102 | REG_AP_DATOUT5 = 0x14, ///< APDataOut5 Register |
Ismail Kose |
0:ff4818eff240 | 103 | REG_AP_DATOUT6 = 0x15, ///< APDataOut6 Register |
Ismail Kose |
0:ff4818eff240 | 104 | REG_AP_CMDOUT = 0x17, ///< APCmdOut Register |
Ismail Kose |
0:ff4818eff240 | 105 | REG_AP_RESPONSE = 0x18, ///< APResponse Register |
Ismail Kose |
0:ff4818eff240 | 106 | REG_AP_DATAIN0 = 0x19, |
Ismail Kose |
0:ff4818eff240 | 107 | REG_AP_DATAIN1 = 0x1A, |
Ismail Kose |
0:ff4818eff240 | 108 | REG_AP_DATAIN2 = 0x1B, |
Ismail Kose |
0:ff4818eff240 | 109 | REG_AP_DATAIN3 = 0x1C, |
Ismail Kose |
0:ff4818eff240 | 110 | REG_AP_DATAIN4 = 0x1D, |
Ismail Kose |
0:ff4818eff240 | 111 | REG_AP_DATAIN5 = 0x1E, |
Ismail Kose |
0:ff4818eff240 | 112 | // = 0x1F, ///< |
Ismail Kose |
0:ff4818eff240 | 113 | REG_LDO_DIRECT = 0x20, |
Ismail Kose |
0:ff4818eff240 | 114 | REG_MPC_DIRECTWRITE = 0x21, |
Ismail Kose |
0:ff4818eff240 | 115 | REG_MPC_DIRECTRED = 0x22, |
Ismail Kose |
0:ff4818eff240 | 116 | |
Ismail Kose |
0:ff4818eff240 | 117 | REG_LED_STEP_DIRECT = 0x2C, |
Ismail Kose |
0:ff4818eff240 | 118 | REG_LED0_DIRECT = 0x2D, |
Ismail Kose |
0:ff4818eff240 | 119 | REG_LED1_DIRECT = 0x2E, |
Ismail Kose |
0:ff4818eff240 | 120 | REG_LED2_DIRECT = 0x2F, |
Ismail Kose |
0:ff4818eff240 | 121 | |
Ismail Kose |
0:ff4818eff240 | 122 | |
Ismail Kose |
0:ff4818eff240 | 123 | REG_LDO1_CONFIG_WRITE = 0x40, |
Ismail Kose |
0:ff4818eff240 | 124 | REG_LDO1_CONFIG_READ = 0x41, |
Ismail Kose |
0:ff4818eff240 | 125 | REG_LDO2_CONFIG_WRITE = 0x42, |
Ismail Kose |
0:ff4818eff240 | 126 | REG_LDO2_CONFIG_READ = 0x43 |
Ismail Kose |
0:ff4818eff240 | 127 | |
Ismail Kose |
0:ff4818eff240 | 128 | /* |
Ismail Kose |
0:ff4818eff240 | 129 | REG_CHG_TMR = 0x0C, ///< Charger Timers |
Ismail Kose |
0:ff4818eff240 | 130 | REG_BUCK1_CFG = 0x0D, ///< Buck 1 Configuration |
Ismail Kose |
0:ff4818eff240 | 131 | REG_BUCK1_VSET = 0x0E, ///< Buck 1 Voltage Setting |
Ismail Kose |
0:ff4818eff240 | 132 | REG_BUCK2_CFG = 0x0F, ///< Buck 2 Configuration |
Ismail Kose |
0:ff4818eff240 | 133 | REG_BUCK2_VSET = 0x10, ///< Buck 2 Voltage Setting |
Ismail Kose |
0:ff4818eff240 | 134 | REG_RSVD_11 = 0x11, ///< Reserved 0x11 |
Ismail Kose |
0:ff4818eff240 | 135 | REG_LDO1_CFG = 0x12, ///< LDO 1 Configuration |
Ismail Kose |
0:ff4818eff240 | 136 | REG_LDO1_VSET = 0x13, ///< LDO 1 Voltage Setting |
Ismail Kose |
0:ff4818eff240 | 137 | REG_LDO2_CFG = 0x14, ///< LDO 2 Configuration |
Ismail Kose |
0:ff4818eff240 | 138 | REG_LDO2_VSET = 0x15, ///< LDO 2 Voltage Setting |
Ismail Kose |
0:ff4818eff240 | 139 | REG_LDO3_CFG = 0x16, ///< LDO 3 Configuration |
Ismail Kose |
0:ff4818eff240 | 140 | REG_LDO3_VSET = 0x17, ///< LDO 3 Voltage Setting |
Ismail Kose |
0:ff4818eff240 | 141 | REG_THRM_CFG = 0x18, ///< Thermistor Configuration |
Ismail Kose |
0:ff4818eff240 | 142 | REG_MON_CFG = 0x19, ///< Monitor Multiplexer Configuration |
Ismail Kose |
0:ff4818eff240 | 143 | REG_BOOT_CFG = 0x1A, ///< Boot Configuration |
Ismail Kose |
0:ff4818eff240 | 144 | REG_PIN_STATUS = 0x1B, ///< Pin Status |
Ismail Kose |
0:ff4818eff240 | 145 | REG_BUCK_EXTRA = 0x1C, ///< Additional Buck Settings |
Ismail Kose |
0:ff4818eff240 | 146 | REG_PWR_CFG = 0x1D, ///< Power Configuration |
Ismail Kose |
0:ff4818eff240 | 147 | REG_NULL = 0x1E, ///< Reserved 0x1E |
Ismail Kose |
0:ff4818eff240 | 148 | REG_PWR_OFF = 0x1F, ///< Power Off Register |
Ismail Kose |
0:ff4818eff240 | 149 | */ |
Ismail Kose |
0:ff4818eff240 | 150 | }; |
Ismail Kose |
0:ff4818eff240 | 151 | |
Ismail Kose |
0:ff4818eff240 | 152 | |
Ismail Kose |
0:ff4818eff240 | 153 | int writeReg(registers_t reg, uint8_t value); |
Ismail Kose |
0:ff4818eff240 | 154 | int readReg(registers_t reg, uint8_t &value); |
Ismail Kose |
0:ff4818eff240 | 155 | |
Ismail Kose |
0:ff4818eff240 | 156 | /// I2C object |
Ismail Kose |
0:ff4818eff240 | 157 | I2C *m_i2c; |
Ismail Kose |
0:ff4818eff240 | 158 | |
Ismail Kose |
0:ff4818eff240 | 159 | /// Device slave addresses |
Ismail Kose |
0:ff4818eff240 | 160 | uint8_t m_writeAddress, m_readAddress; |
Ismail Kose |
0:ff4818eff240 | 161 | }; |
Ismail Kose |
0:ff4818eff240 | 162 | |
Ismail Kose |
0:ff4818eff240 | 163 | #endif /* __MAX20303_H_ */ |