Crate axp2101_embedded

Crate axp2101_embedded 

Source
Expand description

§AXP2101 Power Management IC Driver

This crate provides a complete embedded driver for the AXP2101 Power Management IC (PMIC). It supports all features including:

  • Status monitoring (VBUS, battery, charging state)
  • DCDC1-5 voltage regulators
  • ALDO1-4, BLDO1-2, DLDO1-2, CPUSLDO voltage regulators
  • Battery charging control
  • ADC measurements
  • Interrupt handling
  • Watchdog timer
  • Power sequencing

§Example

use axp2101::{Axp2101, Error};
let mut pmic = Axp2101::new(i2c);

// Initialize and verify chip
pmic.init()?;

// Enable DC1 at 3.3V
pmic.enable_dc1()?;
pmic.set_dc1_voltage(3300)?;

// Check battery status
if pmic.is_battery_connected()? {
    let voltage = pmic.get_battery_voltage()?;
    // ... use battery voltage
}

§Async Support

When the async feature is enabled, the crate provides AsyncAxp2101 with the same API but async/await support:

use axp2101::AsyncAxp2101;

let mut pmic = AsyncAxp2101::new(i2c);
pmic.init().await?;
pmic.enable_dc1().await?;

Structs§

Axp2101
AXP2101 PMIC driver
InterruptFlags
Interrupt flags for AXP2101

Enums§

ChargeLedMode
Charge LED modes
ChargeStatus
Charge status
ChargeTerminationCurrent
Charge termination current
DvmRamp
DVM ramp speed
Error
Error types for AXP2101 operations
FastPowerOnChannel
Fast power-on options
IrqTime
IRQ timing configuration
PowerChannel
Power channel identifiers
PowerOffSource
Power-off sources
PowerOnSource
Power-on sources
PrechargeCurrent
Precharge current settings
PwrOkDelay
PWROK delay options
SequenceLevel
Start sequence level
ThermalThreshold
Thermal regulation threshold
VsysDpmVoltage
VSYS DPM voltage levels
WakeupSource
Wakeup configuration
WatchdogConfig
Watchdog configuration
WatchdogTimeout
Watchdog timeout

Constants§

AXP2101_ADC_CHANNEL_CTRL
ADC control
AXP2101_ADC_DATA_RELUST0
AXP2101_ADC_DATA_RELUST1
AXP2101_ADC_DATA_RELUST2
AXP2101_ADC_DATA_RELUST3
AXP2101_ADC_DATA_RELUST4
AXP2101_ADC_DATA_RELUST5
AXP2101_ADC_DATA_RELUST6
AXP2101_ADC_DATA_RELUST7
AXP2101_ADC_DATA_RELUST8
AXP2101_ADC_DATA_RELUST9
AXP2101_BATFET_CTRL
BATFET control register - Manages battery FET enable/disable and discharge control
AXP2101_BAT_DET_CTRL
Battery detection
AXP2101_BAT_PARAMS
Battery parameters register - Stores or reads 128-byte fuel gauge configuration data
AXP2101_BAT_PERCENT_DATA
Battery percentage
AXP2101_BTN_BAT_CHG_VOL_SET
Button battery charge
AXP2101_CHARGE_GAUGE_WDT_CTRL
Watchdog and gauge control
AXP2101_CHGLED_SET_CTRL
Charging control
AXP2101_CHIP_ID
Expected chip ID value for AXP2101
AXP2101_COMMON_CONFIG
Common configuration register - Controls internal discharge, PWROK pin, PWRON shutdown, reset, and system shutdown
AXP2101_CV_CHG_VOL_SET
AXP2101_DATA_BUFFER1
Data buffer register 1 - First of 6 bytes for user data storage
AXP2101_DATA_BUFFER_SIZE
Size of the data buffer in bytes (6 bytes total)
AXP2101_DC_FORCE_PWM_CTRL
DC force PWM control
AXP2101_DC_ONOFF_DVM_CTRL
DCDC on/off and DVM control - Enables/disables DC1-5, CCM mode, and DVM ramp speed
AXP2101_DC_OVP_UVP_CTRL
AXP2101_DC_VOL0_CTRL
DCDC1 voltage control register - Sets output voltage for DC1 (1500-3400mV in 100mV steps)
AXP2101_DC_VOL1_CTRL
DCDC2 voltage control register - Sets output voltage for DC2 (500-1540mV)
AXP2101_DC_VOL2_CTRL
DCDC3 voltage control register - Sets output voltage for DC3 (500-3400mV)
AXP2101_DC_VOL3_CTRL
DCDC4 voltage control register - Sets output voltage for DC4 (500-1840mV)
AXP2101_DC_VOL4_CTRL
DCDC5 voltage control register - Sets output voltage for DC5 (1400-3700mV or 1200mV)
AXP2101_DIE_TEMP_CTRL
Die temperature control register - Configuration for internal temperature monitoring
AXP2101_FAST_PWRON_CTRL
AXP2101_FAST_PWRON_SET0
Fast power on control
AXP2101_FAST_PWRON_SET1
AXP2101_FAST_PWRON_SET2
AXP2101_FUEL_GAUGE_CTRL
Fuel gauge control register - Controls fuel gauge ROM access and data interface
AXP2101_ICC_CHG_SET
AXP2101_IC_TYPE
AXP2101 Register Addresses Based on AXP2101 datasheet Device type/ID register - Contains chip identification
AXP2101_INPUT_CUR_LIMIT_CTRL
Input current limit control - Configures maximum input current from VBUS
AXP2101_INPUT_VOL_LIMIT_CTRL
Input voltage limit control - Sets VBUS voltage limit thresholds
AXP2101_INTEN1
Interrupt control
AXP2101_INTEN2
AXP2101_INTEN3
AXP2101_INTSTS1
AXP2101_INTSTS2
AXP2101_INTSTS3
AXP2101_INTSTS_CNT
AXP2101_IPRECHG_SET
AXP2101_IRQ_OFF_ON_LEVEL_CTRL
AXP2101_ITERM_CHG_SET_CTRL
AXP2101_LDO_ONOFF_CTRL0
LDO control
AXP2101_LDO_ONOFF_CTRL1
AXP2101_LDO_VOL0_CTRL
AXP2101_LDO_VOL1_CTRL
AXP2101_LDO_VOL2_CTRL
AXP2101_LDO_VOL3_CTRL
AXP2101_LDO_VOL4_CTRL
AXP2101_LDO_VOL5_CTRL
AXP2101_LDO_VOL6_CTRL
AXP2101_LDO_VOL7_CTRL
AXP2101_LDO_VOL8_CTRL
AXP2101_LOW_BAT_WARN_SET
AXP2101_MIN_SYS_VOL_CTRL
Minimum system voltage control - Sets the minimum voltage threshold for system operation
AXP2101_PWROFF_EN
AXP2101_PWROFF_STATUS
AXP2101_PWROK_SEQU_CTRL
AXP2101_PWRON_STATUS
Power on/off control
AXP2101_RESET_FUEL_GAUGE
Reset fuel gauge register - Triggers reset of battery percentage tracking
AXP2101_SLAVE_ADDRESS
I2C Address
AXP2101_SLEEP_WAKEUP_CTRL
AXP2101_STATUS1
Status register 1 - Contains VBUS good, BATFET state, battery connection/active status, thermal regulation, and current limit status
AXP2101_STATUS2
Status register 2 - Contains power-on status, charging state (tri-charge, pre-charge, CC, CV, done), and charger status
AXP2101_THE_REGU_THRES_SET
AXP2101_TS_PIN_CTRL
TS pin control
AXP2101_VOFF_SET
AXP2101_WDT_CTRL
IRQ_BATFET_OVER_CURR
IRQ_BAT_CHG_DONE
IRQ_BAT_CHG_OVER_TEMP
IRQ_BAT_CHG_START
IRQ_BAT_CHG_UNDER_TEMP
IRQ_BAT_INSERT
IRQ_BAT_OVER_VOL
IRQ_BAT_REMOVE
IRQ_BAT_WORK_OVER_TEMP
IRQ_BAT_WORK_UNDER_TEMP
IRQ_CHARGER_TIMER
IRQ_DIE_OVER_TEMP
IRQ_GAUGE_NEW_SOC
IRQ_LDO_OVER_CURR
IRQ_PKEY_LONG
IRQ_PKEY_NEGATIVE
IRQ_PKEY_POSITIVE
IRQ_PKEY_SHORT
IRQ_VBUS_INSERT
IRQ_VBUS_REMOVE
IRQ_WARNING_LEVEL1
IRQ_WARNING_LEVEL2
IRQ_WDT_EXPIRE
IRQ_WDT_TIMEOUT
XPOWERS_AXP2101_ALDO1_VOL_MAX
XPOWERS_AXP2101_ALDO1_VOL_MIN
XPOWERS_AXP2101_ALDO1_VOL_STEPS
XPOWERS_AXP2101_ALDO2_VOL_MAX
XPOWERS_AXP2101_ALDO2_VOL_MIN
XPOWERS_AXP2101_ALDO2_VOL_STEPS
XPOWERS_AXP2101_ALDO3_VOL_MAX
XPOWERS_AXP2101_ALDO3_VOL_MIN
XPOWERS_AXP2101_ALDO3_VOL_STEPS
XPOWERS_AXP2101_ALDO4_VOL_MAX
XPOWERS_AXP2101_ALDO4_VOL_MIN
XPOWERS_AXP2101_ALDO4_VOL_STEPS
XPOWERS_AXP2101_BLDO1_VOL_MAX
XPOWERS_AXP2101_BLDO1_VOL_MIN
XPOWERS_AXP2101_BLDO1_VOL_STEPS
XPOWERS_AXP2101_BLDO2_VOL_MAX
XPOWERS_AXP2101_BLDO2_VOL_MIN
XPOWERS_AXP2101_BLDO2_VOL_STEPS
XPOWERS_AXP2101_BTN_VOL_MAX
XPOWERS_AXP2101_BTN_VOL_MIN
XPOWERS_AXP2101_BTN_VOL_STEPS
XPOWERS_AXP2101_CONVERSION_FACTOR
XPOWERS_AXP2101_CPUSLDO_VOL_MAX
XPOWERS_AXP2101_CPUSLDO_VOL_MIN
XPOWERS_AXP2101_CPUSLDO_VOL_STEPS
XPOWERS_AXP2101_DCDC1_VOL_MAX
XPOWERS_AXP2101_DCDC1_VOL_MIN
XPOWERS_AXP2101_DCDC1_VOL_STEPS
XPOWERS_AXP2101_DCDC2_VOL1_MAX
XPOWERS_AXP2101_DCDC2_VOL1_MIN
XPOWERS_AXP2101_DCDC2_VOL2_MAX
XPOWERS_AXP2101_DCDC2_VOL2_MIN
XPOWERS_AXP2101_DCDC2_VOL_STEPS1
XPOWERS_AXP2101_DCDC2_VOL_STEPS2
XPOWERS_AXP2101_DCDC2_VOL_STEPS2_BASE
XPOWERS_AXP2101_DCDC3_VOL1_MAX
XPOWERS_AXP2101_DCDC3_VOL1_MIN
XPOWERS_AXP2101_DCDC3_VOL2_MAX
XPOWERS_AXP2101_DCDC3_VOL2_MIN
XPOWERS_AXP2101_DCDC3_VOL3_MAX
XPOWERS_AXP2101_DCDC3_VOL3_MIN
XPOWERS_AXP2101_DCDC3_VOL_MIN
XPOWERS_AXP2101_DCDC3_VOL_STEPS1
XPOWERS_AXP2101_DCDC3_VOL_STEPS2
XPOWERS_AXP2101_DCDC3_VOL_STEPS3
XPOWERS_AXP2101_DCDC3_VOL_STEPS2_BASE
XPOWERS_AXP2101_DCDC3_VOL_STEPS3_BASE
XPOWERS_AXP2101_DCDC4_VOL1_MAX
XPOWERS_AXP2101_DCDC4_VOL1_MIN
XPOWERS_AXP2101_DCDC4_VOL2_MAX
XPOWERS_AXP2101_DCDC4_VOL2_MIN
XPOWERS_AXP2101_DCDC4_VOL_STEPS1
XPOWERS_AXP2101_DCDC4_VOL_STEPS2
XPOWERS_AXP2101_DCDC4_VOL_STEPS2_BASE
XPOWERS_AXP2101_DCDC5_VOL_1200MV
XPOWERS_AXP2101_DCDC5_VOL_MAX
XPOWERS_AXP2101_DCDC5_VOL_MIN
XPOWERS_AXP2101_DCDC5_VOL_STEPS
XPOWERS_AXP2101_DCDC5_VOL_VAL
XPOWERS_AXP2101_DLDO1_VOL_MAX
XPOWERS_AXP2101_DLDO1_VOL_MIN
XPOWERS_AXP2101_DLDO1_VOL_STEPS
XPOWERS_AXP2101_DLDO2_VOL_MAX
XPOWERS_AXP2101_DLDO2_VOL_MIN
XPOWERS_AXP2101_DLDO2_VOL_STEPS
XPOWERS_AXP2101_VSYS_VOL_THRESHOLD_MAX
XPOWERS_AXP2101_VSYS_VOL_THRESHOLD_MIN
XPOWERS_AXP2101_VSYS_VOL_THRESHOLD_STEPS

Functions§

temp_conversion