15089|31

83

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

求教:STM32RTC容易导致死机问题 [复制链接]

    
    在实际使用STM32的过程中,发现实时时钟经常不能完成初始化,程序死在时钟初始化的等待循环中,发生的几率大概超过5%。而且不是固定的哪一个机器,每个机器都有可能开机后进入死循环。重新开关几次机,又可能正常了,以后可能就很难再发生。这个问题非常令人烦恼,因为具有很大的随机性,既难以判断问题,又不好测试是否已经解决。可以肯定不是32768HZ时钟晶振的问题,同一批晶振,在其它MCU或时钟芯片上批量使用一直都是正常的。

void RTC_Config(void)
{
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
  
  PWR_BackupAccessCmd(ENABLE);  /* Allow access to BKP Domain */

  BKP_DeInit(); /* Reset Backup Domain */

  RCC_LSEConfig(RCC_LSE_ON);    /* Enable LSE */
  
  while(RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET);/* Wait till LSE is ready */  (可能的死循环点)

  RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);  /* Select LSE as RTC Clock Source */

  RCC_RTCCLKCmd(ENABLE);/* Enable RTC Clock */

  RTC_WaitForSynchro();(可能的死循环点)

  /* Wait until last write operation on RTC registers has finished */
  RTC_WaitForLastTask();(可能的死循环点)

  /* Enable the RTC Second */  
  RTC_ITConfig(RTC_IT_SEC, ENABLE);

  /* Wait until last write operation on RTC registers has finished */
  RTC_WaitForLastTask();
  
  RTC_SetPrescaler(32767); /* RTC period = RTCCLK/RTC_PR = (32.768 KHz)/(32767+1) */
  
  /* Wait until last write operation on RTC registers has finished */
  RTC_WaitForLastTask();
}
此帖出自stm32/stm8论坛

最新回复

哥们解决了没有,断电后将VBAT完全放电,每次上电必复现。我也有此问题,解决不了。   详情 回复 发表于 2022-3-3 12:40

点评

楼主问题怎么解决的啊!我现在也是啊!上电程序有时跑不起来,但是示波器量晶振确实振起来了,  详情 回复 发表于 2012-8-15 08:37
点赞 关注
 

回复
举报

66

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

关注

                                  
此帖出自stm32/stm8论坛
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

呵呵,这个问题我也遇到过,还没能解决.

                                 外部晶振没起振可能,我现在也不知道他们为什么起振那么难?
此帖出自stm32/stm8论坛
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

4
 

请楼上几位就近与ST的FAE联系

希望你们能够向我们提供几个(5片)晶振的样片,这样可以在我们实验室中重现你的现象,以便我们做出分析。

目前市面上的晶振产品质量良莠不齐,我们这样在论坛上空对空的讨论,很难能够解决问题。

谢谢!
此帖出自stm32/stm8论坛
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

5
 

可以看看偶的《初学者笔记-》

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

56

帖子

0

TA的资源

一粒金砂(初级)

6
 

库函数有问题!红色部分

void RCC_LSEConfig(u32 RCC_LSE)
{
  /* Check the parameters */
  assert(IS_RCC_LSE(RCC_LSE));

  /* Reset LSEON and LSEBYP bits before configuring the LSE ------------------*/
  /* Reset LSEON bit */
  *(vu8 *) BDCR_BASE = RCC_LSE_OFF;

  /* Reset LSEBYP bit */
  *(vu8 *) BDCR_BASE = RCC_LSE_OFF;

  /* Configure LSE (RCC_LSE_OFF is already covered by the code section above) */
此帖出自stm32/stm8论坛
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

7
 

改为如下试试

    
      /* Enable LSE */
      //RCC_LSEConfig(RCC_LSE_ON);
    STM32_Rcc_Regs->bdcr.bit.LSEON=0;    // Reset LSEON bit     0:外部32kHz振荡器关闭
    STM32_Rcc_Regs->bdcr.bit.LSEBYP=0;    // Reset LSEBYP bit    0:LSE时钟未被旁路
    STM32_Rcc_Regs->bdcr.bit.LSERDY=0;    // Reset LSERDY bit    0:外部32kHz振荡器未就绪
    STM32_Rcc_Regs->bdcr.bit.LSEON=1;    // 外部低速振荡器使能    
    
此帖出自stm32/stm8论坛
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

8
 

或许是32k Hz晶振难起振的问题

                                   看上去,多半是所用的32k Hz晶振难在STM32上面起振的问题
此帖出自stm32/stm8论坛
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

9
 

曾经碰到过质量很差的32768晶振

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

10
 

练拳不练功,到老一场空。那么练拳也练功呢?

”可以肯定不是32768HZ时钟晶振的问题,同一批晶振,在其它MCU或时钟芯片上批量使用一直都是正常的。“
此帖出自stm32/stm8论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

11
 

再次声明:应该不是晶振的问题

同一批晶振,在S3C44B0X(ARM7)和PCF8563(专用时钟芯片)上一直都是很正常的,极个别不起振也是晶振的问题,换后就正常了,但从没有出现过现在这样随机出现不能工作的问题。

目前希望能尽快确定是STM32的RTC时钟难以起振还是软件方面的时序有问题,如果是软件方面的问题,比较好解决。否则ST就应该提供更详细的RTC时钟方面的参考设计,特别是对晶振的具体要求。

这个问题难以测试,我们生产中经常出现第一遍测试全部通过,第2次重新开机测试时又发现有1/3开不了机(原因就是死在RTC启动的等待循环中),关机后,反复开机多次又会有几台能正常工作了。随机性是这个问题难以判断和处理的地方。说不准哪一台在投运后会出现开机死机的问题,每一台都有可能。

此帖出自stm32/stm8论坛
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

12
 

再次声明2:应该不是晶振的问题

同一批晶振,在S3C44B0X(ARM7)和PCF8563(专用时钟芯片)上一直都是很正常的,极个别不起振也是晶振的问题,换后就正常了,但从没有出现过现在这样随机出现不能工作的问题。

这2种设备的使用台数都超过1000台,样本足够大,应该能说明晶振是没有什么问题的,至少没有不稳定的情况。
此帖出自stm32/stm8论坛
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

13
 

数据手册上有对晶振的具体要求

不管是晶振的问题还是STM32的问题,我都要在看到具体的现象经过仪器的观测和测量才能找到真正的原因。

你现在一口咬定晶振没有问题,怀疑STM32有问题,要求ST给出说明,但是又不肯提供样片进行测试,这是不是有点强人所难?

如果你只相信你自己的判断,只要求ST提供资料,请参考STM32的数据手册和应用笔记AN2586,那里面有对晶振的具体要求和电路设计指南。下面是数据手册上有关LSE部分对晶振电路部分的说明。
此帖出自stm32/stm8论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

14
 

问题的解决需要大家的共同努力

                                 我不否认STM32是完美无缺的,但为了找出它的弱点并完善STM32,我也需要一些样片分析以确定问题的根源,明确改进的方向,同时也可以尝试在STM32确有不足的情况下找出补救的措施,从这一点讲也希望你能协助。或者你能提供你使用的晶振的型号和各项参数指标,如果能提供销售商的信息更好。
此帖出自stm32/stm8论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

15
 

问题可能在晶振的参数上

上面的参数我在手册上怎么找不到?我这里的手册上并没有这么详细,也根本没有提到过不能使用12.5p负载电容的晶振。我查了一下,我们一直用的都是负载电容12.5p的晶振,但是其它IC上都从来没有出过这种问题。ST为什么要做这样的限制?而且手册上也不说清楚。
此帖出自stm32/stm8论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

16
 

我用的是版本7的手册,2008年5月更新的

                                 我用的是版本号为7的手册,2008年5月更新的
此帖出自stm32/stm8论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

17
 

关注中。。。

这个问题俺也同样遇到了:(
新板子焊好,时钟连续跑了几天都没事,后来突然就出现时断时停,经诊断,与楼主所述现象一致,另外补充几点
1.用电池的时候RTC计时可能正常,在上电的一瞬间就很容易出现停振
2.我用的晶振就是在小摊上买的,不知道哪个厂家的,以前用ISL1208专用时钟芯片没出过问题
3.前几天不出问题的时候我这天特好,怀疑这几天天气太潮了所以才出问题,楼主你哪情况如何,下次实验的时候注意一天环境情况!啊!

特别声明,STM32的RTC的32计数功能很好用,特别是配合BKP的时候,强烈期待此问题解决,持续关注中。。。
此帖出自stm32/stm8论坛
 
 
 

回复

58

帖子

0

TA的资源

一粒金砂(初级)

18
 

请下载最新的STM32F103x6/8/B数据手册

回15楼:关于“ST为什么要做这样的限制?”的问题,我不是芯片设计师,所以无法回答,但如果数据手册中已经明确说明,也就没必要解释了。

回17楼:“强烈期待此问题解决”,请看我在14楼的发言和15楼关于这个问题的发言,对我来说这个问题已经解决,如果没有你的配合,你的问题也无法解决。如果你愿意请寄几个样片供测试,或者请把你用的晶振参数给出来,以便分析。
相关链接:http://www.st.com/stonline/products/literature/ds/13587.pdf
此帖出自stm32/stm8论坛
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

19
 

看来香版那里的板子没这种情况了。

                                 我的网友包括我都有遇到这种情况。版主那里的板子都是评估板吗?可能评估板的设计更符合要求吧。版主请您把联系方式或地址留,如果可以我寄一套板子过去,你给诊断诊断。
此帖出自stm32/stm8论坛
 
 
 

回复

88

帖子

0

TA的资源

一粒金砂(初级)

20
 

原来是刚刚更新的资料,ST这次确实比较害人

                                 ST最新更新的资料(2008年7月)倒是写得很详细,但是以前版本的资料根本没有说清楚,大概是全世界很多用户都遇到类似问题,ST才在最新资料里给出了详细的参考参数。ST这个设计确实是一大败笔,极容易导致用户使用时出现问题。32768晶振最普遍的就是12.5p负载电容的类型,我们用过的其它所有的IC都可以支持。6P负载电容的型号市场上还不容易买到,而且这样还导致库存上配置2种型号的32768晶振。
此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表