打印

求教:STM32 RTC容易导致死机问题

[复制链接]
16089|24
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhwxc|  楼主 | 2008-8-14 16:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    
    在实际使用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();
}
沙发
pb486| | 2008-8-14 22:43 | 只看该作者

关注

使用特权

评论回复
板凳
everbright| | 2008-8-15 14:34 | 只看该作者

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

外部晶振没起振可能,我现在也不知道他们为什么起振那么难?

使用特权

评论回复
地板
香水城| | 2008-8-15 16:02 | 只看该作者

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

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

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

谢谢!

使用特权

评论回复
5
ijk| | 2008-8-15 16:40 | 只看该作者

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

  看上去,多半是所用的32k Hz晶振难在STM32上面起振的问题

使用特权

评论回复
6
john_light| | 2008-8-15 16:46 | 只看该作者

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

使用特权

评论回复
7
zhwxc|  楼主 | 2008-8-16 09:39 | 只看该作者

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

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

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

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

使用特权

评论回复
8
zhwxc|  楼主 | 2008-8-16 09:44 | 只看该作者

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

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

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

使用特权

评论回复
9
香水城| | 2008-8-16 10:01 | 只看该作者

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

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

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

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

使用特权

评论回复
10
香水城| | 2008-8-16 10:33 | 只看该作者

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

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

使用特权

评论回复
11
zhwxc|  楼主 | 2008-8-16 14:09 | 只看该作者

问题可能在晶振的参数上

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

使用特权

评论回复
12
zhwxc|  楼主 | 2008-8-16 14:17 | 只看该作者

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

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

使用特权

评论回复
13
linjing| | 2008-8-16 21:03 | 只看该作者

关注中。。。

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

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

使用特权

评论回复
14
香水城| | 2008-8-17 00:02 | 只看该作者

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

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

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

使用特权

评论回复
15
everbright| | 2008-8-17 23:51 | 只看该作者

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

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

使用特权

评论回复
16
zhwxc|  楼主 | 2008-8-18 09:28 | 只看该作者

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

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

使用特权

评论回复
17
香水城| | 2008-8-18 15:45 | 只看该作者

回19楼:如果你的情况与楼主相同,你可以自行处理

可以通过mcu.china@st.com。

使用特权

评论回复
18
ijk| | 2008-8-18 16:24 | 只看该作者

楼上说得有理

  楼上说得有理,确实32k晶振中为12pF的负载电容很普遍,6pF的负载电容较少。
  另外关于32k晶振时好时坏的问题,在晶振的手册中有1段话:When load capacitance is small, the crystal resonator is vulnerable to changes in the ciruit characteristic, thus deteriorating frequency stability. 大意是说,如果晶振的负载电容太小,那么振荡电路就不稳定,容易受杂散参数的影响(如环境温湿度,PCB布线)。

使用特权

评论回复
19
ripny| | 2010-6-1 20:58 | 只看该作者
STM32的晶振要求很苛刻,必须是6pf负载的晶振!

使用特权

评论回复
20
chineser| | 2010-6-1 21:17 | 只看该作者
https://bbs.21ic.com/icview-173693-1-1.html

stm32  rtc专配
去年我的帖子https://bbs.21ic.com/icview-127683-3-1.html
搞了很久   最后可以了 但是还是 有不起振的几率  
这两天拿了几个 据说是rtc专配的晶振  试了下 果然好用  现在全部更替到这个rtc   不敢独享   分享给 受rtc困扰的网友工程师   晶振销售的联系方式 帖子里面好象有

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

21

帖子

1

粉丝