你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【STM32C0评测】低功耗时钟

[复制链接]
lugl 发布时间:2025-5-3 21:21

【前言】

前面我使用TM1637作为时间显示,他的休眠电流还是有700微安的,所以还是不是很好做为的时钟来使用,后面想找个LCD断码屏来,但是没有合适的,翻了一下仓库,找到了一个NOKIA5110显示屏。查了一下参数,他的休眠参数与显示的电流是非常小的。想当年诺基来的手机可以充满电用好几个星期的。所以用这款显示屏来制作一个时钟。

【移植驱动】

NOKIA5110的stm32在网上的驱动非常好找,我在http://stm32f4-discovery.com/pcd8544-nokia-33105110-lcd-stm32f429-discovery-library/找到一个现成的驱动。

把他移植到工程中,先配置好接口如下:

CLK PA5
DIN PA7
RST PB3
CE  PA15
DC  PA9

*/

  LCD_setRST(GPIOB, GPIO_PIN_3);  
  LCD_setCE(GPIOA, GPIO_PIN_15);  
  LCD_setDC(GPIOA, GPIO_PIN_9);  
  LCD_setDIN(GPIOA, GPIO_PIN_7);  
  LCD_setCLK(GPIOA, GPIO_PIN_5);  
    LCD_init();

【配置RTC】

我这里使用每一秒RTC唤醒一次:

  /** Enable the Alarm A
  */
  sAlarm.AlarmTime.Hours = 0x0;
  sAlarm.AlarmTime.Minutes = 0x0;
  sAlarm.AlarmTime.Seconds = 0x1;
  sAlarm.AlarmTime.SubSeconds = 0x0;
  sAlarm.AlarmTime.DayLightSaving = RTC_DAYLIGHTSAVING_NONE;
  sAlarm.AlarmTime.StoreOperation = RTC_STOREOPERATION_RESET;
  sAlarm.AlarmMask = RTC_ALARMMASK_ALL;
  sAlarm.AlarmSubSecondMask = RTC_ALARMSUBSECONDMASK_ALL;
  sAlarm.AlarmDateWeekDaySel = RTC_ALARMDATEWEEKDAYSEL_DATE;
  sAlarm.AlarmDateWeekDay = 0x1;
  sAlarm.Alarm = RTC_ALARM_A;
  if (HAL_RTC_SetAlarm_IT(&hrtc, &sAlarm, RTC_FORMAT_BCD) != HAL_OK)
  {
    Error_Handler();
  }

【主程序】

为了实现更低的休眠电流,我设计了一个计数器,如果连继10秒没有动作,就把NOKIA5110显示关闭。当按键按下时,再初始化一下NOKIA5110。

  while (1)
  {
        cnt++;
        if(cnt>10){
            NOKIA5110_CloseDisplay();
            HAL_PWR_EnterSTOPMode(PWR_MAINREGULATOR_ON, PWR_STOPENTRY_WFI);
        }
        else {
            HAL_RTC_GetTime(&hrtc, &sTime, RTC_FORMAT_BIN);
            /* Get the RTC current Date */
            HAL_RTC_GetDate(&hrtc, &sDate, RTC_FORMAT_BIN);
            sprintf(buff,"%02d:%02d:%02d",sTime.Hours,sTime.Minutes,sTime.Seconds);
            LCD_print(buff, 2, 2);
            HAL_PWR_EnterSTOPMode(PWR_MAINREGULATOR_ON, PWR_STOPENTRY_WFI);
        }
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

【实验效果】

显示时间:

c88498e1598c39e5bd082db5a677839.jpg

工作电流:

80fe4e53ad81daec95968b8f3d0a67c.jpg

关闭显示:

27f1280dd78458ba221c4e6898b5ab8.jpg

【总结】

休眠电流为87微安,非常理想了。stm32C0x进和HAL_PWR_EnterSTANDBYMode

由于不能保存RTC的时钟,要不然可以下降到20微安左右。

收藏 评论0 发布时间:2025-5-3 21:21

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版