STM32L051 低功耗特性分析

STM32L051 低功耗特性分析

32MHz 2.7mW功耗

low power sleep mode大概只有4.5uA

stop mode大概 0.4uA

stop mode能比low power sleep mode功耗低一个数量级。

这个时候是把core还有大部分clk都关闭了

stop mode with rtc 可以定时通过lptimer定时唤醒,执行中断or reumse程序执行。可以满足电池业务需求,同时把功耗降低一个等级

低功耗进入退出流程,通过查看stm32 discovery 例程即可。

cpu is stopped 指的是cpu clk被关闭,但是power up。这个时候pc不走。

power mode分析

sleep mode是只关闭cpu clk

stop mode是关整个vcore domain的clk,包括pll等,关闭的更加彻底

standy mode是把关闭vcore的电源和时钟

1.sleep mode和stop mode都是可以程序都可以resume,但是standby mode需要复位重新初始化;因为standby时,把vcore domain下电(包括cpu ram等),ram register等内容丢失

2.stop和standby mode下只有部分外设在工作,因此提供的唤醒源业有限,特别是stanby mode

具体哪些ip才工作,看下IP function在各个mode下的状态表整理

3.stop mode和standby mode相比,内部regulator一个是low power 状态,一个是关闭状态。

mcu中的功耗大头是 各个ip的clk 还有内部regulator adc pll等;stm32l0 调频调压都支持

power domain分析

可以看出,

  • vdd是给io和flash 还有always on区域供电的,这个的供电电压是3.3V;
  • 同时内部经过一个ldo后,给core memory供电,而core 的工作电压典型范围是1.2-1.8v。
  • adc等模拟部分有单独的电源供电。
  • regulator一般有三种状态,main、low power、power down。

dvfs表

需要注意的是,cpu内部加入了

问题:WFI和WFE的区别

wfi是通过中断机制产生的,需要把中断使能,通过nvic中对应的exti中断需要使能。resume时,会进入到中断服务程序中。

wfe是通过event机制产生的,resume时,会接着执行程序,而不是进入到中断服务程序。

wakeup event管理:

wake up event的目的是去唤醒core,

wake up event的产生方式有两种,

一是对应外设生中断,但是nvic不打开中断(虽然nvic不打开中断,但是nvic对应的pending bit还是会因为外设中断置起而置起),如此产生event后,cpu core需要去清除外设和nvic的中断pending bit。

二是将exti line配置为event mode,如此不产生中断,不会产生nvic pending bit,因此也就不需要再resume后clear

这样exti interrupt可以wakeup core,二是将exti配置为event mode,如此不会产生中断pending。只是产生唤醒信号。

有一些外设,通过连接在exti direct line上,这些外设可以产生一个异步信号,发送给exti,作为唤醒源。

exti实际上既可以产生中断作为唤醒源,也可以产生wakeup event,用来做唤醒源,

wfi一般用于cpu idle

wfe用于spinlock

wfi和wfe的区别在于,wfi等待的是中断,wfe等待的是事件,所以wfe不能进入中断服务函数,而wfe可以。

spinlock是基于wfe机制去实现的。

arm core low-power standby的实现:一般是由实现者定义的,不过一般的额操作是,关闭clk,保持供电。

进入sleep stop standby mode操作步骤

/** * @brief Enters Stop mode. * @note In Stop mode, all I/O pins keep the same state as in Run mode. * @note When exiting Stop mode by issuing an interrupt or a wakeup event, * MSI or HSI16 RCoscillator is selected as system clock depending * the bit STOPWUCK in the RCC_CFGR register. * @note When the voltage regulator operates in low power mode, an additional * startup delay is incurred when waking up from Stop mode. * By keeping the internal regulator ON during Stop mode, the consumption * is higher although the startup time is reduced. * @note Before entering in this function, it is important to ensure that the WUF * wakeup flag is cleared. To perform this action, it is possible to call the * following macro : __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU) * * @param Regulator: Specifies the regulator state in Stop mode. * This parameter can be one of the following values: * @arg PWR_MAINREGULATOR_ON: Stop mode with regulator ON * @arg PWR_LOWPOWERREGULATOR_ON: Stop mode with low power regulator ON * @param STOPEntry: Specifies if Stop mode in entered with WFI or WFE instruction. * This parameter can be one of the following values: * @arg PWR_STOPENTRY_WFI: Enter Stop mode with WFI instruction * @arg PWR_STOPENTRY_WFE: Enter Stop mode with WFE instruction * @retval None */ void HAL_PWR_EnterSTOPMode(uint32_t Regulator, uint8_t STOPEntry) { uint32_t tmpreg = 0U; /* Check the parameters */ assert_param(IS_PWR_REGULATOR(Regulator)); assert_param(IS_PWR_STOP_ENTRY(STOPEntry)); /* Select the regulator state in Stop mode ---------------------------------*/ tmpreg = PWR->CR; /* Clear PDDS and LPDS bits */ CLEAR_BIT(tmpreg, (PWR_CR_PDDS | PWR_CR_LPSDSR)); /* Set LPSDSR bit according to PWR_Regulator value */ SET_BIT(tmpreg, Regulator); /* Store the new value */ PWR->CR = tmpreg; /* Set SLEEPDEEP bit of Cortex System Control Register */ SET_BIT(SCB->SCR, SCB_SCR_SLEEPDEEP_Msk); /* Select Stop mode entry --------------------------------------------------*/ if(STOPEntry == PWR_STOPENTRY_WFI) { /* Request Wait For Interrupt */ __WFI(); } else { /* Request Wait For Event */ __SEV(); __WFE(); __WFE(); } /* Reset SLEEPDEEP bit of Cortex System Control Register */ CLEAR_BIT(SCB->SCR, SCB_SCR_SLEEPDEEP_Msk); }

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: stm32l051低功耗串口是一款针对低功耗应用场景而设计的串口芯片。相比于传统的串口芯片,其在功耗控制、性能优化等方面有着显著的优势。 在功耗控制方面,stm32l051低功耗串口采用了独特的低功耗设计方案,能够在工作状态和待机状态之间快速切换,以实现更加高效的功耗控制。同时,其还集成了多种省电技术,例如低功耗时钟、低功耗微控制器模式等,使得设备在脱机状态下的能耗得到大幅降低。 在性能优化方面,stm32l051低功耗串口支持多种串行通信协议,例如UART、SPI、I2C、LIN等,同时支持数据包、多主机、帧同步等多种特性。其还支持数据缓存、DMA传输等高效的数据传输方式,在串行数据传输的过程中能够提高通信速率与通信质量,避免了串口传输时出现的一些问题。 总之,stm32l051低功耗串口是一款性能强劲,功耗低、稳定可靠的串口芯片,广泛应用于各种低功耗设备中。 ### 回答2: STM32L051是一款低功耗的微控制器,其特性包括丰富的外设和强大的处理能力,同时也是一款非常注重功耗管理的单片机。其中,低功耗串口是这款微控制器的一项特色。 低功耗串口是一种以最小化能耗为目的的串口传输方式。它通过将对串口的唤醒信号最小化,降低串口传输过程中的能耗。在STM32L051中,低功耗串口的实现采用了多种技术,如自动处理、片上缓冲等,旨在将传输时的电流消耗最小化。 在一般的串口传输过程中,不断的串口空闲时段会导致功率的浪费。而低功耗串口则可以在传输结束后,很快进入睡眠模式,等到下一次传输开始时再次唤醒。这样就保证了整个传输过程中的最小功耗。 另外,STM32L051低功耗串口也支持多种传输模式。它可以通过自适应低功耗模式实现自动切换和自主处理。通过使用DMA传输数据,更进一步提高了传输的效率和稳定性,同时也能使股支持它的应用程序更加高效。 综上所述,STM32L051低功耗串口是一种专门针对低功耗应用而开发的串口传输方式。其通过多种技术手段和特殊设计,能够实现最小化的功耗消耗,使得整个传输过程更加高效和稳定。 ### 回答3: STM32L051是一款高性能、低功耗的微控制器芯片,可广泛应用于智能家居、工业自动化、机器人等领域。该芯片的低功耗串口是其特有的一项功能,可以有效减少芯片的能耗,节省电力资源。 低功耗串口采用异步串行通信协议,能够实现数据的传输。在传输数据时,芯片可以进入低功耗模式,从而有效降低功耗。此外,该串口还支持自动唤醒功能,能够在特定条件下自动唤醒芯片,提高工作效率。 在使用STM32L051低功耗串口时,需要根据实际应用场景进行配置。用户可以设置波特率、奇偶校验等参数,满足不同需求。同时,为了避免数据丢失或干扰,用户还需要采用合适的数据传输方式,如单线半双工模式或双线全双工模式等。 综上所述,STM32L051低功耗串口功能是其具有竞争力的一项特性。通过合理配置和使用,该功能可以大大降低芯片的功耗,提高系统效率,为用户提供优质的使用体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值