amoBBS 阿莫电子论坛

 找回密码
 注册
Bottom↓
查看: 9043|回复: 77

此贴发给所有“调戏”STM32 RTC反“被调”戏的朋友------STM32 RTC其实很好“调戏”

[复制链接]
发表于 2011-3-12 10:07:00 | 显示全部楼层 |阅读模式
此贴发给所有“调戏”STM32 RTC反“被调”戏的朋友------STM32 RTC其实很好“调戏”的。


1:32768HZ晶体,选一般6pF--12.5pF的都可以(本身品质有问题例外),并非传说中的猛兽
2(重要):在STM32的VBAT脚与GND必须接至少一个陶瓷电容(100nF X7R介质材料)退藕,线要短/粗
3:32768HZ晶体的负载电容焊盘与晶体焊盘之间线要短/粗,实际安装的电容须为NPO介质材料
4:STM32 RTC起振到稳定需要时间(1--3秒,和温度有关)建议写代码先开启STM32 RTC,然后去初始化其他外设,最后来判断RTC状态 分2个函数 代码如下:

================================================================================================================================
u8 Cheak_RTC_MY(void)
{
   if(BKP_ReadBackupRegister(BKP_DR1)!=0xA5A5)
    {
              // u32 delay;
          //启用PWR和BKP的时钟(from APB1)
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);

        //后备域解锁
        PWR_BackupAccessCmd(ENABLE);

        //备份寄存器模块复位
        BKP_DeInit();

        //外部32.768K
        RCC_LSEConfig(RCC_LSE_ON);
        
        return 1;
    }
   else
   {
                  //清除RCC中复位标志
        RCC_ClearFlag();
        
        //虽然RTC模块不需要重新配置,且掉电后依靠后备电池依然运行
        RCC_RTCCLKCmd(ENABLE);
        //等待RTC时钟与APB1时钟同步
        RTC_WaitForSynchro();
        
        //使能秒中断
        RTC_ITConfig(RTC_IT_SEC,ENABLE);
        //等待操作完成
        RTC_WaitForLastTask();
        
        RCC_ClearFlag();
   
    /* Enable PWR and BKP clocks */
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR|RCC_APB1Periph_BKP,ENABLE);
   
    /* Allow access to BKP Domain */
        PWR_BackupAccessCmd(ENABLE);
        
        return 0;  //RTC OK
     
   }
}


void Setup_RTC(void)
{      
        struct tm time_now;
       //等待稳定
        while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET);

        //RTC时钟源配置成LSE(外部32.768K)
        RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);

        //RTC开启
        RCC_RTCCLKCmd(ENABLE);

        //开启后需要等待APB1时钟与RTC时钟同步,才能读写寄存器
        RTC_WaitForSynchro();

        //读写寄存器前,要确定上一个操作已经结束
        RTC_WaitForLastTask();

        //设置RTC分频器,使RTC时钟为1Hz
        //RTC period = RTCCLK/RTC_PR = (32.768 KHz)/(32767+1)
        RTC_SetPrescaler(32767);


        //等待寄存器写入完成
        RTC_WaitForLastTask();

        //使能秒中断
        RTC_ITConfig(RTC_IT_SEC, ENABLE);   

        //等待写入完成
        RTC_WaitForLastTask();
        
        
        time_now.tm_year = 2010;
        time_now.tm_mon = 6;
        time_now.tm_mday = 30;
        time_now.tm_hour = 12;
        time_now.tm_min = 00;
        time_now.tm_sec = 00;
        time_now.tm_isdst=0;//刚加的
        Time_SetCalendarTime(time_now);
        BKP_WriteBackupRegister(BKP_DR1,0xA5A5);//配置完成后,向后备寄存器中写特殊字符0xA5A5
        
        RCC_ClearFlag();
   
        // Enable PWR and BKP clocks
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR|RCC_APB1Periph_BKP,ENABLE);
   
        // Allow access to BKP Domain
        PWR_BackupAccessCmd(ENABLE);
}

//-------------------------------------------------------------------------------


u8 RTC_FG=0;


  /* Initialize the Demo */
  System_Init();
  RTC_FG=Cheak_RTC_MY();
  LCD_Init();
  //GPIOB->BSRR =GPIO_Pin_11;
  Key_GPIO_Init();
  
  
  LCD_write_english_string(5,66,"guanfu_wang@126.com",0X001F,0X0000);
// LCD_write_english_string(5,66+16,"RTC Init......",0Xf800,0X0000);
  if( RTC_FG==1)
  {
    Setup_RTC();
    LCD_write_english_string(5,66+16,"RTC Init....OK",0Xf800,0X0000);
  }
  else
  {
     LCD_write_english_string(5,66+16,"RTC ........OK",0Xf800,0X0000);
  }

////////////////////////////////////////////////////
发表于 2011-3-12 10:11:44 | 显示全部楼层
沙发?
发表于 2011-3-12 10:36:39 | 显示全部楼层
必须板凳,mark一下。
公益广告:本论坛不得使用、宣传Q群。 有讨论请在论坛里进行。 违者将封锁ID.
发表于 2011-3-12 11:14:48 | 显示全部楼层
调戏
公益广告:发表招聘帖子需要缴费,有需要可以联系网站工作人员王小姐:13711915767.
发表于 2011-3-12 11:22:20 | 显示全部楼层
已经换ds1302了。

不指望内部的rtc,不同的封装,不同批次都会有问题。
公益广告:广告只能发在本论坛的广告区,否则将封锁ID。
 楼主| 发表于 2011-3-12 11:32:12 | 显示全部楼层
把你的PCB图贴上来,不工作的
发表于 2011-3-12 11:38:06 | 显示全部楼层
我也感觉STM32的RTC太不稳定了,偶尔会死掉~~~~~很烦啊~~~
发表于 2011-3-12 11:55:59 | 显示全部楼层
我的RTC也出现过 测试正常,说不上啥时候就不好使了~很郁闷
发表于 2011-3-12 15:26:11 | 显示全部楼层
不贴图了,做了很多块板子,我放弃了内置的。以前有一款产品,经理说卖到北方去的,冬天会失效。

还是独立的rtc让人放心,不挑晶振。
发表于 2011-3-12 16:00:40 | 显示全部楼层
Mark一下先 RTC STM32
发表于 2011-3-12 16:37:32 | 显示全部楼层
标记一下

但还是不敢用
发表于 2011-3-12 17:44:43 | 显示全部楼层
RTC 没有问题.
发表于 2011-3-12 18:11:08 | 显示全部楼层
.
发表于 2011-3-12 18:11:31 | 显示全部楼层
标记一下,将要用
发表于 2011-3-12 18:13:56 | 显示全部楼层
mark
发表于 2011-3-12 18:16:58 | 显示全部楼层
标记一下,再看结果
发表于 2011-3-12 20:08:16 | 显示全部楼层
对电容的介质要严格要求么??
介质不一样回导致什么结果?
 楼主| 发表于 2011-3-12 21:45:15 | 显示全部楼层
介质不一样回导致最直接的就是不同温度。容量变化很很很大,损耗也变大了
发表于 2011-3-12 22:05:53 | 显示全部楼层
mark
发表于 2011-3-12 22:10:19 | 显示全部楼层
Mark
发表于 2011-3-12 22:23:50 | 显示全部楼层
我正在做相关的测试,多谢楼主,关键是RTC的稳定性如何。各位大侠说说。
发表于 2011-3-18 21:41:25 | 显示全部楼层
谢谢楼主!!!
 楼主| 发表于 2011-3-23 14:25:45 | 显示全部楼层
自己顶,似乎大家已经放弃内部RTC?
发表于 2011-3-23 16:21:51 | 显示全部楼层
STM32 RTC  的调试技巧
发表于 2011-3-23 17:29:30 | 显示全部楼层
mark
发表于 2011-4-7 11:38:02 | 显示全部楼层
2(重要):在STM32的VBAT脚与GND必须接至少一个陶瓷电容(100nF X7R介质材料)退藕,线要短/粗

这条要记住了,以后画板子加上,谢谢楼主!
发表于 2011-4-7 11:47:54 | 显示全部楼层
Mark:

1:32768HZ晶体,选一般6pF--12.5pF的;
2:在STM32的VBAT脚与GND必须接至少一个陶瓷电容(100nF X7R介质材料)退藕,线要短/粗
3:32768HZ晶体的负载电容焊盘与晶体焊盘之间线要短/粗,实际安装的电容须为NPO介质材料
4:STM32 RTC起振到稳定需要时间(1--3秒,和温度有关)建议写代码先开启STM32 RTC,然后去初始化其他外设,最后来判断RTC状态
发表于 2011-4-7 12:32:19 | 显示全部楼层
mark 留着用~
发表于 2011-4-7 12:36:55 | 显示全部楼层
mark 留着用
发表于 2011-4-7 12:40:01 | 显示全部楼层
mark RTC
发表于 2011-4-7 12:48:04 | 显示全部楼层
哈哈,感觉一下下。
发表于 2011-4-8 11:21:09 | 显示全部楼层
标记一下,将要用
发表于 2011-4-9 13:14:15 | 显示全部楼层
回答的很好
发表于 2011-4-9 14:23:35 | 显示全部楼层
MARK
发表于 2011-4-9 15:07:01 | 显示全部楼层
已经放弃内部RTC,楼主批量做过没有?内部RTC很挑晶振的.
 楼主| 发表于 2011-4-12 00:12:59 | 显示全部楼层
回复【34楼】wd8031
已经放弃内部rtc,楼主批量做过没有?内部rtc很挑晶振的.
-----------------------------------------------------------------------

用量不算大,不过他的启动时间是麻烦,特别是电池(我的应用是超级电容)的电压降到2V以下,又有点点电 停止震了,下次上电要等好久,,有时候要差不多30秒了
发表于 2011-4-12 09:00:30 | 显示全部楼层
我的更郁闷的是平时使用没问题,如果连续断电十个小时以上,再次上电总是无法启动RTC(通过查看RTC相关寄存器的值以后发现RTC在上电的时候停止了),但第二次上电又能正常使用,不知何故,郁闷中。。。
发表于 2011-4-12 14:54:04 | 显示全部楼层
说是挑晶体挑电容,其实还是还是设计的有问题,哪个见了独立的RTC芯片有这些问题呢?
产品在不同的地方表现不一致,有的起震时间1S,有的需要几十秒,也打算放弃RTC功能了。
发表于 2011-4-12 18:42:29 | 显示全部楼层
mark,stm32的RTC确实烦人!
发表于 2011-4-27 08:42:35 | 显示全部楼层
我做的板也碰到不起振的问题,发现重新焊接下又可以起振了,但是第二天来故障依旧,想了下可能是受潮导致的,用热风吹了下,起振了。 分析原因可能是焊好的板子没有清理干净,受潮后导致不能起振。
发表于 2011-4-28 10:54:12 | 显示全部楼层
楼主强悍
发表于 2011-4-29 14:11:29 | 显示全部楼层
mark!
发表于 2011-5-1 00:34:49 | 显示全部楼层
mark!
发表于 2011-5-3 14:46:59 | 显示全部楼层
mark!
发表于 2011-5-5 07:06:08 | 显示全部楼层
标记下
发表于 2011-5-24 18:00:10 | 显示全部楼层
mark
发表于 2011-5-24 18:57:39 | 显示全部楼层
mark!
发表于 2011-5-24 20:24:39 | 显示全部楼层
楼主一定没有被调戏过,大部分时间stm32用12P的32K晶振是OK的。批量生产以后你试试,把你玩残了!!
我们生产2K产品,首次检测5%左右不振。2检 3%,再检 3%........  。到最后估计只有一半没换成6P的了。
而且每次检都会出现几个。作为生产这是很严重的事故了。不要以为1-2片OK就可以了,产品是要批量化的!
发表于 2011-5-24 21:56:38 | 显示全部楼层
这个用有源晶振会不会就不会有问题呢?
发表于 2011-5-24 23:00:12 | 显示全部楼层
记号
发表于 2011-5-27 15:00:52 | 显示全部楼层
前辈,这个必须顶,不是一般的强人啊
发表于 2011-5-31 23:40:45 | 显示全部楼层
发表于 2011-6-1 01:51:56 | 显示全部楼层
mark
发表于 2011-6-1 06:40:55 | 显示全部楼层
支持
发表于 2011-6-1 09:08:10 | 显示全部楼层
stm32 RTC
发表于 2011-6-1 14:30:32 | 显示全部楼层
标记一下
发表于 2011-6-1 14:32:12 | 显示全部楼层
mark!!!!
发表于 2011-6-1 15:03:36 | 显示全部楼层
晶振要好喽,我现在都是用一块钱的晶振。另外也别指望百分百正常。偶尔还是会生气。
发表于 2011-6-2 21:41:19 | 显示全部楼层
mark  rtc问题
发表于 2011-6-3 11:43:00 | 显示全部楼层
RTC正在调试,一天跑快了11秒,一月5.5分,一年33小时.好可怕!
发表于 2011-6-3 11:43:49 | 显示全部楼层
对了,有没有人用过BKP_RTCCR,那个校准是怎么个用法啊?
发表于 2011-6-3 11:46:56 | 显示全部楼层
一直在论坛上看到说STM32 RTC的问题。。。mark下吧。
发表于 2011-6-5 17:21:06 | 显示全部楼层
3x
STM32 RTC 设计
发表于 2011-6-8 21:38:51 | 显示全部楼层
被调试过但是最终把他调戏了并且量产的Mark!
刚调试RTC的时候真的体会到了崩溃的滋味,各种不起振啊,必须用手摸,换晶振,换电容,一个脑袋两个大,最终匹配到6PF电容,已量产(不是非常大,但是没一个出问题),至今稳定,楼主的办法记下了,我没在VBAT脚与GND之间接电容,有机会一定试试
PS:启动时间觉得还好啊,没那么慢吧~~~
发表于 2011-6-9 08:52:11 | 显示全部楼层
回复【47楼】wy2000
楼主一定没有被调戏过,大部分时间stm32用12p的32k晶振是ok的。批量生产以后你试试,把你玩残了!!
我们生产2k产品,首次检测5%左右不振。2检 3%,再检 3%........  。到最后估计只有一半没换成6p的了。
而且每次检都会出现几个。作为生产这是很严重的事故了。不要以为1-2片ok就可以了,产品是要批量化的!

-----------------------------------------------------------------------

为什么不用6p的呢?手册上不是说了要用6P晶振么?还量产?自己给自己找累!
发表于 2012-1-4 16:42:24 | 显示全部楼层
顶,烦人的RTC
发表于 2012-1-4 17:34:36 | 显示全部楼层
调戏
发表于 2012-2-16 21:48:36 | 显示全部楼层
stm32 STC,mark
发表于 2012-2-16 22:03:42 | 显示全部楼层
也被STM322的RTC搞残了,下次试试lz的方法
发表于 2012-4-10 00:44:51 | 显示全部楼层
mark stm RTC32
发表于 2012-6-15 16:45:29 | 显示全部楼层
发表于 2012-6-15 16:56:18 | 显示全部楼层
确实很费劲的
发表于 2012-9-23 09:58:22 | 显示全部楼层
我关心的是STM32F2系列还有这个问题吗?
发表于 2012-9-23 17:03:15 | 显示全部楼层
楼主的这几条基本都有做
但1000片板子至少有100片会出现或者偶尔出现RTC不起振情况
发表于 2012-9-24 09:24:46 | 显示全部楼层
业余爱好者表示有就好,
发表于 2012-10-27 22:57:22 | 显示全部楼层
mark!!!!!!!!!
发表于 2012-10-27 23:11:34 | 显示全部楼层
从原来的NXP的LPC2138到现在的STM32,,我从来都是用外部RTC,内部RTC总是各种问题不断
发表于 2012-10-27 23:15:17 来自手机 | 显示全部楼层
还是不敢用
Top↑
友情提示:标题不合格、重复发帖,将会被封锁ID。详情请参考:论坛通告:封锁ID、获得注册邀请码、恢复被封ID、投诉必读
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|阿莫电子论坛(原ourAVR/ourDEV) ( 粤ICP备09047143号

GMT+8, 2014-7-27 01:11

阿莫电子论坛, 原"中国电子开发网"

© 2004-2013 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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