mp2660 - 5V USB, 500mA, I2C-Controlled Linear Charger with Power Path Management for Single-Cell Li-Ion Battery
- group mp2660
ESP-IDF driver for Monolithic Systems 5V USB, 500mA, I2C-Controlled Linear Charger with Power Path Management for Single-Cell Li-Ion Battery.
Copyright (c) 2023 Manuel Markwort https://github.com/mmarkwort BSD Licensed as described in the file LICENSE
Defines
-
MP2660_I2C_ADDR
I2C address.
-
MP2660_SOURCE_CONTROL_REG_DEFAULT
Default value of source control register after power on.
-
MP2660_POWER_ON_CONFIG_REG_DEFAULT
Default value of power on configuration register after power on.
-
MP2660_CURENT_CONTROL_REG_DEFAULT
Default value of current control register after power on.
-
MP2660_PRECHARGE_TERMINATION_CURRENT_REG_DEFAULT
Default value of pre charge termination current register after power on.
-
MP2660_CHARGE_VOLTAGE_CONTROL_REG_DEFAULT
Default value of voltage control register after power on.
-
MP2660_CHARGE_TERMINATION_TIMER_CONTROL_REG_DEFAULT
Default value of termination timer control register after power on.
-
MP2660_MISC_OPERATION_CONTROL_REG_DEFAULT
Default value of misc operation control register after power on.
-
MP2660_SYSTEM_STATUS_REG_DEFAULT
Default value of system status register after power on.
-
MP2660_FAULT_REG_DEFAULT
Default value of fault register after power on.
Functions
-
esp_err_t mp2660_init_desc(i2c_dev_t *dev, i2c_port_t port, gpio_num_t sda_gpio, gpio_num_t scl_gpio)
Initialize device descriptor.
- Parameters:
dev – Device descriptor
port – I2C port
sda_gpio – SDA GPIO pin
scl_gpio – SCL GPIO pin
- Returns:
ESP_OK
on success
-
esp_err_t mp2660_free_desc(i2c_dev_t *dev)
Free device descriptor.
- Parameters:
dev – Device descriptor
- Returns:
ESP_OK
on success
-
esp_err_t mp2660_get_input_source(i2c_dev_t *dev, mp2660_input_source_t *input_source)
Reads input source register.
- Parameters:
dev – Device descriptor
input_source – Target buffer
- Returns:
ESP_OK
on success
-
esp_err_t mp2660_set_input_source(i2c_dev_t *dev, mp2660_input_source_t *input_source)
Writes input source register.
- Parameters:
dev – Device descriptor
input_source – Source buffer
- Returns:
ESP_OK
on success
-
esp_err_t mp2660_get_pwr_on_conf(i2c_dev_t *dev, mp2660_power_on_conf_t *pwr_config)
Reads power configuration register.
- Parameters:
dev – Device descriptor
pwr_config – Target buffer
- Returns:
ESP_OK
on success
-
esp_err_t mp2660_set_pwr_on_conf(i2c_dev_t *dev, mp2660_power_on_conf_t *pwr_config)
Writes power configuration register.
- Parameters:
dev – Device descriptor
pwr_config – Source buffer
- Returns:
ESP_OK
on success
-
esp_err_t mp2660_get_chrg_current_ctrl(i2c_dev_t *dev, mp2660_charge_current_ctrl_t *chrg_current_ctrl)
Reads charge current control register.
- Parameters:
dev – Device descriptor
chrg_current_ctrl – Target buffer
- Returns:
ESP_OK
on success
-
esp_err_t mp2660_set_chrg_current_ctrl(i2c_dev_t *dev, mp2660_charge_current_ctrl_t *chrg_current_ctrl)
Writes charge current control register.
- Parameters:
dev – Device descriptor
chrg_current_ctrl – Source buffer
- Returns:
ESP_OK
on success
-
esp_err_t mp2660_get_pre_chrg_term_current(i2c_dev_t *dev, mp2660_pre_charge_term_current_t *pre_chrg_term_current)
Reads pre-charge / termination current register.
- Parameters:
dev – Device descriptor
pre_chrg_term_current – Target buffer
- Returns:
ESP_OK
on success
-
esp_err_t mp2660_set_pre_chrg_term_current(i2c_dev_t *dev, mp2660_pre_charge_term_current_t *pre_chrg_term_current)
Writes pre-charge / termination current register.
- Parameters:
dev – Device descriptor
pre_chrg_term_current – Source buffer
- Returns:
ESP_OK
on success
-
esp_err_t mp2660_get_chrg_voltage_control(i2c_dev_t *dev, mp2660_charge_voltage_ctrl_t *chrg_voltage_ctrl)
Reads charge voltage control register.
- Parameters:
dev – Device descriptor
chrg_voltage_ctrl – Target buffer
- Returns:
ESP_OK
on success
-
esp_err_t mp2660_set_chrg_voltage_control(i2c_dev_t *dev, mp2660_charge_voltage_ctrl_t *chrg_voltage_ctrl)
Writes charge voltage control register.
- Parameters:
dev – Device descriptor
chrg_voltage_ctrl – Source buffer
- Returns:
ESP_OK
on success
-
esp_err_t mp2660_get_chrg_term_timer_control(i2c_dev_t *dev, mp2660_charge_term_timer_ctrl_t *charge_term_timer_ctrl)
Reads charge termination / timer control register.
- Parameters:
dev – Device descriptor
charge_term_timer_ctrl – Target buffer
- Returns:
ESP_OK
on success
-
esp_err_t mp2660_set_chrg_term_timer_control(i2c_dev_t *dev, mp2660_charge_term_timer_ctrl_t *charge_term_timer_ctrl)
Writes charge termination / timer control register.
- Parameters:
dev – Device descriptor
charge_term_timer_ctrl – Source buffer
- Returns:
ESP_OK
on success
-
esp_err_t mp2660_get_misc_op_control(i2c_dev_t *dev, mp2660_misc_op_ctrl_t *misc_op_ctrl)
Reads miscellaneous operation control register.
- Parameters:
dev – Device descriptor
misc_op_ctrl – Target buffer
- Returns:
ESP_OK
on success
-
esp_err_t mp2660_set_misc_op_control(i2c_dev_t *dev, mp2660_misc_op_ctrl_t *misc_op_ctrl)
Writes miscellaneous operation control register.
- Parameters:
dev – Device descriptor
misc_op_ctrl – Source buffer
- Returns:
ESP_OK
on success
-
esp_err_t mp2660_get_sys_status(i2c_dev_t *dev, mp2660_sys_status_t *sys_status)
Reads system status register.
- Parameters:
dev – Device descriptor
sys_status – Target buffer
- Returns:
ESP_OK
on success
-
esp_err_t mp2660_get_fault(i2c_dev_t *dev, mp2660_fault_t *fault)
Reads fault register.
- Parameters:
dev – Device descriptor
fault – Target buffer
- Returns:
ESP_OK
on success
-
struct mp2660_input_source_t
- #include <mp2660.h>
Input Source Control Register/Address: 00h (Default: 0100 1111)
Public Members
-
uint8_t i_in_lim_0
000: 85mA, 001: 130mA, 010: 175mA, 011: 220mA, 100: 265mA, 101: 310mA, 110: 355mA, 111: 455mA, Default: 455mA (111)
-
uint8_t i_in_lim_1
s.a.
-
uint8_t i_in_lim_2
s.a.
-
uint8_t v_in_min_0
80mV / RW / VIn Min Offset: 3.88V, Range 3.88V - 5.08V, Default: 4.60V (1001)
-
uint8_t v_in_min_1
160mV / RW
-
uint8_t v_in_min_2
320mV / RW
-
uint8_t v_in_min_3
640mV / RW
-
uint8_t en_hiz
0: Disable 1: Enable / RW / This bit only controls the on and off of the LDO FET.
-
uint8_t reg
Register data.
-
uint8_t i_in_lim_0
-
struct mp2660_power_on_conf_t
- #include <mp2660.h>
Power-On Configuration Register / Address: 01h (Default: 0000 0100)
Public Members
-
uint8_t v_batt_uvlo_0
0.1V / RW / Offset: 2.4V, Range: 2.4V - 3.1V, Default: 2.8V (100)
-
uint8_t v_batt_uvlo_1
0.2V / RW
-
uint8_t v_batt_uvlo_2
0.4V / RW
-
uint8_t ceb
0: Charge enable 1: Charge disable / RW / Default: Charge enable (0)
-
uint8_t reserved_1
NA.
-
uint8_t reserved_2
NA.
-
uint8_t i2c_watchdog_timer
0: Normal 1: Reset / RW / Default: Normal (0)
-
uint8_t reg_reset
0: Keep current setting 1: Reset / RW / Default: Keep current register setting (0)
-
uint8_t reg
Register data.
-
uint8_t v_batt_uvlo_0
-
struct mp2660_charge_current_ctrl_t
- #include <mp2660.h>
Charge Current Control Register/ Address: 02h (Default: 0000 1110)
-
struct mp2660_pre_charge_term_current_t
- #include <mp2660.h>
Pre-Charge/ Termination Current/ Address: 03h (Default: 0100 1010)
Public Members
-
uint8_t reserved_1
NA.
-
uint8_t i_dschg_3
800mA / RW / Offset: 200mA, Range: 200mA - 1.6A, Default: 1.0A (1001)
-
uint8_t i_dschg_2
400mA / RW
-
uint8_t i_dschg_1
200mA / RW
-
uint8_t i_dschg_0
100mA / RW
-
uint8_t reserved_2
NA.
-
uint8_t i_pre_1
14mA / RW / Offset: 6mA, Range: 6mA - 27mA, Default: 20mA (10)
-
uint8_t i_pre_0
7mA / RW
-
uint8_t reg
Register data.
-
uint8_t reserved_1
-
struct mp2660_charge_voltage_ctrl_t
- #include <mp2660.h>
Charge Voltage Control Register/ Address: 04h (Default: 1010 0011)
Public Members
-
uint8_t v_bat_reg_5
480mV / RW / Offset: 3.60V, Range: 3.60V - 4.545V, Default: 4.2V (101000)
-
uint8_t v_bat_reg_4
240mV / RW
-
uint8_t v_bat_reg_3
120mV / RW
-
uint8_t v_bat_reg_2
60mV / RW
-
uint8_t v_bat_reg_1
30mV / RW
-
uint8_t v_bat_reg_0
15mV / RW
-
uint8_t v_batt_pre
0: 2.8V 1: 3.0V / RW / Default: 3.0V (1)
-
uint8_t v_batt_rech
0: 150mV 1: 300mV / RW / Default: 300mV (1)
-
uint8_t reg
Register data.
-
uint8_t v_bat_reg_5
-
struct mp2660_charge_term_timer_ctrl_t
- #include <mp2660.h>
Charge Termination/Timer Control Register / Address: 05h (Default: 0100 1010)
Public Members
-
uint8_t reserved
NA.
-
uint8_t en_term
0: Disable 1: Enable / RW / Default: Enable (1)
-
uint8_t watchdog_1
00: Disable timer 01: 40s 10: 80s 11: 160s / RW / Default: Disable timer (00)
-
uint8_t watchdog_0
s.a.
-
uint8_t en_timer
0: Disable 1: Enable / RW / Default: Enable timer (1)
-
uint8_t chg_timer_1
00: 3hrs 01: 5hrs 10: 8hrs 11: 12hrs / RW / Default: 5hrs (01)
-
uint8_t chg_timer_0
s.a.
-
uint8_t term_tmr
0: Disable 1: Enable / RW / Default: Disable (0)
-
uint8_t reg
Register data.
-
uint8_t reserved
-
struct mp2660_misc_op_ctrl_t
- #include <mp2660.h>
Miscellaneous Operation Control Register/ Address: 06h (Default: 0000 1011)
Public Members
-
uint8_t reserved_1
NA.
-
uint8_t tmr2x_en
0: Disable 2X extended safety timer during PPM 1: Enable 2X extended safety timer during PPM / RW / Default: Disable (0)
-
uint8_t fet_dis
0: Enable 1: Turn off / RW / Default: Enable (0)
-
uint8_t reserved_2
NA.
-
uint8_t en_ntc
0: Disable 1: Enable / RW / Default: Enable (1)
-
uint8_t reserved_3
NA.
-
uint8_t tj_reg_0
00: 60°C 01: 80°C 10: 100°C 11: 120°C / RW / 120°C (11)
-
uint8_t tj_reg_1
s.a.
-
uint8_t reg
Register data.
-
uint8_t reserved_1
-
struct mp2660_sys_status_t
- #include <mp2660.h>
System Status Register/ Address: 07h (Default: 0000 0000)
Public Members
-
uint8_t reserved_1
NA.
-
uint8_t rev_1
Revision number / R / Default: (00)
-
uint8_t rev_0
s.a.
-
uint8_t chg_stat_1
00: Not charging 01: Pre-charge 10: Charge 11: Charge done / R / Default: Not charging (00)
-
uint8_t chg_stat_0
s.a.
-
uint8_t ppm_stat
0: No PPM 1: In PPM / R / Default: No PPM (0) (no power-path management happens)
-
uint8_t pg_stat
0: Power fail 1: Power good / R / Default: Power fail (0)
-
uint8_t therm_stat
0: No thermal regulation 1: In thermal regulation / R / No thermal regulation (0)
-
uint8_t reg
Register data.
-
uint8_t reserved_1
-
struct mp2660_fault_t
- #include <mp2660.h>
Fault Register/ Address: 08h (Default: 0000 0000)
Public Members
-
uint8_t reserved_1
NA.
-
uint8_t watchdog_fault
0: Normal 1: Watchdog timer expiration / R / Default: Normal (0)
-
uint8_t vin_fault
0: Normal 1: Input fault (OVP or bad source) / R / Default: Normal (0)
-
uint8_t them_sd
0: Normal 1: Thermal shutdown / R / Default: Normal (0)
-
uint8_t bat_fault
0: Normal 1: Battery OVP / R / Default: Normal (0)
-
uint8_t stmr_fault
0: Normal 1: Safety timer expiration / R / Default: Normal (0)
-
uint8_t reserved_2
NA.
-
uint8_t reserved_3
NA.
-
uint8_t reg
Register data.
-
uint8_t reserved_1
-
MP2660_I2C_ADDR