amoBBS 阿莫电子论坛

 找回密码
 注册
查看: 7585|回复: 77

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

[复制链接]

236

主题

0

好友

5453

积分

论坛元老

Rank: 8Rank: 8

莫元
5050
发表于 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);
  }

////////////////////////////////////////////////////

2

主题

0

好友

153

积分

注册会员

Rank: 2

莫元
149
发表于 2011-3-12 10:11:44 |显示全部楼层
沙发?

32

主题

0

好友

439

积分

中级会员

Rank: 3Rank: 3

莫元
439
发表于 2011-3-12 10:36:39 |显示全部楼层
必须板凳,mark一下。

40

主题

0

好友

986

积分

高级会员

Rank: 4

莫元
990
发表于 2011-3-12 11:14:48 |显示全部楼层
调戏

9

主题

0

好友

1402

积分

金牌会员

Rank: 6Rank: 6

莫元
1372
发表于 2011-3-12 11:22:20 |显示全部楼层
已经换ds1302了。

不指望内部的rtc,不同的封装,不同批次都会有问题。

236

主题

0

好友

5453

积分

论坛元老

Rank: 8Rank: 8

莫元
5050
发表于 2011-3-12 11:32:12 |显示全部楼层
把你的PCB图贴上来,不工作的

17

主题

0

好友

1237

积分

金牌会员

Rank: 6Rank: 6

莫元
1164
发表于 2011-3-12 11:38:06 |显示全部楼层
我也感觉STM32的RTC太不稳定了,偶尔会死掉~~~~~很烦啊~~~

21

主题

0

好友

879

积分

高级会员

Rank: 4

莫元
813
发表于 2011-3-12 11:55:59 |显示全部楼层
我的RTC也出现过 测试正常,说不上啥时候就不好使了~很郁闷

9

主题

0

好友

1402

积分

金牌会员

Rank: 6Rank: 6

莫元
1372
发表于 2011-3-12 15:26:11 |显示全部楼层
不贴图了,做了很多块板子,我放弃了内置的。以前有一款产品,经理说卖到北方去的,冬天会失效。

还是独立的rtc让人放心,不挑晶振。

2

主题

0

好友

55

积分

注册会员

Rank: 2

莫元
55
发表于 2011-3-12 16:00:40 |显示全部楼层
Mark一下先 RTC STM32

38

主题

0

好友

3143

积分

论坛元老

Rank: 8Rank: 8

莫元
2473
发表于 2011-3-12 16:37:32 |显示全部楼层
标记一下

但还是不敢用

78

主题

0

好友

1654

积分

金牌会员

Rank: 6Rank: 6

莫元
1654
发表于 2011-3-12 17:44:43 |显示全部楼层
RTC 没有问题.

41

主题

0

好友

483

积分

中级会员

Rank: 3Rank: 3

莫元
481
发表于 2011-3-12 18:11:08 |显示全部楼层
.

41

主题

0

好友

483

积分

中级会员

Rank: 3Rank: 3

莫元
481
发表于 2011-3-12 18:11:31 |显示全部楼层
标记一下,将要用

1

主题

0

好友

25

积分

游客

莫元
25
发表于 2011-3-12 18:13:56 |显示全部楼层
mark

8

主题

0

好友

336

积分

中级会员

Rank: 3Rank: 3

莫元
336
发表于 2011-3-12 18:16:58 |显示全部楼层
标记一下,再看结果

24

主题

0

好友

405

积分

中级会员

Rank: 3Rank: 3

莫元
388
发表于 2011-3-12 20:08:16 |显示全部楼层
对电容的介质要严格要求么??
介质不一样回导致什么结果?

236

主题

0

好友

5453

积分

论坛元老

Rank: 8Rank: 8

莫元
5050
发表于 2011-3-12 21:45:15 |显示全部楼层
介质不一样回导致最直接的就是不同温度。容量变化很很很大,损耗也变大了

0

主题

0

好友

259

积分

中级会员

Rank: 3Rank: 3

莫元
259
发表于 2011-3-12 22:05:53 |显示全部楼层
mark

16

主题

0

好友

507

积分

高级会员

Rank: 4

莫元
503
发表于 2011-3-12 22:10:19 |显示全部楼层
Mark

25

主题

0

好友

282

积分

中级会员

Rank: 3Rank: 3

莫元
282
发表于 2011-3-12 22:23:50 |显示全部楼层
我正在做相关的测试,多谢楼主,关键是RTC的稳定性如何。各位大侠说说。

41

主题

0

好友

387

积分

中级会员

Rank: 3Rank: 3

莫元
382
发表于 2011-3-18 21:41:25 |显示全部楼层
谢谢楼主!!!

236

主题

0

好友

5453

积分

论坛元老

Rank: 8Rank: 8

莫元
5050
发表于 2011-3-23 14:25:45 |显示全部楼层
自己顶,似乎大家已经放弃内部RTC?

2

主题

0

好友

374

积分

中级会员

Rank: 3Rank: 3

莫元
363
发表于 2011-3-23 16:21:51 |显示全部楼层
STM32 RTC  的调试技巧

2

主题

0

好友

94

积分

注册会员

Rank: 2

莫元
94
发表于 2011-3-23 17:29:30 |显示全部楼层
mark

7

主题

0

好友

1567

积分

金牌会员

Rank: 6Rank: 6

莫元
1564
发表于 2011-4-7 11:38:02 |显示全部楼层
2(重要):在STM32的VBAT脚与GND必须接至少一个陶瓷电容(100nF X7R介质材料)退藕,线要短/粗

这条要记住了,以后画板子加上,谢谢楼主!

9

主题

0

好友

660

积分

高级会员

Rank: 4

莫元
419
发表于 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状态

3

主题

0

好友

288

积分

中级会员

Rank: 3Rank: 3

莫元
288
发表于 2011-4-7 12:32:19 |显示全部楼层
mark 留着用~

3

主题

0

好友

69

积分

注册会员

Rank: 2

莫元
69
发表于 2011-4-7 12:36:55 |显示全部楼层
mark 留着用

8

主题

0

好友

155

积分

注册会员

Rank: 2

莫元
155
发表于 2011-4-7 12:40:01 |显示全部楼层
mark RTC

20

主题

0

好友

1217

积分

金牌会员

Rank: 6Rank: 6

莫元
866
发表于 2011-4-7 12:48:04 |显示全部楼层
哈哈,感觉一下下。

5

主题

0

好友

73

积分

注册会员

Rank: 2

莫元
71
发表于 2011-4-8 11:21:09 |显示全部楼层
标记一下,将要用

2

主题

0

好友

164

积分

游客

莫元
164
发表于 2011-4-9 13:14:15 |显示全部楼层
回答的很好

4

主题

0

好友

330

积分

中级会员

Rank: 3Rank: 3

莫元
307
发表于 2011-4-9 14:23:35 |显示全部楼层
MARK

4

主题

0

好友

138

积分

注册会员

Rank: 2

莫元
138
发表于 2011-4-9 15:07:01 |显示全部楼层
已经放弃内部RTC,楼主批量做过没有?内部RTC很挑晶振的.

236

主题

0

好友

5453

积分

论坛元老

Rank: 8Rank: 8

莫元
5050
发表于 2011-4-12 00:12:59 |显示全部楼层
回复【34楼】wd8031
已经放弃内部rtc,楼主批量做过没有?内部rtc很挑晶振的.
-----------------------------------------------------------------------

用量不算大,不过他的启动时间是麻烦,特别是电池(我的应用是超级电容)的电压降到2V以下,又有点点电 停止震了,下次上电要等好久,,有时候要差不多30秒了

2

主题

0

好友

203

积分

中级会员

Rank: 3Rank: 3

莫元
198
发表于 2011-4-12 09:00:30 |显示全部楼层
我的更郁闷的是平时使用没问题,如果连续断电十个小时以上,再次上电总是无法启动RTC(通过查看RTC相关寄存器的值以后发现RTC在上电的时候停止了),但第二次上电又能正常使用,不知何故,郁闷中。。。

46

主题

0

好友

1633

积分

金牌会员

Rank: 6Rank: 6

莫元
1575
发表于 2011-4-12 14:54:04 |显示全部楼层
说是挑晶体挑电容,其实还是还是设计的有问题,哪个见了独立的RTC芯片有这些问题呢?
产品在不同的地方表现不一致,有的起震时间1S,有的需要几十秒,也打算放弃RTC功能了。

0

主题

0

好友

66

积分

注册会员

Rank: 2

莫元
67
发表于 2011-4-12 18:42:29 |显示全部楼层
mark,stm32的RTC确实烦人!

20

主题

0

好友

122

积分

注册会员

Rank: 2

莫元
122
发表于 2011-4-27 08:42:35 |显示全部楼层
我做的板也碰到不起振的问题,发现重新焊接下又可以起振了,但是第二天来故障依旧,想了下可能是受潮导致的,用热风吹了下,起振了。 分析原因可能是焊好的板子没有清理干净,受潮后导致不能起振。
友情提示:标题不合格、重复发帖,将会被封锁ID。详情请参考:论坛通告:封锁ID、获得注册邀请码、恢复被封ID、投诉必读
您需要登录后才可以回帖 登录 | 注册

手机版|Archiver|阿莫电子论坛(原中国电子开发网) ( 粤ICP备09047143号 )

GMT+8, 2013-5-23 13:21

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

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

回顶部