bf0_hal_pmu.h

Header file of RCC HAL module.

Author

Sifli software development team

Attention

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.

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

返回值:

None

HAL_PMU_SELECT_BLESYS_PWR(psw)

Select LPSYS Power Switch.

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

返回值:

None

HAL_PMU_SET_BG1_VREF12(val)

Config bandgap1 VREF12.

参数:
  • val[in] vandgap1 vref12 value

返回值:

None

HAL_PMU_SET_HPSYS_LDO_VREF(val)

Config HPSYS LDO VREF.

参数:
  • val[in] HPSYS LDO VREF value

返回值:

None

HAL_PMU_SET_HPSYS_LDO_VREF2(val)

Config HPSYS LDO VREF2.

参数:
  • val[in] HPSYS LDO VREF2 value

返回值:

None

HAL_PMU_SET_BUCK1_CCH(val)

Config BUCK1 CCH.

参数:
  • val[in] BUCK1 CCH value

返回值:

None

HAL_PMU_HPSYS_POWER_OFF()

Turn off HCPU power switch entirely during standby.

返回值:

None

HAL_PMU_HPSYS_POWER_ON()

Turn off HCPU power switch entirely during standby.

返回值:

None

HAL_PMU_SWITCH_VRET()

Vret switch to 0.7v when standby.

返回值:

None

HAL_PMU_SWITCH_VRET_LOWER()

Vret switch to 0.65v when standby.

返回值:

None

HAL_PMU_SET_LDO_RDY_DELAY(delay)

Set the delay time of LDO ready.

返回值:

None

HAL_PMU_SET_HXT3_RDY_DELAY(delay)

Set the delay time of xTal48M ready.

返回值:

None

HAL_PMU_LXT_ENABLED()

Check weather LXT is enabled.

返回值:

True – if LXT enabled, False if using RC10k

HAL_PMU_LXT_DISABLED()

Check weather LXT is disabled.

返回值:

True – if using RC10k, False if using LXT

HAL_PMU_CLEAR_WSR(wsr)

Clear PMU wakeup source register.

参数:
  • wsr[in]

返回值:

wsr – wakeup source register value

HAL_PMU_GET_WSR()

Get wakeup source.

返回值:

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.

参数:
  • 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

返回值:

status

HAL_StatusTypeDef HAL_PMU_DisablePinWakeup(uint8_t pin)

Disable pin wakeup for hibernate.

参数:
  • pin – pin number, range: 0~5

返回值:

status

HAL_StatusTypeDef HAL_PMU_EnableRtcWakeup(void)

Enable RTC wakeup for hibernate.

返回值:

status

HAL_StatusTypeDef HAL_PMU_DisableRtcWakeup(void)

Disable RTC wakeup for hibernate.

返回值:

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

返回值:

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.

返回值:

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.

参数:
返回值:

status

HAL_StatusTypeDef HAL_PMU_EnableXTAL32(void)

Enable XTAL32K.

返回值:

status

HAL_StatusTypeDef HAL_PMU_DisableXTAL32(void)

Disable XTAL32K.

返回值:

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.

返回值:

status

HAL_StatusTypeDef HAL_PMU_LXTReady(void)

Check whether Low power crystal is ready.

返回值:

status

HAL_StatusTypeDef HAL_PMU_EnableRC32K(int enable)

Enable RC32K.

参数:
  • enable[in] 1: enable RC32K , 0: disable RC32K

返回值:

status

HAL_StatusTypeDef HAL_PMU_RC32KReady(void)

Check whether rc32k is ready.

返回值:

status

HAL_StatusTypeDef HAL_PMU_LpCLockSelect(PMU_LpClockTypeDef lp_clock)

Select low power clock.

参数:
  • lp_clock[in] low power clock source

返回值:

status

HAL_StatusTypeDef HAL_PMU_EnableRC48(void)

Enable RC48M.

返回值:

status

HAL_StatusTypeDef HAL_PMU_EnableBuck2(void)

Enable BUCK2.

返回值:

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.

参数:
  • enable[in] 1: enable DLL , 0: disable DLL

返回值:

status

HAL_StatusTypeDef HAL_PMU_EnableAudio(int enable)

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

参数:
  • enable[in] 1: enable Audio , 0: disable Audio

返回值:

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.

返回值:

void

void HAL_PMU_SET_HXT_CBANK(uint32_t value)

Set CABANK SEL after crystal calibration.

参数:
  • value[in] HXT CBANK register value

返回值:

void

void HAL_PMU_SetWdt(uint32_t instance)

Enable watchdog as reboot cause.

参数:
  • instance[in] Base address of watch dog

返回值:

void

HAL_StatusTypeDef HAL_PMU_ChgInit(PMU_ChgHandleTypeDef *handle, PMU_ChgCalParamTypeDef *cal_param)

Init charger.

This function shoud be called before other APIs

参数:
  • handle[in] charger handle

  • cal_param[in] calibration param

返回值:

status

HAL_StatusTypeDef HAL_PMU_ChgEnable(PMU_ChgHandleTypeDef *handle, bool en)

Enable or disable charger.

参数:
  • handle[in] charger handle

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

返回值:

status

uint32_t HAL_PMU_ChgConfigCcCurrent(PMU_ChgHandleTypeDef *handle, uint32_t current)

Configure charger CC current.

参数:
  • handle[in] charger handle

  • current[in] CC current in mA

返回值:

actual – CC current configured to charger

float HAL_PMU_ChgConfigPreCcCurrent(PMU_ChgHandleTypeDef *handle, float current)

Configure PRECC current.

参数:
  • handle[in] charger handle

  • current[in] PRECC current in mA

返回值:

actual – PRECC current configured to charger

uint32_t HAL_PMU_ChgConfigTargetVolt(PMU_ChgHandleTypeDef *handle, uint32_t volt_mv)

Configure charging full target voltage.

参数:
  • handle[in] charger handle

  • volt_mv[in] target voltage in mV

返回值:

actual – target voltage(mV) configured to charger

uint32_t HAL_PMU_ChgConfigRepVolt(PMU_ChgHandleTypeDef *handle, uint32_t volt_mv)

Configure charging REP voltage.

参数:
  • handle[in] charger handle

  • volt_mv[in] rep voltage in mV

返回值:

actual – rep voltage(mV) configured to charger

uint32_t HAL_PMU_ChgConfigVbatHighVolt(PMU_ChgHandleTypeDef *handle, uint32_t volt_mv)

Configure charging vbat high voltage.

参数:
  • handle[in] charger handle

  • volt_mv[in] vbat high voltage in mV

返回值:

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.

参数:
  • handle[in] charger handle

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

  • trig_mode[in] irq trig mode or disable

返回值:

status

void HAL_PMU_ChgRegisterCallback(PMU_ChgHandleTypeDef *handle, PMU_ChgCallbackTypeDef callback)

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

参数:
  • handle[in] charger handle

  • callback[in] callback

返回值:

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

参数:
  • handle[in] charger handle

返回值:

status

int8_t HAL_PMU_ChgReadStatus(PMU_ChgHandleTypeDef *handle, PMU_ChgIrqStatusTypeDef irq)

Read raw charger event status.

参数:
  • handle[in] charger handle

  • irq[in] event type

返回值:

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.

参数:
  • handle[in] charger handle

返回值:

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.

参数:
  • handle[in] charger handle

返回值:

status

HAL_StatusTypeDef HAL_PMU_ChgResumeForceCharging(PMU_ChgHandleTypeDef *handle)

Resume force charging.

参数:
  • handle[in] charger handle

返回值:

status

HAL_StatusTypeDef HAL_PMU_ChgStopForceCharging(PMU_ChgHandleTypeDef *handle)

Stop force charging.

参数:
  • handle[in] charger handle

返回值:

status

HAL_PMU_ChgHwStateTypeDef HAL_PMU_ChgGetHwState(PMU_ChgHandleTypeDef *handle)

Read hardware state.

参数:
  • handle[in] charger handle

返回值:

hardware – state

uint8_t HAL_PMU_ChgConfigEocCc(PMU_ChgHandleTypeDef *handle, uint8_t percent)

Configure EOC Current.

参数:
  • handle[in] charger handle

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

返回值:

actual – percentage, 0 for invalid input

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

Open and close peripheral LDO.

参数:
  • 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

返回值:

hal – status

void HAL_PMU_LoadCalData(void)

Load PMU calibration data to PMU register.

返回:

void

HAL_StatusTypeDef HAL_PMU_GetHpsysVoutRef(uint8_t *vout_ref)

Get HPSYS LDO (1.1V) calibration data.

参数:
  • vout_ref[inout] pointer to data

返回值:

hal – status

HAL_StatusTypeDef HAL_PMU_GetHpsysVoutRef2(uint8_t *vout_ref)

Get HPSYS LDO (1.2V) calibration data.

参数:
  • vout_ref[inout] pointer to data

返回值:

hal – status

void HAL_PMU_Init(void)

Init PMU.

返回值:

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