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
}
#define BATTMAN2_MAP_MIKROBUS(cfg, mikrobus)
MikroBUS pin mapping.
Definition battman2.h:421
#define BATTMAN2_SEL_LED_BLUE
Definition battman2.h:135
#define BATTMAN2_SEL_LED_RED
BATT-MAN 2 description setting.
Definition battman2.h:133
#define BATTMAN2_THM_HOT_411_mV
BATT-MAN 2 JEITA Temperature Threshold setting.
Definition battman2.h:162
#define BATTMAN2_THM_COOL_747_mV
Definition battman2.h:173
#define BATTMAN2_SET_CHARGER_DISABLE
Definition battman2.h:186
#define BATTMAN2_THM_WARM_511_mV
Definition battman2.h:166
#define BATTMAN2_THM_COLD_867_mV
Definition battman2.h:177
#define BATTMAN2_USBS_CHGIN_IS_NOT_SUSPENDED
BATT-MAN 2 CHGIN in USB suspend mode setting.
Definition battman2.h:256
#define BATTMAN2_IMON_DISCHG_SCALE_300_mA
Definition battman2.h:274
#define BATTMAN2_SBB_CH_1
Definition battman2.h:358
#define BATTMAN2_MUX_SEL_MULTIPLEXER_DISABLED
BATT-MAN 2 analog channel to connect setting.
Definition battman2.h:281
#define BATTMAN2_TJ_REG_60_C
BATT-MAN 2 die junction temperature regulation point setting.
Definition battman2.h:227
#define BATTMAN2_I_PQ_10_PERCENTAGE
BATT-MAN 2 prequalification charge current setting.
Definition battman2.h:195
#define BATTMAN2_T_TOPOFF_0_MIN
BATT-MAN 2 Top-Off Timer Value setting.
Definition battman2.h:213
#define BATTMAN2_I_TERM_5_PERCENTAGE
BATT-MAN 2 Charger Termination Current setting.
Definition battman2.h:203
#define BATTMAN2_ENABLE_CONTROL_ON_IRRESPECTIVE_FPS
Definition battman2.h:329
#define BATTMAN2_THM_EN_THERMISTOR_DISABLED
BATT-MAN 2 Thermistor Enable setting.
Definition battman2.h:248
#define BATTMAN2_OP_MODE_BUCK_AND_BOOST
BATT-MAN 2 Operation Mode of SBB0 setting.
Definition battman2.h:298
#define BATTMAN2_SEL_LED_YELLOW
Definition battman2.h:134
#define BATTMAN2_ACTIVE_DISCHARGE_ENABLE
Definition battman2.h:317
#define BATTMAN2_DRV_SBB_FAST_TRANSITION_TIME
BATT-MAN 2 SIMO Buck-Boost setting.
Definition battman2.h:347
#define BATTMAN2_PIN_STATE_OFF
Definition battman2.h:136
#define BATTMAN2_PIN_STATE_ON
Definition battman2.h:137
#define BATTMAN2_CURRENT_LIMIT_500_mA
Definition battman2.h:308
#define BATTMAN2_ICHGIN_LIM_95_mA
BATT-MAN 2 Buck-Boost interpreted modes setting.
Definition battman2.h:336
#define BATTMAN2_T_FAST_CHG_TIMER_7_HOURS
Definition battman2.h:241
#define BATTMAN2_SET_CHARGER_ENABLE
Definition battman2.h:187
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.
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.
void application_init(void)
Definition main.c:163

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
}
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.
err_t battman2_get_chg_status(battman2_t *ctx, battman2_stat_chg_t *chg_stat)
BATT-MAN 2 get charger status function.
void application_task(void)
Definition main.c:254

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.