admin管理员组文章数量:1516870
1 前言
电源是芯片的驱动源,一个好的电源管理模块可以让一颗芯片发挥最完美的性能表现,大资本家的梦想都是想让工人吃最少的饭干最多的事,再不济也是吃合适的饭干着合适的事情,RT1050的电源管理模块就是这样的一个存在,我们可以通过电源管理模块让其发挥夸张的性能,让我们一起来学习一下该模块吧。
2 RT1050的电源管理
下图就是RT1050的电源管理系统的框图。
2.1 PMU(Power Management Unit)
在介绍PMU之前,我们先介绍一下电压域(Power Domain)的概念,RT1050为了实现更加精确的电源控制和管理,就将整个片子的外设、核、内存等分成了一个个的域,每一个域都有一个电源开关,我们则是可以控制这个开关来分别控制不同的域的电源,这样则是可以非常灵活的控制整个片子的功耗(具体都有哪些电压域则是可以参考《IMXRT1050RM》的13.4.1.4.3 Power Gating Domain Management)。
PMU模块,大家可以将其看做是整个电源管理系统的模拟执行部分,它承担了电源输入和电源输出的功能,下图是PMU的电源树图和结构图。
2.2 GPC(General Power Controller)
这个模块就是RT1050电源系统的管理者,它的功能有两个,电源门控和唤醒中断控制器。在这里我们介绍电源门控的作用,简单的说,就是控制RT上不同子系统和不同电压域的电源开关,还有就是生产芯片的上电和断电序列,这对于RT的正常启动和掉电是非常重要的,后面我们再详细介绍。
2.3 SRC(SRC - System reset Controller)
系统复位控制器(SRC)控制SoC 的复位和引导操作。它负责生成所有复位信号和启
动解码。复位控制器确定复位的源和复位类型,例如POR,COLD,并执行复位操作,根据复位类型,复位逻辑产生整个IC 的复位序列。
我们在RT1050的电源系统框图中,还可以看到SNVS和CCM的身影,这些模块主要是给GPC和PMU提供一些必要的信号,比如CCM可以给SRC的复位操作和GPC的电源门控操作提供同步信号,SNVS则是可以给PMU提供唤醒信号,在这里则不再多说。
3 Low Power
上面对RT1050的电源系统结构进行了介绍,可以看出非常的强大,那这些设计都是为了low power,芯片的功耗表现在芯片应用上的一项重要指标,下面围绕Low Power来进行介绍。
3.1 电源引脚
下面列出了RT引脚的电源输出引脚定义。
| 电源引脚名 | 描述 |
|---|---|
| DCDC_IN | Power for DCDC |
| VDD_HIGH_IN | Power for Analog |
| VDD_SNVS_IN | Power for SNVS and RTC |
| USB_OTG1_VBUS、USB_OTG2_VBUS | Power for USB VBUS |
| VDDA_ADC | Power for 12-bit ADC |
| VDDA_IN | Power for LDO 2P5 and LDO 1P1 |
| NVCC_SD0 | Power for GPIO in SDIO1 bank (3.3 V mode)、Power for GPIO in SDIO1 bank (1.8 V mode) |
| NVCC_SD1 | Power for GPIO in SDIO2 bank (3.3 V mode)Power for GPIO in SDIO2 bank (1.8 V mode) |
| NVCC_GPIO | IO Power for GPIO in GPIO bank |
| NVCC_EMC | IO Power for GPIO in EMC bank |
3.2 RT的运行模式
RT的运行模式有RUN模式和Low-Power模式两种。两种模式按照不同程度的不同则是又可以细分8种模式,下表则是显示着每种模式的特征。
| 运行模式 | 说明 |
|---|---|
| 超载运行(Overdrive Run) |
CPU 运行速度为600 MHz,过驱动电压为1.275 V.
全速总线频率 启用所有外设并以目标频率运行 所有PLL 均已启用 |
| 满载运行(Full-Speed Run) |
CPU 运行速度为528 MHz,满载,低电压为1.15 V.
全速总线频率 启用所有外设并以目标频率运行 所有PLL 均已启用 |
| 低速运行(Low-Speed Run) |
CPU 运行频率为132 MHz,电压降至1.15 V.
半速内部总线频率 某些PLL 断电 20%外设处于活动状态,其他外设处于低功耗模式 |
| 低功耗运行(Low-Power Run) |
CPU 以24 MHz 运行,较低电压为0.95 V.
内部总线频率为12 MHz 所有PLL 均断电,OSC24M 断电,RCOSC24 使能 高速外围设备断电 |
| ———————————————— | —————————————————————————— |
| 系统空闲(System ldle) |
没有线程运行时,CPU 可以自动进入该模式
所有外围设备都可以保持活动状态 CPU 仅进入WFI 模式,其状态保持不变,因此中断响应可能非常短 |
| 低功耗空闲(Low-Power ldle) |
功率比系统空闲模式低很多,退出时间更长
所有PLL 均关闭,模拟模块以低功耗模式运行 所有高速外设都是电源门控,低速外设可以保持低频运行 |
| 暂停(Suspend) |
最省电模式,退出时间最长
所有PLL 均关闭,XTAL 关闭,除32 K 时钟外,所有时钟均关闭 所有高速外设均采用电源门控,低速外设采用时钟门控 |
| (SNVS) |
除SNVS 域外,所有SOC 数字逻辑模拟模块均被关闭
32 KHz RTC 处于活动状态 |
下表列出在在RUN模式下不同模式的相关配置。
在这里值得注意的就是,当RT1050处于RUN模式下的Low power run模式下,这时候RT1050是无法切换至Low-Power模式的System Idle模式。因为当进入System Idle模式的芯片状态是依赖当前的RUN模式状态的。
3.3 Low-Power模式的进入和退出
如下图所示,RT可以从RUN模式直接进入四种Low-Power模式,也可以从四种Low-Power模式退出至RUN模式。
下面我们就举一个从RUN模式进入到System Idle的Low-Power模式的例子来说明吧。
3.3.1 如何进入System Idle
对于进入System Idle的过程,下图详细的列出了步骤:
我们再结合NXP实例代码说一下:
voidLPM_EnterSystemIdle(void){// 第一部分LPM_SetWaitModeConfig();/* 设置等待模式配置 *///第二部分SetLowPowerClockGate();/* 设置低功耗时钟门,就是关闭各种不需要的时钟 */ClockSetToSystemIdle();/* 将时钟设置成低功耗空闲 *///第三部分/* Power down USBPHY */PowerDownUSBPHY();/* 断电 USBPHY *//* DCDC to 1.15V */DCDC_AdjustTargetVoltage(DCDC,0xe,0x1);/* DCDC 到 1.15V *//* DCM Mode */DCDC_BootIntoDCM(DCDC);/* DCM 模式 *//* Disconnect internal the load resistor */
DCDC->REG1 &=~DCDC_REG1_REG_RLOAD_SW_MASK;/* 断开内部负载电阻 *//* Power Down output range comparator */
DCDC->REG0 |= DCDC_REG0_PWD_CMP_OFFSET_MASK;/* 掉电输出范围比较器 *//* Enable FET ODRIVE */
PMU->REG_CORE_SET = PMU_REG_CORE_FET_ODRIVE_MASK;/* 使能 FET ODRIVE *//* Connect vdd_high_in and connect vdd_snvs_in */
PMU->MISC0_CLR = PMU_MISC0_DISCON_HIGH_SNVS_MASK;/* 连接vdd_high_in 并连接vdd_snvs_in */EnableWeakLDO();/* 使能RegularLDO */DisableRegularLDO();/* 失能常规LDO*/BandgapOn();/* 带隙失能 *///第四部分PeripheralEnterDozeMode();/* 外围设备进入打盹模式 *///第五部分__DSB();__WFI();__ISB();}代码第一部分至第四部分分别对应着步骤部的四个部分,大家自行参照着看一看,大家如果想知道具体操作的寄存器,大家可以自行找到例程好好学习一波。在这里我们提一下第五部分的三个函数,__DSB,__ISB, __WFI。
①__DSB,__ISB
DSB为数据同步,ISB为指令同步,对于单核MCU来说,这个操作可以说熟多余的,但是对于多核则是非常有必要的,因为在系统进入休眠后,需要保证几个核的数据和指令是同步的。
② __WFI
WFI(Wait for interrupt)和WFE(Wait for event)是两个让ARM核进入low-power standby模式的指令,由ARM architecture定义,由ARM core实现。简单的来说,就是WFI和WFE指令可以让core进入休眠,然后等待中断或事件来唤醒。所以WFI可以让RT1050进入Low-Power模式。
( 注意 :在开始执行进入Low-Power模式之前,最好禁用全局中断,这样可以保证芯片的正常运行,避免不可预估的事情发生。)
3.3.2 如何退出System Idle
下图展示了如何退出System Idle模式进入RUN模式。
从图中可以看出,当CPU别WAKE-UP信号唤醒后,只需要将进入的步骤逆向恢复就可以了。在这里我就不详细说明了。
(大家如果想知道其他模式的进入和退出,还有每一个步骤的具体实现操作,大家则是可以参考NXP官方文档: 以及NXP的官方例程:evkbimxrt1050_power_mode_switch_bm)。
END
版权声明:本文标题:从入门到精通:详解i.MX RT1050中的低电模式与硬件重启 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.betaflare.com/biancheng/1770511729a3255435.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论