历史上的今天
返回首页

历史上的今天

今天是:2024年09月10日(星期二)

正在发生

2018年09月10日 | STM32L031低功耗深度睡眠RTC唤醒注意事项

2018-09-10 来源:eefocus

0. 第一可以进入休眠,第二次无法进入休眠,折腾了好久。后来想想应该是进入休眠后立刻被唤醒了,应该是上次的唤醒中断没清除。在启动唤醒前加入以下语句,问题解决。


__HAL_RTC_WAKEUPTIMER_EXTI_CLEAR_FLAG(); //清除标志,否则第二次以后无法进入休眠

   // HAL_RTCEx_SetWakeUpTimer_IT(&hrtc, 0xB4D8, RTC_WAKEUPCLOCK_RTCCLK_DIV16); //20s

   HAL_RTCEx_SetWakeUpTimer_IT(&hrtc, 0xffff, RTC_WAKEUPCLOCK_RTCCLK_DIV16); //28s


1. 发现进入睡眠后,电流1.2uA,满足要求。结果唤醒后,第二次进入睡眠后,电流跳到了19uA,且一直保持下去。结果看了https://blog.csdn.net/zzw3255/article/details/54342878的介绍,把串口干掉了,电流下降到了2.6uA。




2. 去掉了串口,第一次进入睡眠1.2uA,第二次进入睡眠2.6uA。又陷入了僵局,没开串口、没开GPIO,啥事都没干,怎么回事?谁能帮忙解决下?


网上搜索了一下资料,遇到和我这样的情况的人还真不少。例如:


https://blog.csdn.net/zhufeng88/article/details/66968101#commentsedit


说是清除唤醒标志就好了,明天按照这个思路,改代码试试看。(但是本文第0点,不是已经清除了吗?该文指的的标志是哪个标志?)


相关文章:


https://blog.csdn.net/flydream0/article/details/52511311《STM32L152的低功耗测试》


3. 按照昨天的思路,清除唤醒标志


/* Clear all related wakeup flags */

__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);

但是问题依旧,第一次进入睡眠1.2uA,第二次进入睡眠2.6uA。抓狂中。


看了文档,多于的1.4uA可能来源于IVREFINT,如下图所示:


但是我的程序已经将VREFINT关闭了,调试后也看到标志位已经确认关闭了,但是还是有2.6uA的电流。

/* Enable Ultra low power mode */

  HAL_PWREx_EnableUltraLowPower();

/* Enable Fast WakeUP */

HAL_PWREx_EnableFastWakeUp();



到这里真的就没招了,重新理了下思路,看了代码,发现自己代码改得太乱了,之前的中断标志清除的语句在调试过程中注释掉了,重新加回来。问题解决。


4. 附上源码


void enter_stop_rtc(unsigned stoptime)

{

/* Enable Ultra low power mode */

  HAL_PWREx_EnableUltraLowPower(); //必须要加,否则多出1.4uA的电流

/* Enable Fast WakeUP */

HAL_PWREx_EnableFastWakeUp();

    /* Disable Wakeup Counter */

    HAL_RTCEx_DeactivateWakeUpTimer(&hrtc);

/*To configure the wake up timer to 4s the WakeUpCounter is set to 0x242B:

RTC_WAKEUPCLOCK_RTCCLK_DIV = RTCCLK_Div16 = 16 

Wakeup Time Base = 16 /(~37KHz) = ~0,432 ms

Wakeup Time = ~5s = 0,432ms  * WakeUpCounter

==> WakeUpCounter = ~5s/0,432ms = 11562 */

 

    HAL_RTCEx_SetWakeUpTimer_IT(&hrtc, stoptime*2396, RTC_WAKEUPCLOCK_RTCCLK_DIV16);

   

   system_power_config();

 

/* Enter Stop Mode */

    HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);

 /* Clear all related wakeup flags */

__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU); //必须要加,否则多出1.4uA的电流

__HAL_RTC_WAKEUPTIMER_EXTI_CLEAR_FLAG(); //清除标志,否则第二次以后无法进入休眠

 SystemClock_Config();

}


5. 最终,待机电流定格在1.2uA,满足项目需求。




6. 关于lpuart休眠后异常的问题。因为每次休眠后,都要重新初始化串口。但是发现使用hal库初始化的时候并没有成功,因为里面有个标志,初始化后就不再允许再次初始化了,所以,每次初始化时,需重置标志并位。


/* LPUART1 init function */

static void MX_LPUART1_UART_Init(void)

{

 

  hlpuart1.Instance = LPUART1;

  hlpuart1.Init.BaudRate = 115200;

  hlpuart1.Init.WordLength = UART_WORDLENGTH_8B;

  hlpuart1.Init.StopBits = UART_STOPBITS_1;

  hlpuart1.Init.Parity = UART_PARITY_NONE;

  hlpuart1.Init.Mode = UART_MODE_TX_RX;

  hlpuart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;

  hlpuart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;

  hlpuart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;

hlpuart1.gState = HAL_UART_STATE_RESET; //休眠后初始化要重置该标志位

  if (HAL_UART_Init(&hlpuart1) != HAL_OK)

  {

    _Error_Handler(__FILE__, __LINE__);

  }

 

}


推荐阅读

史海拾趣

HN Electronic Components GmbH & Co Kg公司的发展小趣事

背景:随着公司实力的增强,HN Electronics开始考虑通过并购来扩大规模和市场份额。

发展:公司精心挑选了几家在电子元件制造和系统集成方面具有优势的中小企业进行并购,通过资源整合和优势互补,进一步巩固了市场地位。同时,HN Electronics还向产业链上下游延伸,涉足原材料供应和终端产品制造领域。

关键事件:2015年,HN Electronics成功并购了一家在被动元件领域具有领先地位的企业,这一并购极大地增强了公司的供应链整合能力和市场竞争力。

客益(Guestgood)公司的发展小趣事

背景:近年来,随着全球对环境保护和可持续发展的重视,电子行业也面临着绿色转型的压力。

发展:HN Electronics积极响应环保号召,将绿色生产理念融入公司的发展战略中。公司投入大量资金进行技术改造和设备升级,减少生产过程中的能耗和污染排放。同时,HN Electronics还积极研发和推广绿色电子产品,满足市场对环保产品的需求。

关键事件:2020年,HN Electronics推出了一系列采用环保材料和先进生产工艺的绿色电子产品,这些产品不仅性能优异,而且符合国际环保标准,赢得了市场的广泛好评。

Elcoma公司的发展小趣事

随着全球对环保问题的日益关注,Elcoma公司也积极响应,将环保理念融入到企业的发展战略中。他们采用环保材料和工艺,减少生产过程中的污染排放,同时推出了一系列环保型电子产品,满足消费者对环保产品的需求。这种对环保的重视不仅提升了Elcoma的品牌形象,也为企业带来了可持续发展的动力。

Globaltech Semiconductor Co Ltd公司的发展小趣事

Globaltech的创立可以追溯到21世纪初,当时创始人凭借在电源管理IC设计领域的深厚经验,决定创立一家专注于此领域的公司。公司初期聚焦于线性稳压器和开关稳压器等基础产品的研发,这些产品广泛应用于PC、通讯和消费类电子产品中。通过持续的技术创新和产品优化,Globaltech迅速在市场上站稳脚跟,赢得了多家知名电子制造商的青睐。

FOX [Fox Electronics]公司的发展小趣事

随着全球对环保和可持续发展的重视,Fox Electronics积极响应行业趋势,将绿色生产理念融入企业运营中。公司投资引进先进的环保设备和生产工艺,减少生产过程中的废弃物排放和能源消耗。同时,Fox Electronics还推出了一系列符合RoHS(限制有害物质)指令的产品,满足市场对环保产品的需求。这些举措不仅提升了公司的社会责任感,也为其在绿色电子市场赢得了良好的声誉。

福声科技(FUET)公司的发展小趣事

福声科技(FUET)的初创可以追溯到几年前,当时电子产业正蓬勃发展,对高质量电声元器件的需求日益增长。公司创始人凭借在电声领域的深厚积累,决定成立一家专注于电声产品研发、生产和销售的企业。初期,福声科技聚焦于贴片式无源蜂鸣器、高分贝报警器等产品,凭借其高性价比和稳定的性能,迅速在家电、移动通讯设备等领域获得市场认可,为公司的后续发展奠定了坚实基础。

问答坊 | AI 解惑

dsp视频教程(电子科技大学 )

第一章简略地讨论数字信号处理的基本思想及其优越性。 第二章介绍世界各大公司DSP处理器的最新发展,以及系统设计工程师们最为关心的如何评价和选择DSP处理器的问题。 第三章比较系统地介绍目前在国内外应用最广泛的TI的TMS320C2000、C5000和C600 ...…

查看全部问答>

用单片机和FPGA设计的万年历

这是一个学长的毕业设计。。现在发给大家…

查看全部问答>

加密IC

加密IC保护您的软件,防止别人抄袭。 有关产品的介绍:采用智能卡专用硬件平台,内置宝兴达公司自主开发的嵌入式系统,专门为保护用户代码,防止非法访问和外部攻击而设计的新一代安全芯片。硬件平台为8051内核,采用串口通讯协议,用户编程基于标 ...…

查看全部问答>

totally confused

I do driver on mobile for 3 years,I worked hard always, I believe in my skills,I always say there is nothing I can not do!I can do all kinds of drivers,I can do framwork,filesystem,gdi,protocol,I can solve out any bug in 2 hour ...…

查看全部问答>

用AT89C52设计一款PS2键盘,遇到的问题

请问各位:     PS2键盘是不是一定要和PC机握手才能工作的?握手初始化部分的程序一定要写吗?…

查看全部问答>

wince6 如何禁用输入面板

如题:在wince6下打开网页的时候,如果网页上有可输入的框,则系统会自动弹出一个输入面板(软键盘)。 我不想让这个东西弹出来(有自己的界面逻辑和输入控制),需要如何修改?谢谢!…

查看全部问答>

淘宝上发现一个液晶屏,不知怎么样,大家给个建议哈~~~~

一个320*240的点阵液晶,二手拆机,虽说可能有些划痕,不过价格实在是太超值了,   http://item.taobao.com/item.htm?id=6948951424   大家感觉怎么样呢? :D …

查看全部问答>

MSP430F149串口上电不能发送字符

我是初学者,一边看数据手册一边写程序,之前用BCS  定时器都好好的,现在用到串口了,结果出问题了。。。。主程序中初始化基本时钟系统,初始化串口,初始化P3端口,进入while(1)循环,循环中用查询方式,把板子接收到的字符再发送给超级终端 ...…

查看全部问答>

FPGA与MCU异步通讯的同步化实践

FPGA+MCU是一中非常流行的架构,MCU的并行总线在和FPGA通讯的时候一般都是异步的。         常见的MCU有单片机、ARM以及DSP等等,所谓的并行接口比如TI的TMS320C5410的HPI口。在FPGA加MCU的架构里往往存 ...…

查看全部问答>

KL46 Bootloader的疑问

看了Freescale的有关Bootloader文档,AN2295,有些疑问 1,第31页有管ICF文件这么一段描述: 编辑后ROM开始地址为0x4000,Code Start地址为什么只增加了0x3FF0?(0x4400 - 0x410),而不是增加0x4000呢?2.我现在使用的是MKL46系列CortexM0+ M ...…

查看全部问答>