OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 16385|回复: 12

stm32 下电时,纽扣电池给rtc供电,消耗电量很大,请问在下电时,可以进入低功耗模式这种方法来解决耗电量大的问题吗?下电时可以用低功耗吗

[复制链接]

3

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2012-10-31
在线时间
0 小时
发表于 2012-11-1 09:46:59 | 显示全部楼层 |阅读模式
stm32 下电时,纽扣电池给rtc供电,消耗电量很大,请问在下电时,可以进入低功耗模式这种方法来解决耗电量大的问题吗?下电时可以用低功耗吗
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-11-1 10:30:00 | 显示全部楼层
回复【楼主位】dynhwl:
---------------------------------
不能。
我们的开发板电池,至少也能维持好几个月的RTC运行,你的电池是不是有问题啊?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

5

主题

166

帖子

2

精华

高级会员

Rank: 4

积分
506
金钱
506
注册时间
2012-10-8
在线时间
0 小时
发表于 2012-11-1 10:37:29 | 显示全部楼层
难道楼主存在这个问题

rtc电池供电时二极管选择注意
http://www.amobbs.com/forum.php?mod=viewthread&tid=5503662&highlight=rtc
回复 支持 反对

使用道具 举报

3

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2012-10-31
在线时间
0 小时
 楼主| 发表于 2012-11-1 11:16:18 | 显示全部楼层
电池是好的,没有问题
回复 支持 反对

使用道具 举报

3

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2012-10-31
在线时间
0 小时
 楼主| 发表于 2012-11-1 11:31:53 | 显示全部楼层
二极管用的是IN4148的,没有问题,请问还可能是什么问题
回复 支持 反对

使用道具 举报

27

主题

148

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
276
金钱
276
注册时间
2012-7-25
在线时间
0 小时
发表于 2012-11-1 12:38:13 | 显示全部楼层
回复【5楼】dynhwl:
---------------------------------
要用2个二极管,断电的时候电池只能向VBAT供电。
绝对不能断电的时候向其他地方供电。

另,如果想提高电池的寿命,采用低漏电流二极管是个不错的方案。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-11-1 12:49:41 | 显示全部楼层
回复【6楼】maninman1981:
---------------------------------
可以测量一下电流。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

3

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2012-10-31
在线时间
0 小时
 楼主| 发表于 2012-11-1 12:59:11 | 显示全部楼层
电流测的4,5个MA,断电后纽扣电池只给RTC供电的
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-11-1 13:06:59 | 显示全部楼层
回复【8楼】dynhwl:
---------------------------------
那肯定有问题了,不可能这么大的。
先排除硬件问题。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

3

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2012-10-31
在线时间
0 小时
 楼主| 发表于 2012-11-1 13:12:20 | 显示全部楼层
硬件已经确保没问题了,软件应该是哪的问题呢,求解啊
回复 支持 反对

使用道具 举报

3

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2012-10-31
在线时间
0 小时
 楼主| 发表于 2012-11-1 13:34:15 | 显示全部楼层

RTC程序
void RTC_Config(void)//配置实时时钟
{
u16 WaitForOscSource;
 
 
  if(BKP_ReadBackupRegister(BKP_DR1)==CONFIGURATION_RESET)//从数据备份寄存器中取出数据
  { 
    /*Enables the clock to Backup and power interface peripherals    */
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_BKP | RCC_APB1Periph_PWR,ENABLE); //使能备份时钟和电源控制时钟
 WR_BackupAccessCmd(ENABLE); //使能对rtc和备份寄存器的访问    
    /* Backup Domain Reset */
     BKP_DeInit();   //设置bkp外设到默认值
     BKP_WriteBackupRegister(BKP_DR1, CONFIGURATION_DONE);//将CONFIGURATION_DONE写入BKP_DR1中 
    /*Enable 32.768 kHz external oscillator */
    RCC_LSEConfig(RCC_LSE_ON); //配置外部低速晶振   
 //  for(WaitForOscSource=0;WaitForOscSource<5000;WaitForOscSource++) ;//等待外部低速晶振开启
    /* Wait till LSE is ready */
   while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET)
   {}
 RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);//配置rtc时钟为外部低速时钟
    /* RTC Enabled */
    RCC_RTCCLKCmd(ENABLE); //使能rtc时钟
    RTC_WaitForLastTask();
    /*Wait for RTC registers synchronisation */
    RTC_WaitForSynchro();  //等待rtc寄存器与apb同步
    RTC_WaitForLastTask(); //等待rtc寄存器上最后一个写操作完成,在对rtc操作之前要先调用此函数
    /* Setting RTC Interrupts-Seconds interrupt enabled */
    /* Enable the RTC Second */
    RTC_ITConfig(RTC_IT_SEC , ENABLE); //使能秒中断
    /* Wait until last write operation on RTC registers has finished */
    RTC_WaitForLastTask();    
      /* Set RTC prescaler: set RTC period to 1 sec */
      RTC_SetPrescaler(32767);//产生1s信号 /* RTC period = RTCCLK/RTC_PR = (32.768 KHz)/(32767+1) */
      /* Prescaler is set to 32766 instead of 32768 to compensate for
        lower as well as higher frequencies*/
      /* Wait until last write operation on RTC registers has finished */
      RTC_WaitForLastTask();   
    /* Set default system time to 00 : 0 : 00 */
    //SetTime(DEFAULT_HOURS,DEFAULT_MINUTES,DEFAULT_SECONDS); //设置系统时间,设置rtc计数器
  //此处不再设置计数初值,默认值从0开始,时间读取算法从2000年开始
//  Set_Time(0,1,1,1,0,0);//时间初始值2000年1月1日1时0分0秒 3.12
//  RTC_WaitForLastTask();  
 //时装调整 48/49对应每月快120s
 BKP_SetRTCCalibrationValue(45);  //设置rtc时钟校准值 3.12
///////////////////////////////////////////////////////
//校时公式
//ppm误差=每30天跑快的秒数/(30天*24小时*3600秒)*10的6次方
//校准值=(ppm误差/10^6)*2^20
////////////////////////////////////////////////////////
 RTC_WaitForLastTask(); 
    BKP_WriteBackupRegister(BKP_DR1, CONFIGURATION_DONE); 
  }
  else
  {
 
    /* PWR and BKP clocks selection */
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
   PWR_BackupAccessCmd(ENABLE);
    for(WaitForOscSource=0;WaitForOscSource<5000;WaitForOscSource++);
    /* Wait until last write operation on RTC registers has finished */
// RTC_WaitForSynchro();
    RTC_WaitForLastTask();
 RCC_ClearFlag();
    /* Enable the RTC Second */
    RTC_ITConfig(RTC_IT_SEC, ENABLE);
    RTC_WaitForLastTask();
     /* RTC Enabled */
   RCC_RTCCLKCmd(ENABLE);
   RTC_WaitForLastTask();

  }
}

回复 支持 反对

使用道具 举报

3

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2012-10-31
在线时间
0 小时
 楼主| 发表于 2012-11-1 14:55:03 | 显示全部楼层
请各位高手帮忙解决啊
回复 支持 反对

使用道具 举报

7

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2013-4-6
在线时间
1 小时
发表于 2013-6-26 21:48:42 | 显示全部楼层
回复【6楼】maninman1981:
----------------------------
你好,能加上电路图?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-18 10:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表