7.27. 电源管理(PMU)

7.27.1. 概述

PMU(电源管理控制单元 Power Management Unit),顾名思义,用于管理芯片各个电源。本文主要介绍芯片电源架构和各个电源的开关/档位配置等说明。

7.27.1.1. 主电源简要框图

                              VBAT
             ┌─────────────────┼─────────────────┐
             │                 │                 │
        IOVDDM(VDDIOM)   IOVDDW(VDDIOW)     VDC14(DCDC)
             │                 │                 │
             └────────┬────────┘                 │
                      │                          │
                 IOVDD(VDDIO)                    │
                      │                          │
        ┌──────┬──────┼──────┬──────┐            │
       LDO    LDO    SW     SW      |            |
        │      │      │      │      │            │
     AVDD18  AVDD28  FSPG   SDPG  VDC14(LDO)     │
                                    │            │
                                    └─────┬──────┘
                                        DCVDD
                                          │
                                         LDO
                                          │
                                         DVDD

注:
1、上图所示电源都可由内部产生,也可由外部灌电进去供电提高稳定性。
2、SW —— 开关

7.27.1.2. 主电源说明

PMU
 ├── DVDD        ── 内核电源(又名SYSVDD)
 ├── DCVDD       ── 外设电源(又名VDC14),给蓝牙、Wi‑Fi、PLL等供电
 ├── IOVDD       ── IO电源(又名VDDIO)
 │    ├── IOVDDM ── 主IO电源(又名VDDIOM,系统工作时使用)
 │    └── IOVDDW ── 弱IO电源(又名VDDIOW,低功耗soff/pdown时使用)
 ├── AVDD18      ── 1.8V电源
 ├── AVDD28      ── 2.8V电源
 ├── FSPG        ── Flash power gate
 └── SDPG        ── SD power gate

7.27.1.3. 其他电源说明

电源

描述

内/外供电

WFVDD14

WIFI/蓝牙模块的电源

需外供

WFVDD33

WIFI/蓝牙模块的电源

需外供

RTCVDD

RTC模块电源

需外供

AVD12

MIPI模块电源

内部电源,需外挂电容

IOVDD2

PE10~PE15电源域

需外供

IOVDD3

PA00~PA11电源域

需外供

USBAVDD

USB模块电源

需外供

USBAVDD一般直接短接到IOVDD,封装片可能会在封装时直接内部打线短接到IOVDD

相关头文件

文件路径

说明

include_lib/drive r/cpu/wl83/asm/power/power_api.h

PMU 电源接口、power_param_t 结构体定义

include_lib/driver/ cpu/wl83/asm/power/p33/p33_api.h

P33 寄存器接口、各电源域电压枚举定义

include_lib/driver/cpu/wl83 /asm/power/p33/vdd/avdd_config.h

AVDD18/AVDD28 使能/关闭 API


7.27.2. 电源配置

电源管理配置结构体:

typedef struct {
    //*****************************************************
    /* power */
    u8 vddiom_lev;          //vddiom,系统工作时使用(使用enum VDDIOM_VOL配置)
    u8 vddiow_lev;          //vddiow,系统低功耗时使用(使用enum VDDIOW_VOL配置)
    u8 vdc14_lev;           //vdc14档位配置,对应DCVDD电压
    u8 sysvdd_lev;          //sysvdd档位配置,对应DVDD电压
    u8 avdd18_lev;          //avdd18电压档位 0-1.8V、1-1.5V、2-1.6V、3-1.7V、4-1.8V、
    //                                               5-1.9V、6-2.0V、7-2.1V、8-2.2V
    u8 avdd28_lev;          //avdd28电压档位 0-2.8V、1-2.5V、2-2.6V、3-2.7V、4-2.8V、
    //                                               5-2.9V、6-3.0V、7-3.1V、8-3.2V
    u8 avdd18_enable;       //avdd18使能开关
    u8 avdd28_enable;       //avdd28使能开关
    u8 soff_keep_last_cfg;  //软关机时维持最后设置的(DVDD、DCVDD)电压档位配置

    /* pdown */
    u8 ana_keep0_config;    //pdown keep config
    u8 pdown_keep_osc;      //pdown keep osc
    u8 pdown_keep_fspg;     //pdown keep FSPG
    u8 pdown_dcv_mode;      //pdown(keep osc时)使用的DCVDD电源类型

    /* soff */
    u8 config;                               //低功耗使能,蓝牙&&系统空闲可进入低功耗(使用LOWPOWER_CONFIG配置)
    u8 osc_type;                     //低功耗晶振类型(使用enum LOWPOWER_OSC_TYPE配置)
    u8 lptmr_flow;                   //低功耗参数由用户配置
    u32 btosc_hz;                    //蓝牙晶振频率(默认使用24M)
    u32 osc_delay_us;                //低功耗晶振起振延时,为预留配置。

    u32 pdown_sdr_dly_us;   //pdown流程,sdram退出self refresh低功耗后的延时

    u32 t1;
    u32 t2;
    u32 t3;
    u32 t4;
} power_param_t;

board_develop.c 典型配置

static const power_param_t power_param = {
    .config                 = TCFG_LOWPOWER_FUNCTION,      // 低功耗使能
    .btosc_hz               = 24000000,                    // 蓝牙晶振 24MHz
    .vddiom_lev             = TCFG_LOWPOWER_VDDIOM_LEVEL,  // MIOVDD 电压
    .vddiow_lev             = TCFG_LOWPOWER_VDDIOW_LEVEL,  // WIOVDD 电压
    .vdc14_lev              = TCFG_LOWPOWER_VDC14_LEVEL,   // DCVDD 电压
    .osc_type               = TCFG_LOWPOWER_OSC_TYPE,      // 低功耗晶振类型
    .osc_delay_us           = 8000,                        // 晶振起振延时 8ms
    .pdown_keep_osc         = 1,                           // pdown 保持晶振
#if TCFG_POWER_AVDD18_ENABLE
    .avdd18_enable          = 1,                           // AVDD18 使能
#endif
#if TCFG_POWER_AVDD28_ENABLE
    .avdd28_enable          = 1,                           // AVDD28 使能
#endif
};

board_develop_*.h 典型宏配置

#define TCFG_LOWPOWER_VDDIOM_LEVEL    VDDIOM_VOL_330V   // 强VDDIO电压档位(不要高于外部DCDC电压)
#define TCFG_LOWPOWER_VDDIOW_LEVEL    VDDIOW_VOL_200V   // 弱VDDIO电压档位
#define TCFG_LOWPOWER_VDC14_LEVEL     DCVDD_VOL_155V    // DCVDD电压档位
#define TCFG_POWER_AVDD18_ENABLE      0                 // AVDD18 使能
#define TCFG_POWER_AVDD28_ENABLE      0                 // AVDD28 使能
#define TCFG_LOWPOWER_FUNCTION        LOWPOWER_CLOSE    // 低功耗使能
#define TCFG_LOWPOWER_OSC_TYPE        OSC_TYPE_LRC      // 低功耗晶振类型

7.27.3. DVDD

DVDD 为芯片内核电源。

注意: 为增强系统稳定性,我们要求DVDD电源短接DCVDD,由DCVDD 1.4V直接供电。因此该电源档位,一般不建议开发者修改配置。

电压档位范围:0.93V ~ 1.38V,步进 0.03V,共 16 档。

枚举值

电压

DVDD_VOL_093V

0.93V

DVDD_VOL_096V

0.96V

DVDD_VOL_099V

0.99V

DVDD_VOL_102V

1.02V

DVDD_VOL_105V

1.05V

DVDD_VOL_108V

1.08V

DVDD_VOL_111V

1.11V

DVDD_VOL_114V

1.14V

DVDD_VOL_117V

1.17V

DVDD_VOL_120V

1.20V

DVDD_VOL_123V

1.23V

DVDD_VOL_126V

1.26V

DVDD_VOL_129V

1.29V

DVDD_VOL_132V

1.32V

DVDD_VOL_135V

1.35V

DVDD_VOL_138V

1.38V

power_param_t 配置字段

字段

类型

说明

sysvdd_lev

u8

DVDD 电压挡位(使用 dvdd_vol_t 枚举配置)

默认不需要配置.sysvdd_lev,应用层将直接使用uboot阶段的配置。如果应用层配置了.sysvdd_lev,那么程序将在应用层power_init()时修改DVDD档位。

UBOOT阶段电源配置

在uboot阶段的DVDD档位配置,可通过如下配置项配置。无特殊情况,请使用公版默认配置。

DVDD_LEV=0; [uboot阶段DVDD电压档位: 0-默认1.29V,
             1-0.93V, 2-0.96V, 3-0.99V, 4-1.02V, 5-1.05V, 6-1.08V, 7-1.11V, 8-1.14V,
             9-1.17V,10-1.20V,11-1.23V, 12-1.26V,13-1.29V,14-1.32V,15-1.35V,16-1.38V]

7.27.4. DCVDD

DCVDD 通过内部 LDO 为DVDD供电,并且为蓝牙、WIFI、PLL等供电。有LDO和DCDC两个模式可配。

注意: 为增强系统稳定性,我们要求DVDD电源短接DCVDD,由DCVDD 1.4V直接供电。因此该电源档位,一般不建议开发者修改配置。

板级配置宏

#define TCFG_POWER_MODE              PWR_DCDC15
#define TCFG_LOWPOWER_VDC14_LEVEL    DCVDD_VOL_155V

电压档位范围:1.25V ~ 1.60V,步进 0.05V,共 8 档

枚举值

电压

DCVDD_VOL_125V

1.25V

DCVDD_VOL_130V

1.30V

DCVDD_VOL_135V

1.35V

DCVDD_VOL_140V

1.40V

DCVDD_VOL_145V

1.45V

DCVDD_VOL_150V

1.50V

DCVDD_VOL_155V

1.55V

DCVDD_VOL_160V

1.60V

power_param_t 配置字段

字段

类型

说明

vdc14_lev

u8

DCVDD 电压挡位(使用 dcvdd_vol_t 枚举配置)

工作模式配置

通过power_set_mode()配置工作模式,参数使用 power_mode_t 枚举配置(仅支持PWR_LDO15PWR_DCDC15两种模式)。

由于LDO模式带载能力较差,并且发热严重,因此一般只在芯片上电初期才工作在LDO模式,如果DCVDD不是外部电源供电,那么应用层应配置其工作在DCDC模式。

  • 模式电路差异:

模式

SW脚

LDO模式

悬空

DCDC模式

需外挂电感+滤波电容

  • 配置位置参考:

// board_develop_xxxx.h
#define TCFG_POWER_MODE              PWR_DCDC15

// board_develop.c
void power_early_flowing(void)
{
// ...
    power_set_mode(TCFG_POWER_MODE);
// ...
}

UBOOT阶段电源配置

在uboot阶段的DCVDD电源配置,可通过如下配置项配置。无特殊情况,请使用公版默认配置。

DCVDD_LEV=0;[uboot阶段DCVDD电压档位: 0-默认1.4V,1-1.25V,2-1.30V,3-1.35V,4-1.40V,5-1.45V,6-1.50V,7-1.55V,8-1.60V]
VDC14_MODE=0;[uboot阶段VDC14工作模式: 0-DCDC模式,1-LDO模式]

7.27.5. IOVDD

IOVDD 为芯片 IO 电源域。另有IOVDD2IOVDD3分别为PE10~PE15PA00~PA11的电源域。从电源框图可以看出,IOVDD内部有两个LDO,分别为IOVDDMIOVDDW

注意:为保证芯片稳定,我们要求芯片IOVDDM档位设置至少3.0V档以上。

IOVDDM和IOVDDW说明

电源

生效阶段

IOVDDM

芯片开机运行时由强LDO输出

IOVDDW

低功耗状态(soff或者pdown)由弱LDO输出

IOVDD2和IOVDD3说明

比如IOVDD2IOVDD3供电电压2.8V,该电源域对应的IO高电平电压也就为2.8V。如果无特殊IO电压需求,IOVDD2IOVDD3一般直接PCB走线短接到IOVDD。部分封装片不会出现这两个口,会在封装时直接内部打线短接到IOVDD

板级配置宏

#define TCFG_LOWPOWER_VDDIOM_LEVEL    VDDIOM_VOL_330V  // 强VDDIO电压档位
#define TCFG_LOWPOWER_VDDIOW_LEVEL    VDDIOW_VOL_200V  // 弱VDDIO电压档位

IOVDDM电压档位范围:2.4V ~ 3.4V,共 8 档。

枚举值

电压

VDDIOM_VOL_240V

2.4V

VDDIOM_VOL_280V

2.8V

VDDIOM_VOL_290V

2.9V

VDDIOM_VOL_300V

3.0V

VDDIOM_VOL_310V

3.1V

VDDIOM_VOL_320V

3.2V

VDDIOM_VOL_330V

3.3V

VDDIOM_VOL_340V

3.4V

IOVDDW电压档压范围:2.0V ~ 3.2V,共 4 档

枚举值

电压

VDDIOW_VOL_200V

2.0V

VDDIOW_VOL_240V

2.4V

VDDIOW_VOL_280V

2.8V

VDDIOW_VOL_320V

3.2V

power_param_t 配置字段

字段

类型

说明

vddiom_lev

u8

系统工作时 IO 电压挡位(使用 vddiom_vol_t 枚举配置)

vddiow_lev

u8

系统低功耗时 IO 电压挡位(使用 vddiow_vol_t 枚举配置)


7.27.6. AVDD18

AVDD18 为内部可输出1.5V~2.2V的LDO电源,可供摄像头供电使用。如果不开启该电源模块,可将其输出口作为一个特殊IO使用,对应IO_PORT_PV_01,详见GPIO章节。

板级配置宏

#define TCFG_POWER_AVDD18_ENABLE    0   // 0=关闭,1=使能

电压范围:1.5V ~ 2.2V,共 8档

枚举值

电压

AVDD18_VOL_DEFAULT

1.8V

AVDD18_VOL_150V

1.5V

AVDD18_VOL_160V

1.6V

AVDD18_VOL_170V

1.7V

AVDD18_VOL_180V

1.8V

AVDD18_VOL_190V

1.9V

AVDD18_VOL_200V

2.0V

AVDD18_VOL_210V

2.1V

AVDD18_VOL_220V

2.2V

power_param_t 配置字段

字段

类型

说明

avdd18_lev

u8

AVDD18 电压档位

avdd18_enable

u8

AVDD18 使能(1=使能,0=关闭)

API 接口

如果开发者需要手动操作,可调用如下接口:

/**
 * @brief AVDD18使能(分两步操作)
 * @param level  电压档位 0-1.8V、1-1.5V、2-1.6V、3-1.7V、4-1.8V、
 *                            5-1.9V、6-2.0V、7-2.1V、8-2.2V
 * @param step   1:第一步  2:第二步(第一步后需延时100us)
 */
void avdd18_enable(u8 level, u8 step);

/** @brief 关闭AVDD18 */
void avdd18_disable(void);
avdd18_enable(4, 1);
delay_us(100);
avdd18_enable(4, 2);

7.27.7. AVDD28

AVDD28 为内部可输出2.5V~3.2V的LDO电源,可供摄像头供电使用。如果不开启该电源模块,可将其输出口作为一个特殊IO使用,对应IO_PORT_PV_00,详见GPIO章节。

板级配置宏

#define TCFG_POWER_AVDD28_ENABLE    0   // 0=关闭,1=使能

电压范围:2.5V ~ 3.2V,共 8 档

枚举值

电压

AVDD28_VOL_DEFAULT

2.8V

AVDD28_VOL_250V

2.5V

AVDD28_VOL_260V

2.6V

AVDD28_VOL_270V

2.7V

AVDD28_VOL_280V

2.8V

AVDD28_VOL_290V

2.9V

AVDD28_VOL_300V

3.0V

AVDD28_VOL_310V

3.1V

AVDD28_VOL_320V

3.2V

power_param_t 配置字段

字段

类型

说明

avdd28_lev

u8

AVDD28 电压档位

avdd28_enable

u8

AVDD28 使能(1=使能,0=关闭)

API 函数

如果开发者需要手动操作,可调用如下接口:

/**
 * @brief AVDD28使能(分两步操作)
 * @param level  电压档位 0-2.8V、1-2.5V、2-2.6V、3-2.7V、4-2.8V、
 *                               5-2.9V、6-3.0V、7-3.1V、8-3.2V
 * @param step   1:第一步  2:第二步(第一步后需延时150us)
 */
void avdd28_enable(u8 level, u8 step);

/** @brief 关闭AVDD28 */
void avdd28_disable(void);
avdd28_enable(4, 1);
delay_us(150);
avdd28_enable(4, 2);

7.27.8. FSPG

FSPG 是主控专门给flash供电的电源口(本质上是IOVDD通过一个控制开关后的输出口)。FSPG源头为IOVDD,因此电压由IOVDD决定。

注意:

  • FSPG 开机阶段必打开,在应用层阶段可以通过命令控制关闭。因此如果配置了关闭FSPG,在开机阶段仍然可以看到FSPG有段时间输出高电平。

  • 部分封装片的PC13FSPG合绑到一个引脚,这时该引脚受FSPG影响,开机阶段会输出高电平,因此PC13在分配IO时有局限性。

控制命令

PCONTROL_FLASH_PG_VDDIO — 0: app阶段保持FSPG输出,1: app阶段关闭FSPG输出。未使用命令配置,则默认为0。

该命令调用位置参考如下:

static void board_power_init(void)
{
// ...
    power_control(PCONTROL_FLASH_PG_VDDIO , 1); // 该命令必须在power_init()前调用。
    power_init(&power_pdata);
// ...
}

power_param_t 配置字段

字段

类型

说明

pdown_keep_fspg

u8

pdown 状态时是否保持 FSPG电源组(1=保持,0=关闭)


7.27.9. SDPG

SDPG 是主控专门给SD卡供电的电源口。SDPG源头为IOVDD,因此电压由IOVDD决定。SDPG 为IO口PD08的原生功能,因此每个有PD08的封装都支持。

API 函数

SDPG可通过底层接口sd_set_power()控制输出状态。一般sd_set_power()直接传递指针.power 供底层调用即可。

// 下面不同宏代表不同的输出状态/带载能力
#define SDPG_IO_HI_Z                            0    // 高阻态
#define SDPG_IO_OUTPUT_1                        1    // 输出高
#define SDPG_IO_OUTPUT_HD_HD0                   2    // 输出高 + IO强驱
#define SDPG_IO_OUTPUT_HD_HD0_SOFT_SDPGPOWER    3    // 输出高 + IO强驱 + SDPG慢加强带载
#define SDPG_IO_OUTPUT_HD_HD0_HW_SDPGPOWER      4    // 输出高 + IO强驱 + SDPG最强带载
#define SDPG_IO_OUTPUT_0                        0xf  // 输出低

void sd_set_power(u8 enable);  // SD电源组控制开关,enable参数使用上面的宏。

板级配置宏

#define TCFG_SD0_POWER_ENABLE    0   // SD0 电源使能,0=关闭,1=使能
#define TCFG_SD1_POWER_ENABLE    0   // SD1 电源使能,0=关闭,1=使能

TCFG_SD0_POWER_ENABLE /TCFG_SD1_POWER_ENABLE为 1 时,板级配置中 .power = sd_set_power 被注册。如果开发者不使用SDPG给SD卡供电,有自己的控制电路,但需要使用底层驱动的控制逻辑(比如低功耗逻辑),可自行实现控制接口后,传递给.power

// .power定义
void (*power)(u8 on);

7.27.10. API参考

Defines

AT_VOLATILE_RAM_POWER
AT_VOLATILE_RAM_CODE_POWER

Enums

enum lowpower_config_t

Values:

enumerator LOWPOWER_CLOSE
enumerator SLEEP_EN
enumerator DEEP_SLEEP_EN
enum lowpower_osc_type

Values:

enumerator OSC_TYPE_LRC
enumerator OSC_TYPE_BT_OSC
enumerator OSC_TYPE_NULL
enum vddio_keep_t

Values:

enumerator VDDIO_KEEP_TYPE_NULL
enumerator VDDIO_KEEP_TYPE_NORMAL
enumerator VDDIO_KEEP_TYPE_TRIM
enumerator VDDIO_KEEP_TYPE_PG
enum power_control_cmd_t

Values:

enumerator PCONTROL_POWER_DRIVER_RESERVE
enumerator PCONTROL_P_PUTBYTE
enumerator PCONTROL_POWER_MODE
enumerator PCONTROL_DCVDD_CAP_SW
enumerator PCONTROL_FLASH_PG_VDDIO
enumerator PCONTROL_RTC_CLK
enumerator PCONTROL_PD_VDDIO_KEEP
enumerator PCONTROL_PD_WDVDD_LEV
enumerator PCONTROL_PD_DVDD_LEV
enumerator PCONTROL_PD_KEEP_LPCTMU
enumerator PCONTROL_SF_KEEP_LRC
enumerator PCONTROL_SF_VDDIO_KEEP
enumerator PCONTROL_SF_KEEP_NVDD
enumerator PCONTROL_SF_KEEP_PVDD
enumerator PCONTROL_SF_KEEP_VCM_DET
enumerator PCONTROL_PHW_RESERVE
enumerator PCONTROL_P33_RESERVE
enumerator PCONTROL_P11_RESERVE
enumerator PCONTROL_LP_FLOW_IC_RESERVE

Functions

void power_early_init(u32 arg)
void power_later_init(u32 arg)
void power_init(const power_pdata_t *pdata)
u32 power_control(power_control_cmd_t cmd, u32 arg)
void low_power_sys_request(void *priv)
s32 low_power_trace_drift(u32 usec)
void low_power_reset_osc_type(u8 type)
u8 low_power_get_default_osc_type(void)
u8 low_power_get_osc_type(void)
void power_set_soft_poweroff(u32 ms)
void mask_softflag_config(struct boot_soft_flag_t *softflag)
struct power_param_t

Public Members

u8 vddiom_lev
u8 vddiow_lev
u8 vdc14_lev
u8 sysvdd_lev
u8 avdd18_lev
u8 avdd28_lev
u8 avdd18_enable
u8 avdd28_enable
u8 config
u8 osc_type
u8 lptmr_flow
u32 btosc_hz
u32 osc_delay_us
u32 t1
u32 t2
u32 t3
u32 t4
struct power_pdata_t

Public Members

const power_param_t *power_param

Enums

enum dvdd_vol_t

Values:

enumerator DVDD_VOL_093V
enumerator DVDD_VOL_096V
enumerator DVDD_VOL_099V
enumerator DVDD_VOL_102V
enumerator DVDD_VOL_105V
enumerator DVDD_VOL_108V
enumerator DVDD_VOL_111V
enumerator DVDD_VOL_114V
enumerator DVDD_VOL_117V
enumerator DVDD_VOL_120V
enumerator DVDD_VOL_123V
enumerator DVDD_VOL_126V
enumerator DVDD_VOL_129V
enumerator DVDD_VOL_132V
enumerator DVDD_VOL_135V
enumerator DVDD_VOL_138V
enum dcvdd_vol_t

Values:

enumerator DCVDD_VOL_125V
enumerator DCVDD_VOL_130V
enumerator DCVDD_VOL_135V
enumerator DCVDD_VOL_140V
enumerator DCVDD_VOL_145V
enumerator DCVDD_VOL_150V
enumerator DCVDD_VOL_155V
enumerator DCVDD_VOL_160V
enum vddiom_vol_t

Values:

enumerator VDDIOM_VOL_240V
enumerator VDDIOM_VOL_280V
enumerator VDDIOM_VOL_290V
enumerator VDDIOM_VOL_300V
enumerator VDDIOM_VOL_310V
enumerator VDDIOM_VOL_320V
enumerator VDDIOM_VOL_330V
enumerator VDDIOM_VOL_340V
enum vddiow_vol_t

Values:

enumerator VDDIOW_VOL_200V
enumerator VDDIOW_VOL_240V
enumerator VDDIOW_VOL_280V
enumerator VDDIOW_VOL_320V
enum wvdd_vol_t

Values:

enumerator WVDD_VOL_060V
enumerator WVDD_VOL_065V
enumerator WVDD_VOL_070V
enumerator WVDD_VOL_075V
enumerator WVDD_VOL_080V
enumerator WVDD_VOL_085V
enumerator WVDD_VOL_090V
enumerator WVDD_VOL_138V
enum avdd18_vol_t

Values:

enumerator AVDD18_VOL_DEFAULT
enumerator AVDD18_VOL_150V
enumerator AVDD18_VOL_160V
enumerator AVDD18_VOL_170V
enumerator AVDD18_VOL_180V
enumerator AVDD18_VOL_190V
enumerator AVDD18_VOL_200V
enumerator AVDD18_VOL_210V
enumerator AVDD18_VOL_220V
enum avdd28_vol_t

Values:

enumerator AVDD28_VOL_DEFAULT
enumerator AVDD28_VOL_250V
enumerator AVDD28_VOL_260V
enumerator AVDD28_VOL_270V
enumerator AVDD28_VOL_280V
enumerator AVDD28_VOL_290V
enumerator AVDD28_VOL_300V
enumerator AVDD28_VOL_310V
enumerator AVDD28_VOL_320V
enum lvd_mode_t

Values:

enumerator LVD_RESET_MODE
enumerator LVD_EXCEPTION_MODE
enumerator LVD_WAKEUP_MODE
enum lvd_vol_t

Values:

enumerator VLVD_SEL_190V
enumerator VLVD_SEL_200V
enumerator VLVD_SEL_210V
enumerator VLVD_SEL_220V
enumerator VLVD_SEL_230V
enumerator VLVD_SEL_240V
enumerator VLVD_SEL_250V
enumerator VLVD_SEL_260V
enum power_mode_t

Values:

enumerator PWR_NO_CHANGE
enumerator PWR_LDO33
enumerator PWR_LDO15
enumerator PWR_DCDC15
enum power_dcdc_t

Values:

enumerator PWR_DCDC12
enumerator PWR_DCDC18_DCDC12
enumerator PWR_DCDC18_DCDC12_DCDC09

Functions

void lvd_en(u8 en)
void lvd_config(lvd_vol_t vol, u8 expin_en, lvd_mode_t mode, void (*callback))
void gpio_longpress_pin0_reset_config(u32 pin, u32 level, u32 time, u32 release, u32 pull_enable)
void power_set_dcdc_type(power_dcdc_t type)
void power_set_mode(power_mode_t mode)
void adc_pmu_detect_en(u32 ch)

Functions

int avdd_port_pv_dir(int port, u8 dir)

设置PV口的方向

Parameters
  • gpio – 参考宏IO_PORT_PV_0X

  • dir – 1: 输入 0: 输出

Returns

0: 成功 非0: 失败

int avdd_port_pv_read(int port)

获取PV口输入电平

Parameters

gpio – 参考宏IO_PORT_PV_0X

Returns

0: 低电平 1: 高电平

int avdd_port_pv_out(int port, u8 on)

设置PV口的输出电平

Parameters
  • gpio – 参考宏IO_PORT_PV_0X

  • on – 1: 高电平 0: 低电平

Returns

0: 成功 非0: 失败

int avdd_port_pv_hd(int port, u8 on)

设置PV口的强驱

Parameters
  • gpio – 参考宏IO_PORT_PV_0X

  • on – 1: 打开 0: 关闭

Returns

0: 成功 非0: 失败

int avdd_port_pv_pu(int port, u8 on)

设置PV口的上拉电阻

Parameters
  • gpio – 参考宏IO_PORT_PV_0X

  • on – 1: 打开 0: 关闭

Returns

0: 成功 非0: 失败

int avdd_port_pv_pd(int port, u8 on)

设置PV口的下拉电阻

Parameters
  • gpio – 参考宏IO_PORT_PV_0X

  • on – 1: 打开 0: 关闭

Returns

0: 成功 非0: 失败

int avdd_port_pv_die(int port, u8 on)

设置PV口的数字输入功能

Parameters
  • gpio – 参考宏IO_PORT_PV_0X

  • on – 1: 打开 0: 关闭

Returns

0: 成功 非0: 失败