Device driver interface for the BQ2429x Single-Cell USB Charger.  
More...
Device driver interface for the BQ2429x Single-Cell USB Charger. 
BQ2429x series power management ICs by Texas Instruments are controllable by I2C, allowing to change charge parameters in the runtime.
For more information, see the datasheets:
It can be used for USB OTG to power other devices, see the bq2429x_enable_otg and bq2429x_disable_otg functions, an additional pin bq2429x_params_t::otg_pin can be set to control it also by hardware and these functions will take care of setting it.
To enable/disable charge the functions bq2429x_enable_charge and bq2429x_disable_charge can be used, and as with the OTG an additional pin bq2429x_params_t::ce_pin can be set to control it also by hardware and these functions will take care of setting it.
When a change happens on the FAULT registers of the device the BQ2429x device generates an interrupt to inform when that happens, this functionality has to be enabled with the bq2429x_int module and can be used with the bq2429x_init_int functions. 
 | 
| file   | bq2429x_internal.h | 
|   | Internal address, registers, constants for the BQ2429x family power ICs. 
  | 
|   | 
| file   | bq2429x_params.h | 
|   | Default configuration for BQ2429x power ICs. 
  | 
|   | 
| file   | bq2429x.h | 
|   | Device driver interface for the BQ2429x Single-Cell USB Charger. 
  | 
|   | 
 | 
| typedef void(*  | bq2429x_int_cb_t) (void *) | 
|   | Callback function for BQ2429x interrupts.  
  | 
|   | 
 | 
| enum   | { BQ2429X_OK = 0
, BQ2429X_ERR_I2C = -1
, BQ2429X_ERR_GPIO = -2
 } | 
|   | Driver return values.  More...
  | 
|   | 
| enum   | bq2429x_vbus_stat_t { BQ2429X_VBUS_NONE = 0
, BQ2429X_VBUS_USB_CHARGER
, BQ2429X_VBUS_AP_CHARGER
, BQ2429X_VBUS_OTG
 } | 
|   | Used VBUS type.  More...
  | 
|   | 
| enum   | bq2429x_chrg_stat_t { BQ2429X_CHARGE_NONE = 0
, BQ2429X_CHARGE_PRE
, BQ2429X_CHARGE_FAST
, BQ2429X_CHARGE_DONE
 } | 
|   | Battery charging status.  More...
  | 
|   | 
| enum   | bq2429x_chrg_fault_t { BQ2429x_CHRG_FAULT_NORMAL = 0
, BQ2429x_CHRG_FAULT_INPUT
, BQ2429x_CHRG_FAULT_THERMAL_SHUTDOWN
, BQ2429x_CHRG_FAULT_CHARGE_TIMER_EXPIRATION
 } | 
|   | Charge fault values.  More...
  | 
|   | 
| enum   | bq2429x_input_voltage_limit_t {  
  BQ2429X_VLIM_3880 = 0
, BQ2429X_VLIM_3960
, BQ2429X_VLIM_4040
, BQ2429X_VLIM_4120
,  
  BQ2429X_VLIM_4200
, BQ2429X_VLIM_4280
, BQ2429X_VLIM_4360
, BQ2429X_VLIM_4440
,  
  BQ2429X_VLIM_4520
, BQ2429X_VLIM_4600
, BQ2429X_VLIM_4680
, BQ2429X_VLIM_4760
,  
  BQ2429X_VLIM_4840
, BQ2429X_VLIM_4920
, BQ2429X_VLIM_5000
, BQ2429X_VLIM_5080
 
 } | 
|   | Input Voltage Limit (VLIM).  More...
  | 
|   | 
| enum   | bq2429x_input_current_limit_t {  
  BQ2429X_ILIM_100 = 0
, BQ2429X_ILIM_150
, BQ2429X_ILIM_500
, BQ2429X_ILIM_900
,  
  BQ2429X_ILIM_1000
, BQ2429X_ILIM_1500
, BQ2429X_ILIM_2000
, BQ2429X_ILIM_3000
 
 } | 
|   | Input Current Limit (ILIM).  More...
  | 
|   | 
| enum   | bq2429x_charge_current_t {  
  BQ2429X_ICHG_512 = 0
, BQ2429X_ICHG_1024 = 8
, BQ2429X_ICHG_2048 = 24
, BQ2429X_ICHG_3008 = 39
,  
  BQ2429X_ICHG_4032 = 55
, BQ2429X_ICHG_4544 = 63
 
 } | 
|   | Charge Current (ICHG)  More...
  | 
|   | 
| enum   | bq2429x_charge_voltage_limit_t {  
  BQ2429X_VREG_3504 = 0
, BQ2429X_VREG_3600 = 6
, BQ2429X_VREG_3808 = 19
, BQ2429X_VREG_3904 = 25
,  
  BQ2429X_VREG_4000 = 31
, BQ2429X_VREG_4112 = 38
, BQ2429X_VREG_4208 = 44
, BQ2429X_VREG_4304 = 50
,  
  BQ2429X_VREG_4352 = 53
, BQ2429X_VREG_4400 = 56
 
 } | 
|   | Charge Voltage Limit (VREG).  More...
  | 
|   | 
 | 
| int  | bq2429x_init (bq2429x_t *dev, const bq2429x_params_t *params) | 
|   | Initialize device.  
  | 
|   | 
| int  | bq2429x_init_int (bq2429x_t *dev, bq2429x_int_cb_t cb, void *arg) | 
|   | Initialize interrupt support for the device.  
  | 
|   | 
| int  | bq2429x_get_status (const bq2429x_t *dev, bq2429x_status_t *status) | 
|   | Get device status.  
  | 
|   | 
| int  | bq2429x_get_fault (const bq2429x_t *dev, bq2429x_fault_t *fault) | 
|   | Get device faults.  
  | 
|   | 
| int  | bq2429x_enable_otg (const bq2429x_t *dev) | 
|   | Enable OTG.  
  | 
|   | 
| int  | bq2429x_disable_otg (const bq2429x_t *dev) | 
|   | Disable OTG.  
  | 
|   | 
| int  | bq2429x_enable_charge (const bq2429x_t *dev) | 
|   | Enable battery charging.  
  | 
|   | 
| int  | bq2429x_disable_charge (const bq2429x_t *dev) | 
|   | Disable battery charging.  
  | 
|   | 
| int  | bq2429x_set_vlim (bq2429x_t *dev, bq2429x_input_voltage_limit_t vlim) | 
|   | Set Input Voltage Limit.  
  | 
|   | 
| int  | bq2429x_get_vlim (const bq2429x_t *dev, bq2429x_input_voltage_limit_t *vlim) | 
|   | Get Input Voltage Limit.  
  | 
|   | 
| int  | bq2429x_set_ilim (bq2429x_t *dev, bq2429x_input_current_limit_t ilim) | 
|   | Set Input Current Limit.  
  | 
|   | 
| int  | bq2429x_get_ilim (const bq2429x_t *dev, bq2429x_input_current_limit_t *ilim) | 
|   | Get Input Current Limit.  
  | 
|   | 
| int  | bq2429x_set_ichg (bq2429x_t *dev, bq2429x_charge_current_t ichg) | 
|   | Set Charge Current.  
  | 
|   | 
| int  | bq2429x_get_ichg (const bq2429x_t *dev, bq2429x_charge_current_t *ichg) | 
|   | Get Charge Current.  
  | 
|   | 
| int  | bq2429x_set_vreg (bq2429x_t *dev, bq2429x_charge_voltage_limit_t vreg) | 
|   | Set Charge Voltage Limit.  
  | 
|   | 
| int  | bq2429x_get_vreg (const bq2429x_t *dev, bq2429x_charge_voltage_limit_t *vreg) | 
|   | Get Charge Voltage Limit.  
  | 
|   | 
◆ bq2429x_int_cb_t
      
        
          | typedef void(* bq2429x_int_cb_t) (void *) | 
        
      
 
Callback function for BQ2429x interrupts. 
Definition at line 281 of file bq2429x.h.
 
 
◆ anonymous enum
Driver return values. 
| Enumerator | 
|---|
| BQ2429X_OK  | Everything is ok.  
 | 
| BQ2429X_ERR_I2C  | I2C error.  
 | 
| BQ2429X_ERR_GPIO  | GPIO initialization error.  
 | 
Definition at line 66 of file bq2429x.h.
 
 
◆ bq2429x_charge_current_t
Charge Current (ICHG) 
| Enumerator | 
|---|
| BQ2429X_ICHG_512  | 512 mA  
 | 
| BQ2429X_ICHG_1024  | 1024 mA  
 | 
| BQ2429X_ICHG_2048  | 2048 mA  
 | 
| BQ2429X_ICHG_3008  | 4032 mA  
 | 
| BQ2429X_ICHG_4032  | 4544 mA  
 | 
Definition at line 214 of file bq2429x.h.
 
 
◆ bq2429x_charge_voltage_limit_t
Charge Voltage Limit (VREG). 
| Enumerator | 
|---|
| BQ2429X_VREG_3504  | 3504 mV  
 | 
| BQ2429X_VREG_3600  | 3600 mV  
 | 
| BQ2429X_VREG_3808  | 3808 mV  
 | 
| BQ2429X_VREG_3904  | 3904 mV  
 | 
| BQ2429X_VREG_4000  | 4000 mV  
 | 
| BQ2429X_VREG_4112  | 4112 mV  
 | 
| BQ2429X_VREG_4208  | 4208 mV  
 | 
| BQ2429X_VREG_4304  | 4304 mV  
 | 
| BQ2429X_VREG_4352  | 4352 mV  
 | 
| BQ2429X_VREG_4400  | 4400 mV  
 | 
Definition at line 226 of file bq2429x.h.
 
 
◆ bq2429x_chrg_fault_t
Charge fault values. 
| Enumerator | 
|---|
| BQ2429x_CHRG_FAULT_NORMAL  | No fault, normal.  
 | 
| BQ2429x_CHRG_FAULT_INPUT  | Input fault (OVP or bad source)  
 | 
| BQ2429x_CHRG_FAULT_THERMAL_SHUTDOWN  | Thermal shutdown.  
 | 
| BQ2429x_CHRG_FAULT_CHARGE_TIMER_EXPIRATION  | Charge timer expiration.  
 | 
Definition at line 128 of file bq2429x.h.
 
 
◆ bq2429x_chrg_stat_t
Battery charging status. 
| Enumerator | 
|---|
| BQ2429X_CHARGE_NONE  | The device is not charging a battery.  
 | 
| BQ2429X_CHARGE_PRE  | Pre-charge state.  
 | 
| BQ2429X_CHARGE_FAST  | Fast charging.  
 | 
| BQ2429X_CHARGE_DONE  | Charging done.  
 | 
Definition at line 85 of file bq2429x.h.
 
 
◆ bq2429x_input_current_limit_t
Input Current Limit (ILIM). 
| Enumerator | 
|---|
| BQ2429X_ILIM_100  | 100 mA  
 | 
| BQ2429X_ILIM_150  | 150 mA  
 | 
| BQ2429X_ILIM_500  | 500 mA  
 | 
| BQ2429X_ILIM_900  | 900 mA  
 | 
| BQ2429X_ILIM_1000  | 1000 mA  
 | 
| BQ2429X_ILIM_1500  | 1500 mA  
 | 
| BQ2429X_ILIM_2000  | 2000 mA  
 | 
| BQ2429X_ILIM_3000  | 3000 mA  
 | 
Definition at line 200 of file bq2429x.h.
 
 
◆ bq2429x_input_voltage_limit_t
Input Voltage Limit (VLIM). 
| Enumerator | 
|---|
| BQ2429X_VLIM_3880  | 3880 mV  
 | 
| BQ2429X_VLIM_3960  | 3960 mV  
 | 
| BQ2429X_VLIM_4040  | 4040 mV  
 | 
| BQ2429X_VLIM_4120  | 4120 mV  
 | 
| BQ2429X_VLIM_4200  | 4200 mV  
 | 
| BQ2429X_VLIM_4280  | 4280 mV  
 | 
| BQ2429X_VLIM_4360  | 4360 mV  
 | 
| BQ2429X_VLIM_4440  | 4440 mV  
 | 
| BQ2429X_VLIM_4520  | 4520 mV  
 | 
| BQ2429X_VLIM_4600  | 4600 mV  
 | 
| BQ2429X_VLIM_4680  | 4680 mV  
 | 
| BQ2429X_VLIM_4760  | 4760 mV  
 | 
| BQ2429X_VLIM_4840  | 4840 mV  
 | 
| BQ2429X_VLIM_4920  | 4920 mV  
 | 
| BQ2429X_VLIM_5000  | 5000 mV  
 | 
| BQ2429X_VLIM_5080  | 5080 mV  
 | 
Definition at line 178 of file bq2429x.h.
 
 
◆ bq2429x_vbus_stat_t
Used VBUS type. 
| Enumerator | 
|---|
| BQ2429X_VBUS_NONE  | No input source detected.  
 | 
| BQ2429X_VBUS_USB_CHARGER  | USB charger input.  
 | 
| BQ2429X_VBUS_AP_CHARGER  | Adapter port charge input.  
 | 
| BQ2429X_VBUS_OTG  | VBUS is used for OTG.  
 | 
Definition at line 75 of file bq2429x.h.
 
 
◆ bq2429x_disable_charge()
      
        
          | int bq2429x_disable_charge  | 
          ( | 
          const bq2429x_t * |           dev | ) | 
           | 
        
      
 
Disable battery charging. 
- Precondition
 dev != NULL
- Parameters
 - 
  
    | [in] | dev | Device descriptor. | 
  
   
- Returns
 - BQ2429X_OK on success. 
 
- 
BQ2429X_ERR_I2C on I2C failure. 
 
 
 
◆ bq2429x_disable_otg()
      
        
          | int bq2429x_disable_otg  | 
          ( | 
          const bq2429x_t * |           dev | ) | 
           | 
        
      
 
Disable OTG. 
- Precondition
 dev != NULL
- Parameters
 - 
  
    | [in] | dev | Device descriptor. | 
  
   
- Returns
 - BQ2429X_OK on success. 
 
- 
BQ2429X_ERR_I2C on I2C failure. 
 
 
 
◆ bq2429x_enable_charge()
      
        
          | int bq2429x_enable_charge  | 
          ( | 
          const bq2429x_t * |           dev | ) | 
           | 
        
      
 
Enable battery charging. 
- Precondition
 dev != NULL
- Parameters
 - 
  
    | [in] | dev | Device descriptor. | 
  
   
- Returns
 - BQ2429X_OK on success. 
 
- 
BQ2429X_ERR_I2C on I2C failure. 
 
 
 
◆ bq2429x_enable_otg()
      
        
          | int bq2429x_enable_otg  | 
          ( | 
          const bq2429x_t * |           dev | ) | 
           | 
        
      
 
Enable OTG. 
This allows powering USB devices from the same port, i.e. to provide power or charge other devices.
- Note
 - This will disable charging of the battery, if previously bq2429x_enable_charge was called, to enable charge again only disable OTG mode with bq2429x_disable_otg.
 
- Precondition
 dev != NULL
- Parameters
 - 
  
    | [in] | dev | Device descriptor. | 
  
   
- Returns
 - BQ2429X_OK on success. 
 
- 
BQ2429X_ERR_I2C on I2C failure. 
 
 
 
◆ bq2429x_get_fault()
Get device faults. 
- Precondition
 dev != NULL && fault != NULL
- Parameters
 - 
  
    | [in] | dev | Device descriptor.  | 
    | [out] | fault | Pointer where device faults will be stored. | 
  
   
- Returns
 - BQ2429X_OK on success. 
 
- 
BQ2429X_ERR_I2C on I2C error. 
 
 
 
◆ bq2429x_get_ichg()
Get Charge Current. 
- Precondition
 dev != NULL && ichg != NULL
- Parameters
 - 
  
    | [in] | dev | Device descriptor.  | 
    | [out] | ichg | Charge current. | 
  
   
- Returns
 - BQ2429X_OK on success. 
 
- 
BQ2429X_ERR_I2C on I2C failure. 
 
 
 
◆ bq2429x_get_ilim()
Get Input Current Limit. 
- Precondition
 dev != NULL && ilim != NULL
- Parameters
 - 
  
    | [in] | dev | Device descriptor.  | 
    | [out] | ilim | Current limit. | 
  
   
- Returns
 - BQ2429X_OK on success. 
 
- 
BQ2429X_ERR_I2C on I2C failure. 
 
 
 
◆ bq2429x_get_status()
Get device status. 
- Precondition
 dev != NULL && status != NULL
- Parameters
 - 
  
    | [in] | dev | Device descriptor.  | 
    | [out] | status | Pointer where device status will be stored. | 
  
   
- Returns
 - BQ2429X_OK on success. 
 
- 
BQ2429X_ERR_I2C on I2C error. 
 
 
 
◆ bq2429x_get_vlim()
Get Input Voltage Limit. 
- Precondition
 dev != NULL && vlim != NULL
- Parameters
 - 
  
    | [in] | dev | Device descriptor.  | 
    | [out] | vlim | Voltage limit. | 
  
   
- Returns
 - BQ2429X_OK on success. 
 
- 
BQ2429X_ERR_I2C on I2C failure. 
 
 
 
◆ bq2429x_get_vreg()
Get Charge Voltage Limit. 
- Precondition
 dev != NULL && vreg != NULL
- Parameters
 - 
  
    | [in] | dev | Device descriptor.  | 
    | [out] | vreg | Voltage limit. | 
  
   
- Returns
 - BQ2429X_OK on success. 
 
- 
BQ2429X_ERR_I2C on I2C failure. 
 
 
 
◆ bq2429x_init()
Initialize device. 
- Precondition
 dev != NULL && params != NULL
- Parameters
 - 
  
    | [out] | dev | Device descriptor.  | 
    | [in] | params | Device parameters. | 
  
   
- Returns
 - BQ2429X_OK on success. 
 
- 
BQ2429X_ERR_I2C on I2C failure. 
 
- 
BQ2429X_ERR_GPIO on GPIO initialization failure (CE or OTG pin failed). 
 
 
 
◆ bq2429x_init_int()
Initialize interrupt support for the device. 
- Precondition
 dev != NULL && cb != NULL
The callback cb is called in an ISR context, so keep in mind that heavy work shouldn't be done there.
- Note
 - bq2429x_init MUST have been called before!
 
- Parameters
 - 
  
    | [in] | dev | Device descriptor.  | 
    | [in] | cb | Callback called on interrupt.  | 
    | [in] | arg | Argument to be passed when the callback is called. | 
  
   
- Returns
 - BQ2429X_OK on success. 
 
- 
BQ2429X_ERR_GPIO on GPIO initialization failure. 
 
 
 
◆ bq2429x_set_ichg()
Set Charge Current. 
- Precondition
 dev != NULL
- Parameters
 - 
  
    | [in] | dev | Device descriptor.  | 
    | [in] | ichg | Charge current. | 
  
   
- Returns
 - BQ2429X_OK on success. 
 
- 
BQ2429X_ERR_I2C on I2C failure. 
 
 
 
◆ bq2429x_set_ilim()
Set Input Current Limit. 
Sets the maximum current limit, this limit is also limited by hardware by setting a resistor to the VLIM pin which sets (by hardware) the upper limit.
- Precondition
 dev != NULL
- Parameters
 - 
  
    | [in] | dev | Device descriptor.  | 
    | [in] | ilim | Current limit. | 
  
   
- Returns
 - BQ2429X_OK on success. 
 
- 
BQ2429X_ERR_I2C on I2C failure. 
 
 
 
◆ bq2429x_set_vlim()
Set Input Voltage Limit. 
- Note
 - This is a limit on the lower bound of the voltage, for example, if the VLIM is set to BQ2429X_VLIM_5000 (5.0V) and the supply voltage is lower than it (4.8V), it will result in a fault and no power will be delivered through the output pin (SYS pin).
 
- Precondition
 dev != NULL
- Parameters
 - 
  
    | [in] | dev | Device descriptor.  | 
    | [in] | vlim | Voltage limit. | 
  
   
- Returns
 - BQ2429X_OK on success. 
 
- 
BQ2429X_ERR_I2C on I2C failure. 
 
 
 
◆ bq2429x_set_vreg()
Set Charge Voltage Limit. 
- Precondition
 dev != NULL
- Parameters
 - 
  
    | [in] | dev | Device descriptor.  | 
    | [in] | vreg | Voltage limit. | 
  
   
- Returns
 - BQ2429X_OK on success. 
 
- 
BQ2429X_ERR_I2C on I2C failure.