bf0_hal_pmu.h

Defines

PMU_HPSYS_LDO_VREF_DEFAULT
HAL_PMU_DISABLE_LPSYS_LDO()
PMUC_WSR_PIN_ALL
PMU_LPSYS_PSW_RET_LDO
PMU_LPSYS_PSW_BUCK2
PMU_LPSYS_PSW_LPSYS_LDO
PMU_BLESYS_PSW_RET_LDO
PMU_BLESYS_PSW_BUCK2
PMU_BLESYS_PSW_LPSYS_LDO
PMU_WAKEUP_SRC_RTC

wakeup source RTC

PMU_WAKEUP_SRC_PIN0

wakeup source PIN0

PMU_WAKEUP_SRC_PIN1

wakeup source PIN1

PMU_WAKEUP_SRC_PIN2

wakeup source PIN2

PMU_WAKEUP_SRC_PIN3

wakeup source PIN3

PMU_WAKEUP_SRC_PIN4

wakeup source PIN4

PMU_WAKEUP_SRC_PIN5

wakeup source PIN5

HAL_PMU_SELECT_LPSYS_PWR(psw)

Select LPSYS Power Switch.

Parameters:
  • psw[in] power switch flag, see PMU_LPSYS_PSW

Return values:

None

HAL_PMU_SELECT_BLESYS_PWR(psw)

Select LPSYS Power Switch.

Parameters:
  • psw[in] power switch flag, see PMU_LPSYS_PSW

Return values:

None

HAL_PMU_SET_BG1_VREF12(val)

Config bandgap1 VREF12.

Parameters:
  • val[in] vandgap1 vref12 value

Return values:

None

HAL_PMU_SET_HPSYS_LDO_VREF(val)

Config HPSYS LDO VREF.

Parameters:
  • val[in] HPSYS LDO VREF value

Return values:

None

HAL_PMU_SET_HPSYS_LDO_VREF2(val)

Config HPSYS LDO VREF2.

Parameters:
  • val[in] HPSYS LDO VREF2 value

Return values:

None

HAL_PMU_SET_BUCK1_CCH(val)

Config BUCK1 CCH.

Parameters:
  • val[in] BUCK1 CCH value

Return values:

None

HAL_PMU_HPSYS_POWER_OFF()

Turn off HCPU power switch entirely during standby.

Return values:

None

HAL_PMU_HPSYS_POWER_ON()

Turn off HCPU power switch entirely during standby.

Return values:

None

HAL_PMU_SWITCH_VRET()

Vret switch to 0.7v when standby.

Return values:

None

HAL_PMU_SWITCH_VRET_LOWER()

Vret switch to 0.65v when standby.

Return values:

None

HAL_PMU_SET_LDO_RDY_DELAY(delay)

Set the delay time of LDO ready.

Return values:

None

HAL_PMU_SET_HXT3_RDY_DELAY(delay)

Set the delay time of xTal48M ready.

Return values:

None

HAL_PMU_LXT_ENABLED()

Check weather LXT is enabled.

Return values:

True – if LXT enabled, False if using RC10k

HAL_PMU_LXT_DISABLED()

Check weather LXT is disabled.

Return values:

True – if using RC10k, False if using LXT

HAL_PMU_CLEAR_WSR(wsr)

Clear PMU wakeup source register.

Parameters:
  • wsr[in]

Return values:

wsr – wakeup source register value

HAL_PMU_GET_WSR()

Get wakeup source.

Return values:

wsr – wakeup source register value

HAL_PMU_SET_BUCK2_LOW_VOLTAGE()
HAL_PMU_SET_BUCK2_HIGH_VOLTAGE()
HAL_PMU_ENABLE_BOR()

Typedefs

typedef struct __PMU_ChgHandleTypeDef PMU_ChgHandleTypeDef

Charger Handle Type definition

typedef void (*PMU_ChgCallbackTypeDef)(PMU_ChgHandleTypeDef *handle, uint32_t status)

Charger Callback Type Def

Enums

enum PMU_BootModeTypeDef

PMU boot mode

Values:

enumerator PMU_COLD_BOOT

code boot mode

enumerator PMU_HIBERNATE_BOOT

boot from hibernate mode, can be wakeup by RTC and PIN

enumerator PMU_SHUTDOWN_BOOT

boot from shutdown mode, can be wakeup by RTC and PIN, but RTC wakeup time is not precise

enumerator PMU_REBOOT_BOOT

boot from reboot

enum PMU_LpClockTypeDef

Values:

enumerator PMU_LPCLK_RC10
enumerator PMU_LPCLK_XT32

RC10K as LP clock

enumerator PMU_LPCLK_RC32

XTAL32K as LP clock

enum HAL_PMU_ChgStateTypeDef

Charger State Type

Values:

enumerator HAL_PMU_CHG_STATE_RESET
enumerator HAL_PMU_CHG_STATE_READY
enumerator HAL_PMU_CHG_STATE_BUSY

An internal process is ongoing

enumerator HAL_PMU_CHG_STATE_TIMEOUT

Timeout state

enumerator HAL_PMU_CHG_STATE_ERROR

CHG state error

enumerator HAL_PMU_CHG_STATE_SUSPEND

CHG process is suspended

enum HAL_PMU_ChgHwStateTypeDef

Hardware state machine, must be consistent with the value of register CHG_SR.CHG_STATE

Values:

enumerator HAL_PMU_CHG_HW_ST_OFF
enumerator HAL_PMU_CHG_HW_ST_PWRUP
enumerator HAL_PMU_CHG_HW_ST_IDLE
enumerator HAL_PMU_CHG_HW_ST_PRECC
enumerator HAL_PMU_CHG_HW_ST_CC
enumerator HAL_PMU_CHG_HW_ST_CV
enumerator HAL_PMU_CHG_HW_ST_EOC
enum PMU_ChgIrqTrigModeTypeDef

Charger IRQ Trigger Mode Type Definition

Values:

enumerator PMU_CHG_IRQ_TRIG_MODE_HIGH

event status is high

enumerator PMU_CHG_IRQ_TRIG_MODE_LOW

event status is low

enumerator PMU_CHG_IRQ_TRIG_MODE_POS_EDGE

event status goes from low to high

enumerator PMU_CHG_IRQ_TRIG_MODE_NEG_EDGE

event status goes from high to low

enumerator PMU_CHG_IRQ_TRIG_MODE_DOUBLE_EDGE

event status goes from high to low, or low to high

enumerator PMU_CHG_IRQ_TRIG_MODE_DISABLE

not trigger interrupt

enum PMU_ChgIrqStatusTypeDef

Charger IRQ Status Type Definition

Values:

enumerator PMU_CHG_IRQ_VBUS_RDY

VBUS Ready

enumerator PMU_CHG_IRQ_VBAT_HIGH

VBAT High

enumerator PMU_CHG_IRQ_ABOVE_REP

Above Rep

enumerator PMU_CHG_IRQ_ABOVE_CC

Above CC

enumerator PMU_CHG_IRQ_CC

CC

enumerator PMU_CHG_IRQ_CV

CV

enumerator PMU_CHG_IRQ_EOC

End of Charging

enum PMU_PeriLdoTypeDef

Values:

enumerator PMU_PERI_LDO_1V8
enumerator PMU_PERI_LDO2_3V3
enumerator PMU_PERI_LDO3_3V3

Functions

HAL_StatusTypeDef HAL_PMU_EnablePinWakeup(uint8_t pin, uint8_t mode)

Enable pin wakeup for hibernate.

Parameters:
  • pin – pin number, its range differs from each chips, sf32lb55x: 0~5, others: 0~1

  • mode – pin wakeup mode, 0: high level, 1: low level, 2: positive edge, 3: negative edge

Return values:

status

HAL_StatusTypeDef HAL_PMU_DisablePinWakeup(uint8_t pin)

Disable pin wakeup for hibernate.

Parameters:
  • pin – pin number, range: 0~5

Return values:

status

HAL_StatusTypeDef HAL_PMU_EnableRtcWakeup(void)

Enable RTC wakeup for hibernate.

Return values:

status

HAL_StatusTypeDef HAL_PMU_DisableRtcWakeup(void)

Disable RTC wakeup for hibernate.

Return values:

status

void HAL_PMU_EnterHibernate(void)

Make system enter hibernate mode.

The function would wait for hibernation and not return. System can be woken up RTC and PIN precisely

Return values:

void

void HAL_PMU_EnterShutdown(void)

Make system enter shutdown mode.

The function would wait for shutdown and not return. System can be woken up RTC and PIN, but RTC wakeup time is not accurate.

Return values:

void

HAL_StatusTypeDef HAL_PMU_CheckBootMode(PMU_BootModeTypeDef *boot_mode, uint32_t *wakeup_src)

Check PMU boot mode.

It should be called only once after boot. PMU status would be cleared afterwards.

Parameters:
Return values:

status

HAL_StatusTypeDef HAL_PMU_EnableXTAL32(void)

Enable XTAL32K.

Return values:

status

HAL_StatusTypeDef HAL_PMU_DisableXTAL32(void)

Disable XTAL32K.

Return values:

status

HAL_StatusTypeDef HAL_PMU_RC10Kconfig(void)

Update RC10K configuration.

It should be called only once after boot. It will optimize RC10K performance for each chip.

Return values:

status

HAL_StatusTypeDef HAL_PMU_LXTReady(void)

Check whether Low power crystal is ready.

Return values:

status

HAL_StatusTypeDef HAL_PMU_EnableRC32K(int enable)

Enable RC32K.

Parameters:
  • enable[in] 1: enable RC32K , 0: disable RC32K

Return values:

status

HAL_StatusTypeDef HAL_PMU_RC32KReady(void)

Check whether rc32k is ready.

Return values:

status

HAL_StatusTypeDef HAL_PMU_LpCLockSelect(PMU_LpClockTypeDef lp_clock)

Select low power clock.

Parameters:
  • lp_clock[in] low power clock source

Return values:

status

HAL_StatusTypeDef HAL_PMU_EnableRC48(void)

Enable RC48M.

Return values:

status

HAL_StatusTypeDef HAL_PMU_EnableBuck2(void)

Enable BUCK2.

Return values:

status

HAL_StatusTypeDef HAL_PMU_EnableDLL(int enable)

Enable DLL buf, need by all DLLs, need to turn off when go low power, but need to make sure all DLL is turned off.

Parameters:
  • enable[in] 1: enable DLL , 0: disable DLL

Return values:

status

HAL_StatusTypeDef HAL_PMU_EnableAudio(int enable)

Enable audio buf, need to turn off when go low power.

Parameters:
  • enable[in] 1: enable Audio , 0: disable Audio

Return values:

status

void HAL_PMU_Reboot(void)

Reboot system.

Not support by Z0. The function would wait for reboot and not return. Need to call HAL_PMU_CheckBootMode to clear reboot bit after reboot. Boot mode is cold boot for reboot.

Return values:

void

void HAL_PMU_SET_HXT_CBANK(uint32_t value)

Set CABANK SEL after crystal calibration.

Parameters:
  • value[in] HXT CBANK register value

Return values:

void

void HAL_PMU_SetWdt(uint32_t instance)

Enable watchdog as reboot cause.

Parameters:
  • instance[in] Base address of watch dog

Return values:

void

HAL_StatusTypeDef HAL_PMU_ChgInit(PMU_ChgHandleTypeDef *handle, PMU_ChgCalParamTypeDef *cal_param)

Init charger.

This function shoud be called before other APIs

Parameters:
  • handle[in] charger handle

  • cal_param[in] calibration param

Return values:

status

HAL_StatusTypeDef HAL_PMU_ChgEnable(PMU_ChgHandleTypeDef *handle, bool en)

Enable or disable charger.

Parameters:
  • handle[in] charger handle

  • en[in] true: enable charger, false: disable charger

Return values:

status

uint32_t HAL_PMU_ChgConfigCcCurrent(PMU_ChgHandleTypeDef *handle, uint32_t current)

Configure charger CC current.

Parameters:
  • handle[in] charger handle

  • current[in] CC current in mA

Return values:

actual – CC current configured to charger

float HAL_PMU_ChgConfigPreCcCurrent(PMU_ChgHandleTypeDef *handle, float current)

Configure PRECC current.

Parameters:
  • handle[in] charger handle

  • current[in] PRECC current in mA

Return values:

actual – PRECC current configured to charger

uint32_t HAL_PMU_ChgConfigTargetVolt(PMU_ChgHandleTypeDef *handle, uint32_t volt_mv)

Configure charging full target voltage.

Parameters:
  • handle[in] charger handle

  • volt_mv[in] target voltage in mV

Return values:

actual – target voltage(mV) configured to charger

uint32_t HAL_PMU_ChgConfigRepVolt(PMU_ChgHandleTypeDef *handle, uint32_t volt_mv)

Configure charging REP voltage.

Parameters:
  • handle[in] charger handle

  • volt_mv[in] rep voltage in mV

Return values:

actual – rep voltage(mV) configured to charger

uint32_t HAL_PMU_ChgConfigVbatHighVolt(PMU_ChgHandleTypeDef *handle, uint32_t volt_mv)

Configure charging vbat high voltage.

Parameters:
  • handle[in] charger handle

  • volt_mv[in] vbat high voltage in mV

Return values:

actual – vbat high voltage(mV) configured to charger

HAL_StatusTypeDef HAL_PMU_ChgConfigIRQ(PMU_ChgHandleTypeDef *handle, PMU_ChgIrqStatusTypeDef irq, PMU_ChgIrqTrigModeTypeDef trig_mode)

Enable/disable IRQ in specified trig mode.

Parameters:
  • handle[in] charger handle

  • irq[in] irq needs to be enabled or disabled

  • trig_mode[in] irq trig mode or disable

Return values:

status

void HAL_PMU_ChgRegisterCallback(PMU_ChgHandleTypeDef *handle, PMU_ChgCallbackTypeDef callback)

Register charger IRQ callback which is called when IRQ is triggered.

Parameters:
  • handle[in] charger handle

  • callback[in] callback

Return values:

actual – rep voltage(mV) configured to charger

HAL_StatusTypeDef HAL_PMU_IRQHandler(PMU_ChgHandleTypeDef *handle)

PMU IRQ Handler.

It should be callbed by IRQ handler registered in vector table

Parameters:
  • handle[in] charger handle

Return values:

status

int8_t HAL_PMU_ChgReadStatus(PMU_ChgHandleTypeDef *handle, PMU_ChgIrqStatusTypeDef irq)

Read raw charger event status.

Parameters:
  • handle[in] charger handle

  • irq[in] event type

Return values:

event – status, 0 or 1

HAL_StatusTypeDef HAL_PMU_ChgStartForceCharging(PMU_ChgHandleTypeDef *handle)

Start force charging.

HAL_PMU_ChgStopForceCharging should be called to stop force charging completely.

Parameters:
  • handle[in] charger handle

Return values:

status

HAL_StatusTypeDef HAL_PMU_ChgSuspendForceCharging(PMU_ChgHandleTypeDef *handle)

Suspend force charging.

Charging is stopped temporarily, but force control is not disbled. HAL_PMU_ChgStopForceCharging should be called to disable force control completely.

Parameters:
  • handle[in] charger handle

Return values:

status

HAL_StatusTypeDef HAL_PMU_ChgResumeForceCharging(PMU_ChgHandleTypeDef *handle)

Resume force charging.

Parameters:
  • handle[in] charger handle

Return values:

status

HAL_StatusTypeDef HAL_PMU_ChgStopForceCharging(PMU_ChgHandleTypeDef *handle)

Stop force charging.

Parameters:
  • handle[in] charger handle

Return values:

status

HAL_PMU_ChgHwStateTypeDef HAL_PMU_ChgGetHwState(PMU_ChgHandleTypeDef *handle)

Read hardware state.

Parameters:
  • handle[in] charger handle

Return values:

hardware – state

uint8_t HAL_PMU_ChgConfigEocCc(PMU_ChgHandleTypeDef *handle, uint8_t percent)

Configure EOC Current.

Parameters:
  • handle[in] charger handle

  • percent[in] percentage of CC Curent, e.g. 10 is 10% of CC Current range: [4, 36]

Return values:

actual – percentage, 0 for invalid input

HAL_StatusTypeDef HAL_PMU_ConfigPeriLdo(PMU_PeriLdoTypeDef ldo, bool en, bool wait)

Open and close peripheral LDO.

Parameters:
  • ldo[in] which LDO needs to be opened or closed

  • en[in] true: open, false: close

  • wait[in] true: wait for stable, false: no wait for stable

Return values:

hal – status

void HAL_PMU_LoadCalData(void)

Load PMU calibration data to PMU register.

Returns:

void

HAL_StatusTypeDef HAL_PMU_GetHpsysVoutRef(uint8_t *vout_ref)

Get HPSYS LDO (1.1V) calibration data.

Parameters:
  • vout_ref[inout] pointer to data

Return values:

hal – status

HAL_StatusTypeDef HAL_PMU_GetHpsysVoutRef2(uint8_t *vout_ref)

Get HPSYS LDO (1.2V) calibration data.

Parameters:
  • vout_ref[inout] pointer to data

Return values:

hal – status

void HAL_PMU_Init(void)

Init PMU.

Return values:

void

struct PMU_ChgCalParamTypeDef
#include <bf0_hal_pmu.h>

Charger Calibration Parameters

Public Members

uint8_t cc_mn
uint8_t cc_mp
uint8_t bg
uint8_t cv_vctrl
uint8_t rep_vctrl
uint8_t vbat_step

0.25mV one code

struct __PMU_ChgHandleTypeDef
#include <bf0_hal_pmu.h>

Charger Handle Structure Definition

Public Members

HAL_PMU_ChgStateTypeDef state
uint8_t cv_vctrl
float vbat_step
PMU_ChgCallbackTypeDef callback