battman2  2.0.0.0
Main Page

BATT-MAN 2 click

BATT-MAN 2 Click is a compact add-on board representing an advanced battery and power management solution. This board features the MAX77654, a single inductor, multiple-output (SIMO) power management IC (PMIC) from Maxim Integrated, now part of Analog Devices. This I2C programmable board features a buck-boost regulator that provides three independently programmable power rails from a single inductor. Also, it has one 100mA LDO output with ripple rejection for audio and other noise-sensitive applications and a highly-configurable linear charger that supports a wide range of Li+ battery capacities featuring battery temperature monitoring for additional safety (JEITA).

click Product page


Click library

  • Author : Nenad Filipovic
  • Date : Aug 2021.
  • Type : I2C type

Software Support

We provide a library for the BATTMAN2 Click as well as a demo application (example), developed using MikroElektronika compilers. The demo can run on all the main MikroElektronika development boards.

Package can be downloaded/installed directly from NECTO Studio Package Manager(recommended way), downloaded from our LibStock™ or found on Mikroe github account.

Library Description

This library contains API for BATTMAN2 Click driver.

Standard key functions :

Example key functions :

Example Description

This library contains API for BATT-MAN 2 Click driver. The library initializes and defines the I2C bus drivers to write and read data from registers. The library also includes a function for configuring appropriate charge current, charge voltage, prequalification voltage, Buck, Buck-Boost and Linear regulator configuration, etc.

The demo application is composed of two sections :

Application Init

The initialization of the I2C module, log UART, and additional pins. After the driver inits and executes a default configuration, the app disables charging, sets charger configuration, enables charging, displays charger configuration, or sets Buck-Boost configuration.

void application_init ( void )
{
log_cfg_t log_cfg;
battman2_cfg_t battman2_cfg;
LOG_MAP_USB_UART( log_cfg );
log_init( &logger, &log_cfg );
log_info( &logger, " Application Init " );
// Click initialization.
battman2_cfg_setup( &battman2_cfg );
BATTMAN2_MAP_MIKROBUS( battman2_cfg, MIKROBUS_1 );
err_t init_flag = battman2_init( &battman2, &battman2_cfg );
if ( I2C_MASTER_ERROR == init_flag )
{
log_error( &logger, " Application Init Error. " );
log_info( &logger, " Please, run program again... " );
for ( ; ; );
}
battman2_default_cfg ( &battman2 );
log_info( &logger, " Application Task " );
Delay_ms( 100 );
Delay_ms( 100 );
#ifdef CHARGER
log_printf( &logger, "-----------------------------------------------\r\n" );
log_printf( &logger, " Example: CHARGER \r\n" );
chg_cfg.thm_hot = BATTMAN2_THM_HOT_411_mV;
chg_cfg.thm_warm = BATTMAN2_THM_WARM_511_mV;
chg_cfg.thm_cool = BATTMAN2_THM_COOL_747_mV;
chg_cfg.thm_cold = BATTMAN2_THM_COLD_867_mV;
chg_cfg.vchgin_min = 4.2;
chg_cfg.ichgin_lim = 95.0;
chg_cfg.chg_pq = 3.0;
chg_cfg.i_term = BATTMAN2_I_TERM_5_PERCENTAGE;
chg_cfg.t_topoff = BATTMAN2_T_TOPOFF_0_MIN;
chg_cfg.tj_reg = BATTMAN2_TJ_REG_60_C;
chg_cfg.vsys_reg = 4.100;
chg_cfg.chg_cc = 112.5;
chg_cfg.t_fast_chg = BATTMAN2_T_FAST_CHG_TIMER_7_HOURS;
chg_cfg.chg_cc_jeita = 15.0;
chg_cfg.chg_cv = 3.775;
chg_cfg.chg_cv_jeita = 3.6;
chg_cfg.imon_dischg_scale = BATTMAN2_IMON_DISCHG_SCALE_300_mA;
battman2_set_charger_cfg( &battman2, chg_cfg );
Delay_ms( 100 );
Delay_ms( 100 );
#endif
#ifdef BUCKBOOST
log_printf( &logger, "-----------------------------------------------\r\n" );
log_printf( &logger, " Example: BUCK-BOOST \r\n" );
sbb_sel = BATTMAN2_SBB_CH_1;
sbb_cfg.output_vtg = 5.5;
sbb_cfg.op_mode = BATTMAN2_OP_MODE_BUCK_AND_BOOST;
sbb_cfg.current_limit = BATTMAN2_CURRENT_LIMIT_500_mA;
sbb_cfg.active_discharge_enable = BATTMAN2_ACTIVE_DISCHARGE_ENABLE;
sbb_cfg.ichgin_lim_def = BATTMAN2_ICHGIN_LIM_95_mA;
battman2_set_sbb_config( &battman2, sbb_sel, sbb_cfg );
log_printf( &logger, "-----------------------------------------------\r\n" );
Delay_ms( 1000 );
#endif
}

Application Task

This is an example that shows the use of a BATT-MAN 2 Click boardâ„¢. The choice of example profile tasks depends on uncommented code. Examples profile: CHARGER and BUCK-BOOST. In the CHARGER profile, while on the BATT-MAN 2 click boardâ„¢ the blue LED is the battery charging indicator, while the red LED indicates the cessation of battery charging. The yellow LED is an indicator of the BUCK-BOOST profile. Results are being sent to the USART terminal where the user can track their changes.

void application_task ( void )
{
#ifdef CHARGER
battman2_get_chg_status( &battman2, &chg_stat );
Delay_ms( 10 );
display_charger_status( );
Delay_ms( 1000 );
battman2_get_charger_cfg( &battman2, &chg_cfg );
log_printf( &logger, " Fast-charge constant current value : %.1f mA\r\n", chg_cfg.chg_cc );
log_printf( &logger, " Minimum CHGIN Regulation Voltage : %.3f V\r\n", chg_cfg.vchgin_min );
log_printf( &logger, " Battery Prequalific. Voltage Thld : %.3f V\r\n", chg_cfg.chg_pq );
log_printf( &logger, " System Voltage Regulation : %.3f V\r\n", chg_cfg.vsys_reg );
log_printf( &logger, " JEITA Ifast-chg-jeita : %.2f mA\r\n", chg_cfg.chg_cc_jeita );
log_printf( &logger, " Fast-charge battery Vreg : %.3f V\r\n", chg_cfg.chg_cv );
log_printf( &logger, " Vfast-chg-jeita : %.3f V\r\n", chg_cfg.chg_cv_jeita );
log_printf( &logger, "-----------------------------------------------\r\n" );
Delay_ms( 1000 );
#endif
#ifdef BUCKBOOST
battman2_get_sbb_config( &battman2, sbb_sel, &sbb_cfg );
Delay_ms( 10 );
display_sbb_status( );
Delay_ms( 1000 );
#endif
}

Additional Function

  • display_charger_status BATT-MAN 2 display charger status function.
    static void display_charger_status ( void );
  • display_sbb_status BATT-MAN 2 display Buck-Boost status function.
    static void display_sbb_status ( void )

The full application code, and ready to use projects can be installed directly from NECTO Studio Package Manager(recommended way), downloaded from our LibStock™ or found on Mikroe github account.

Other Mikroe Libraries used in the example:

  • MikroSDK.Board
  • MikroSDK.Log
  • Click.BATTMAN2

Additional notes and informations

Depending on the development board you are using, you may need USB UART click, USB UART 2 Click or RS232 Click to connect to your PC, for development systems with no UART to USB interface available on the board. UART terminal is available in all MikroElektronika compilers.


BATTMAN2_ICHGIN_LIM_95_mA
#define BATTMAN2_ICHGIN_LIM_95_mA
BATT-MAN 2 Buck-Boost interpreted modes setting.
Definition: battman2.h:322
BATTMAN2_THM_HOT_411_mV
#define BATTMAN2_THM_HOT_411_mV
BATT-MAN 2 JEITA Temperature Threshold setting.
Definition: battman2.h:148
BATTMAN2_SET_CHARGER_DISABLE
#define BATTMAN2_SET_CHARGER_DISABLE
Definition: battman2.h:172
BATTMAN2_SEL_LED_RED
#define BATTMAN2_SEL_LED_RED
BATT-MAN 2 description setting.
Definition: battman2.h:119
battman2_get_chg_status
err_t battman2_get_chg_status(battman2_t *ctx, battman2_stat_chg_t *chg_stat)
BATT-MAN 2 get charger status function.
BATTMAN2_USBS_CHGIN_IS_NOT_SUSPENDED
#define BATTMAN2_USBS_CHGIN_IS_NOT_SUSPENDED
BATT-MAN 2 CHGIN in USB suspend mode setting.
Definition: battman2.h:242
battman2_get_sbb_config
err_t battman2_get_sbb_config(battman2_t *ctx, uint8_t sbb_sel, battman2_sbb_cnfg_t *sbb_cfg)
BATT-MAN 2 get SBB configuration function.
BATTMAN2_CURRENT_LIMIT_500_mA
#define BATTMAN2_CURRENT_LIMIT_500_mA
Definition: battman2.h:294
BATTMAN2_MUX_SEL_MULTIPLEXER_DISABLED
#define BATTMAN2_MUX_SEL_MULTIPLEXER_DISABLED
BATT-MAN 2 analog channel to connect setting.
Definition: battman2.h:267
BATTMAN2_OP_MODE_BUCK_AND_BOOST
#define BATTMAN2_OP_MODE_BUCK_AND_BOOST
BATT-MAN 2 Operation Mode of SBB0 setting.
Definition: battman2.h:284
BATTMAN2_I_TERM_5_PERCENTAGE
#define BATTMAN2_I_TERM_5_PERCENTAGE
BATT-MAN 2 Charger Termination Current setting.
Definition: battman2.h:189
BATTMAN2_IMON_DISCHG_SCALE_300_mA
#define BATTMAN2_IMON_DISCHG_SCALE_300_mA
Definition: battman2.h:260
battman2_default_cfg
err_t battman2_default_cfg(battman2_t *ctx)
BATT-MAN 2 default configuration function.
BATTMAN2_ACTIVE_DISCHARGE_ENABLE
#define BATTMAN2_ACTIVE_DISCHARGE_ENABLE
Definition: battman2.h:303
battman2_set_gpio_output
err_t battman2_set_gpio_output(battman2_t *ctx, uint8_t gpio_sel, uint8_t led_state)
BATT-MAN 2 set gpio output state function.
application_task
void application_task(void)
Definition: main.c:254
BATTMAN2_SEL_LED_BLUE
#define BATTMAN2_SEL_LED_BLUE
Definition: battman2.h:121
battman2_cfg_setup
void battman2_cfg_setup(battman2_cfg_t *cfg)
BATT-MAN 2 configuration object setup function.
BATTMAN2_SET_CHARGER_ENABLE
#define BATTMAN2_SET_CHARGER_ENABLE
Definition: battman2.h:173
BATTMAN2_THM_EN_THERMISTOR_DISABLED
#define BATTMAN2_THM_EN_THERMISTOR_DISABLED
BATT-MAN 2 Thermistor Enable setting.
Definition: battman2.h:234
BATTMAN2_PIN_STATE_OFF
#define BATTMAN2_PIN_STATE_OFF
Definition: battman2.h:122
battman2_init
err_t battman2_init(battman2_t *ctx, battman2_cfg_t *cfg)
BATT-MAN 2 initialization function.
BATTMAN2_DRV_SBB_FAST_TRANSITION_TIME
#define BATTMAN2_DRV_SBB_FAST_TRANSITION_TIME
BATT-MAN 2 SIMO Buck-Boost setting.
Definition: battman2.h:333
BATTMAN2_T_TOPOFF_0_MIN
#define BATTMAN2_T_TOPOFF_0_MIN
BATT-MAN 2 Top-Off Timer Value setting.
Definition: battman2.h:199
battman2_set_charger_cfg
err_t battman2_set_charger_cfg(battman2_t *ctx, battman2_chg_cnfg_t chg_cnfg)
BATT-MAN 2 set charger configuration function.
BATTMAN2_SBB_CH_1
#define BATTMAN2_SBB_CH_1
Definition: battman2.h:344
battman2_t
BATT-MAN 2 Click context object.
Definition: battman2.h:421
BATTMAN2_MAP_MIKROBUS
#define BATTMAN2_MAP_MIKROBUS(cfg, mikrobus)
MikroBUS pin mapping.
Definition: battman2.h:407
application_init
void application_init(void)
Definition: main.c:163
BATTMAN2_T_FAST_CHG_TIMER_7_HOURS
#define BATTMAN2_T_FAST_CHG_TIMER_7_HOURS
Definition: battman2.h:227
BATTMAN2_I_PQ_10_PERCENTAGE
#define BATTMAN2_I_PQ_10_PERCENTAGE
BATT-MAN 2 prequalification charge current setting.
Definition: battman2.h:181
battman2_chg_cnfg_t
BATT-MAN 2 Click charger configuration object.
Definition: battman2.h:469
battman2_set_sbb_config
err_t battman2_set_sbb_config(battman2_t *ctx, uint8_t sbb_sel, battman2_sbb_cnfg_t sbb_cfg)
BATT-MAN 2 set SBB configuration function.
BATTMAN2_THM_WARM_511_mV
#define BATTMAN2_THM_WARM_511_mV
Definition: battman2.h:152
BATTMAN2_TJ_REG_60_C
#define BATTMAN2_TJ_REG_60_C
BATT-MAN 2 die junction temperature regulation point setting.
Definition: battman2.h:213
BATTMAN2_ENABLE_CONTROL_ON_IRRESPECTIVE_FPS
#define BATTMAN2_ENABLE_CONTROL_ON_IRRESPECTIVE_FPS
Definition: battman2.h:315
battman2_cfg_t
BATT-MAN 2 Click configuration object.
Definition: battman2.h:441
BATTMAN2_SEL_LED_YELLOW
#define BATTMAN2_SEL_LED_YELLOW
Definition: battman2.h:120
battman2_set_charger_enable
err_t battman2_set_charger_enable(battman2_t *ctx, uint8_t en_chg)
BATT-MAN 2 set charger enable function.
BATTMAN2_THM_COOL_747_mV
#define BATTMAN2_THM_COOL_747_mV
Definition: battman2.h:159
battman2_get_charger_cfg
err_t battman2_get_charger_cfg(battman2_t *ctx, battman2_chg_cnfg_t *chg_cnfg)
BATT-MAN 2 get charger configuration function.
BATTMAN2_THM_COLD_867_mV
#define BATTMAN2_THM_COLD_867_mV
Definition: battman2.h:163
BATTMAN2_PIN_STATE_ON
#define BATTMAN2_PIN_STATE_ON
Definition: battman2.h:123