DPMU¶
DPMU模块主要负责芯片的模拟PMU的控制、时钟门控和复位、PLL、系统唤醒、IO引脚复用的切换控制等功能,该模块和SCU模块一起提供芯片的时钟控制等基本功能。因为系统模拟部分对芯片工作非常重要,不推荐用户自行配置,建议使用我司提供SDK中的默认配置,本文档不阐述模拟PMU相关的寄存器说明,仅针对复位、时钟门控、IO引脚复用等寄存器做说明。
DPMU寄存器映射¶
DPMU寄存器映射基地址为0x40030000,详见表DPMU-1。
偏移量 | 名称 | 位宽 | 类型 | 复位值 | 描述 |
---|---|---|---|---|---|
0x00 | CFG_LOCK_CFG | 32 | R/W | 0x00000000 | 配置锁定寄存器 |
0x10 | SYS_RESET_CFG | 32 | R/W | 0x00000000 | 系统复位配置寄存器 |
0x14 | SYS_SOFTRST_CFG | 32 | R/W | 0x00000000 | 系统软件复位配置寄存器 |
0x20 | SYS_CLK_SEL_CFG | 32 | R/W | 0x00000004 | 系统时钟选择配置寄存器 |
0x30 | PLL_CFG | 32 | R/W | 0x00001407 | PLL配置寄存器 |
0x34 | AON_CLK_PARAM_CFG | 32 | R/W | 0x00204080 | 时钟分频配置寄存器 |
0x40 | AON_CLK_PARAM_EN_CFG | 32 | R/W | 0x00000000 | 时钟分频使能配置寄存器 |
0x50 | AON_CLKGATE_CFG | 32 | R/W | 0x0000007F | 时钟门控配置寄存器 |
0x70 | AON_RESET_CFG | 32 | R/W | 0x0000001F | 复位配置寄存器 |
0x140 | IOREUSE_CFG0 | 32 | R/W | 0x00000000 | IO复用配置寄存器0 |
0x144 | IOREUSE_CFG1 | 32 | R/W | 0x00000000 | IO复用配置寄存器1 |
0x14C | OD_CFG0 | 32 | R/W | 0x00000000 | IO开漏状态配置寄存器0 |
0x150 | PD_CFG0 | 32 | R/W | 0x00000000 | IO下拉状态配置寄存器0 |
0x158 | PU_CFG0 | 32 | R/W | 0x00000000 | IO上拉状态配置寄存器0 |
0x160 | DS_CFG0 | 32 | R/W | 0x00000000 | IO驱动能力配置寄存器0 |
0x164 | DS_CFG1 | 32 | R/W | 0x00000000 | IO驱动能力配置寄存器1 |
0x190 | AD_CFG0 | 32 | R/W | 0x00000000 | IO复用AD配置寄存器0 |
0x194 | OD_CFG1 | 32 | R/W | 0x00000000 | IO开漏状态配置寄存器1 |
0x198 | PD_CFG1 | 32 | R/W | 0x00000000 | IO下拉状态配置寄存器1 |
0x19C | PU_CFG1 | 32 | R/W | 0x00000000 | IO上拉状态配置寄存器1 |
0x1A0 | DS_CFG2 | 32 | R/W | 0x00000000 | IO驱动能力配置寄存器2 |
0x1C0 | RST_STATE_REG | 32 | R/W | 0x00000001 | 复位状态寄存器 |
配置锁定寄存器(CFG_LOCK_CFG)¶
偏移量:0x00
复位值:0x00000000
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:0 | CFG_LOCK_CFG | 0x00000000 | R/W | 寄存器LOCK命令。软件配置其他寄存器时需先向此寄存器写0x51AC0FFE时解锁。读此寄存器时: 1:已解锁,可以写入; 0:未解锁,不能写入。 |
系统复位配置寄存器(SYS_RESET_CFG)¶
偏移量:0x10
复位值:0x00000000
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:10 | Reserved | 0 | R/W | Reserved |
9:8 | wwdg_rst_sel | 0 | R/W | WWDG模块检测到系统喂狗异常时的复位范围: 2’b10:复位全系统(PLL\CPU\外设\SCU内部时钟分频器被复位) 2’b11:复位系统总线(CPU\外设\SCU内部时钟分频器被复位) other value:无复位操作 |
7:6 | iwdg_rst_sel | 0 | R/W | IWDG模块检测到系统喂狗异常时的复位范围: 2’b10:复位全系统(PLL\CPU\外设\SCU内部时钟分频器被复位) 2’b11:复位系统总线(CPU\外设\SCU内部时钟分频器被复位) other value:无复位操作 |
5:4 | soft_rst_sel | 0 | R/W | 软件复位的复位范围: 2’b10:复位全系统(PLL\CPU\外设\SCU内部时钟分频器被复位) 2’b11:复位系统总线(CPU\外设\SCU内部时钟分频器被复位) other value:无复位操作 |
3:2 | Reserved | 0 | R/W | Reserved |
1:0 | cpu_rstreq_rst_sel | 0 | R/W | CPU内核发出复位请求时的复位范围: 2’b10:复位CPU内核 2’b11:复位系统总线(CPU\外设\SCU内部时钟分频器被复位) other value:无复位操作 |
系统软件复位配置寄存器(SYS_SOFTRST_CFG)¶
偏移量:0x14
复位值:0x00000000
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:0 | SOFT_SOFTRST_CFG | 0 | R/W | 为提供软件可操作的系统复位方式,设置此寄存器,当软件写入参数与固定特征值0xdeadbeef匹配时,产生软件复位请求 |
系统时钟选择配置寄存器(SYS_CLK_SEL_CFG)¶
偏移量:0x20
复位值:0x00000004
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:3 | Reserved | 0 | R/W | Reserved |
2 | sys_clk_sel | 0x1 | R/W | 系统时钟选择: 0:采用系统SRC时钟,该时钟来源由本寄存器1:0位的配置决定 1:PLL产生的时钟 |
1:0 | src_clk_sel | 0 | R/W | 系统SRC时钟来源选择: 2’b01:内部RC振荡器产生的时钟 2’b11:外部晶体振荡器产生的时钟 other:Reserved |
PLL配置寄存器(PLL_CFG)¶
偏移量:0x30
复位值:0x00001407
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:15 | Reserved | 0 | R/W | Reserved |
14 | BYPASS | 0x0 | R/W | PLL时钟bypass使能: 0:输出PLL处理(倍频、分频)后的时钟 1:输出PLL处理前的时钟 |
13:6 | M | 0x50 | R/W | PLL系数M |
5:2 | N | 0x1 | R/W | PLL系数N |
1:0 | OD | 0x3 | R/W | PLL系数OD |
PLL倍频频率可以按以下公式计算: PLL时钟 = 输入时钟 × M的值/N的值 × 1/NO 其中,NO = 2的(OD的值)次方
时钟分频配置寄存器(AON_CLK_PARAM_CFG)¶
偏移量:0x34
复位值:0x00204080
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:24 | Reserved | 0 | R/W | Reserved |
23:17 | timer_pwm_div | 0x10 | R/W | TIMER和PWM模块的时钟分频系数 |
16:10 | iwdg_div | 0x10 | R/W | IWDG模块时钟分频系数 |
9:6 | apb_div | 0x2 | R/W | APB总线时钟分频系数,该分频影响APB总线上的全部外设 |
5:0 | ipcore_div | 0x0 | R/W | IP内核时钟分频系数 |
时钟分频使能配置寄存器(AON_CLK_PARAM_EN_CFG)¶
偏移量:0x40
复位值:0x00000000
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:5 | Reserved | 0 | R/W | Reserved |
4 | timer_gpwm_div_en | 0x0 | R/W | TIMER和PWM模块时钟分频系数更新使能: 0:不更新 1:更新 该位配置为1生效后,自动清除为0 |
3 | iwdg_div_en | 0x0 | R/W | IWDG模块时钟分频系数更新使能: 0:不更新 1:更新 该位配置为1生效后,自动清除为0 |
2 | apb_div_en | 0x0 | R/W | APB总线时钟分频系数更新使能: 0:不更新 1:更新 该位配置为1生效后,自动清除为0 |
1 | ipcore_div_en | 0x0 | R/W | IP内核时钟分频系数更新使能: 0:不更新 1:更新 该位配置为1生效后,自动清除为0 |
0 | pll_cfg_en | 0x0 | R/W | PLL配置更新使能: 0:不更新 1:更新 该位配置为1生效后,自动清除为0 |
时钟门控配置寄存器(AON_CLKGATE_CFG)¶
偏移量:0x50
复位值:0x0000007F
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:6 | Reserved | 0x3 | R/W | Reserved |
5 | iwdg_cpu_halt_cken | 0x1 | R/W | CPU处于halt状态时IWDG模块时钟门控使能: 0:自动关闭时钟 1:不自动关闭时钟 |
4 | timer1_gpwm1_cken | 0x1 | R/W | TIMER1和PWM1模块时钟门控使能: 0:关闭时钟 1:打开时钟 |
3 | timer0_gpwm0_cken | 0x1 | R/W | TIMER0和PWM0模块时钟门控使能: 0:关闭时钟 1:打开时钟 |
2 | efuse_cken | 0x1 | R/W | EFUSE模块时钟门控使能: 0:关闭时钟 1:打开时钟 |
1 | iwdg_cken | 0x1 | R/W | IWDG模块时钟门控使能: 0:关闭时钟 1:打开时钟 |
0 | gpio_cken | 0x1 | R/W | GPIO模块时钟门控使能: 0:关闭时钟 1:打开时钟 |
复位配置寄存器(AON_RESET_CFG)¶
偏移量:0x70
复位值:0x0000001F
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:5 | Reserved | 0x3 | R/W | Reserved |
4 | pll_rsten | 0x1 | R/W | PLL模块复位使能: 0:复位 1:不复位 |
3 | timer01_gpwm01_rsten | 0x1 | R/W | TIMER0/1和PWM0/1模块复位使能: 0:复位 1:不复位 |
2 | efuse_rsten | 0x1 | R/W | EFUSE模块复位使能: 0:复位 1:不复位 |
1 | iwdg_rsten | 0x1 | R/W | IWDG模块复位使能: 0:复位 1:不复位 |
0 | gpio_rsten | 0x1 | R/W | GPIO模块复位使能: 0:复位 1:不复位 |
下述是IO相关的寄存器组,列举全部寄存器后再说明具体的使用方法。
IO复用配置寄存器0(IOREUSE_CFG0)¶
偏移量:0x140
复位值:0x00000000
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31 | Reserved | 0 | R/W | Reserved |
30:0 | IOREUSE_CFG0 | 0x0 | R/W | IOREUSE_CFG0配置项,具体功能请参考下面的说明和表格 |
IO复用配置寄存器1(IOREUSE_CFG1)¶
偏移量:0x144
复位值:0x00000000
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:21 | Reserved | 0 | R/W | Reserved |
20:0 | IOREUSE_CFG1 | 0x0 | R/W | IOREUSE_CFG1配置项,具体功能请参考下面的说明和表格 |
IO开漏状态配置寄存器0(OD_CFG0)¶
偏移量:0x14C
复位值:0x00000000
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:15 | Reserved | 0 | R/W | Reserved |
14:0 | OD_CFG0 | 0x0 | R/W | OD_CFG0配置项,具体功能请参考下面的说明和表格 |
IO下拉状态配置寄存器0(PD_CFG0)¶
偏移量:0x150
复位值:0x00000000
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31 | Reserved | 0 | R/W | Reserved |
30:0 | PD_CFG0 | 0x0 | R/W | PD_CFG0配置项,具体功能请参考下面的说明和表格 |
IO上拉状态配置寄存器0(PU_CFG0)¶
偏移量:0x158
复位值:0x00000000
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31 | Reserved | 0 | R/W | Reserved |
30:0 | PU_CFG0 | 0x0 | R/W | PU_CFG0配置项,具体功能请参考下面的说明和表格 |
IO驱动能力配置寄存器0(DS_CFG0)¶
偏移量:0x160
复位值:0x00000000
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:0 | DS_CFG0 | 0x0 | R/W | DS_CFG0配置项,具体功能请参考下面的说明和表格 |
IO驱动能力配置寄存器1(DS_CFG1)¶
偏移量:0x164
复位值:0x00000000
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:0 | DS_CFG1 | 0x0 | R/W | DS_CFG1配置项,具体功能请参考下面的说明和表格 |
IO复用AD配置寄存器0(AD_CFG0)¶
偏移量:0x190
复位值:0x00000003
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:12 | Reserved | 0 | R/W | Reserved |
11:0 | AD_CFG0 | 0x3 | R/W | AD_CFG0配置项,具体功能请参考下面的说明和表格 |
IO开漏状态配置寄存器1(OD_CFG1)¶
偏移量:0x194
复位值:0x00000000
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:16 | Reserved | 0 | R/W | Reserved |
15:0 | OD_CFG1 | 0x0 | R/W | OD_CFG1配置项,具体功能请参考下面的说明和表格 |
IO下拉状态配置寄存器1(PD_CFG1)¶
偏移量:0x198
复位值:0x00000000
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:16 | Reserved | 0 | R/W | Reserved |
15:0 | PD_CFG0 | 0x0 | R/W | PD_CFG0配置项,具体功能请参考下面的说明和表格 |
IO上拉状态配置寄存器1(PU_CFG1)¶
偏移量:0x19C
复位值:0x00000000
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:16 | Reserved | 0 | R/W | Reserved |
15:0 | PU_CFG1 | 0x0 | R/W | PU_CFG1配置项,具体功能请参考下面的说明和表格 |
IO驱动能力配置寄存器2(DS_CFG2)¶
偏移量:0x1A0
复位值:0x00000000
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:0 | DS_CFG2 | 0x0 | R/W | DS_CFG2配置项,具体功能请参考下面的说明和表格 |
上述IO相关的寄存器组,每个位都是配置为1时有效,IO复用决定了对应的IO处于何种功能状态,AD复用决定对应的IO是否配置为模拟ADC输入口,上下拉和开漏寄存器决定了对应的IO是否开启内部上拉、下拉或开漏状态(IO开漏时支持外部5V输入),DS寄存器决定了对应的IO的驱动能力,有两位有效数据,当温度在25度,芯片工作在3.3V和1.1V电压情况下,DS值和对应的标称驱动能力如下表所示:
DS | Ioh(高电平2.4V时输出电流) | Iol(低电平2.4V时输入电流) |
---|---|---|
0 | 33.1mA | 19.3mA |
1 | 39.7mA | 23.1mA |
2 | 46.4mA | 26.9mA |
3 | 53mA | 30.8mA |
芯片各个IO和对应的IO配置寄存器的控制关系表如下图所示:
上述IO复用配置中,该IO配置的IOREUSE寄存器位的值决定了该IO当前处于第几个工作模式,工作模式和IO的关系如下图所示:
复位状态寄存器(RST_STATE_REG)¶
偏移量:0x1C0
复位值:0x00000001
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:6 | Reserved | 0 | W1C | Reserved |
5 | SOFT_RST_STATE | 0x0 | W1C | 软件造成复位的状态位,1为复位状态,该位写1时清除为0 |
4 | WWDG_RST_STATE | 0x0 | W1C | WWDG造成复位的状态位,1为复位状态,该位写1时清除为0 |
3 | IWDG_RST_STATE | 0x0 | W1C | IWDG造成复位的状态位,1为复位状态,该位写1时清除为0 |
2 | Reserved | 0 | W1C | Reserved |
1 | CPU_REQ_RST_STATE | 0x0 | W1C | CPU复位请求造成复位的状态位,1为复位状态,该位写1时清除为0 |
1 | POWER_ON_RST_STATE | 0x1 | W1C | 上电造成复位的状态位,1为复位状态,该位写1时清除为0 |