搜索
bottom↓
回复: 8

STM32 RTC采用外部晶振初始化通过但未启振

[复制链接]

出0入0汤圆

发表于 2017-2-23 22:08:07 | 显示全部楼层 |阅读模式
采用STM32F2平台,使用外部32.768晶振。RTC初始化如下,实际调试跟踪让其运行到RTC_Config下的while(RCC_GetFlagStatus(RCC_FLAG_LSERDY)==RESET);后能正常往后运行
但用示波器测量晶振时没有启振。大家用的平台有没有测试下晶振到底启振没?
为什么这个判断在外部晶振没启振时还可以通过,难道读回来的寄存器值不是真实反应外部晶振状态么?
如果外部的32.768晶振没启振,是不是默认采用内部LSI的32KHz作为RTC时钟源了?因为我发现软件配置采用外部LSE,但是LSE没有启振时,RTC也能正常工作只是时间久了不准了。
  1. void MyRTC_Init(void)
  2. {
  3.     if (RTC_ReadBackupRegister(RTC_BKP_DR0) != 0x32F2)//未设置时间
  4.     {  
  5.         RTC_Config();
  6.         RTC_WriteBackupRegister(RTC_BKP_DR10,0xAA55);

  7.         RTC_InitStructure.RTC_AsynchPrediv = 0x7F;
  8.         RTC_InitStructure.RTC_SynchPrediv = 0xFF;
  9.         RTC_InitStructure.RTC_HourFormat = RTC_HourFormat_24;
  10.         if(RTC_Init(&RTC_InitStructure) == ERROR)return 1;
  11.         RTC_Timeset(0,0,0,15,4,23);
  12.     }
  13.     else
  14.     {   
  15.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);
  16.         PWR_BackupAccessCmd(ENABLE);
  17.         RTC_WaitForSynchro();
  18.         RTC_ClearFlag(RTC_FLAG_ALRAF);
  19.         EXTI_ClearITPendingBit(EXTI_Line17);

  20.         RTC_WriteBackupRegister(RTC_BKP_DR10,0xAA55);
  21.     }
  22. }

  23. void RTC_Config(void)
  24. {
  25.     RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);
  26.     PWR_BackupAccessCmd(ENABLE);
  27.     RCC_LSEConfig(RCC_LSE_ON);
  28.     while(RCC_GetFlagStatus(RCC_FLAG_LSERDY)==RESET);//为什么LSE没启振,此处还可以往下运行?
  29.     RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);
  30.     RCC_RTCCLKCmd(ENABLE);
  31.     RTC_WaitForSynchro();
  32. }
复制代码

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2017-2-24 04:27:00 | 显示全部楼层
示波器要用高阻探头,置10mV档,测RTC晶振输出引脚或许能看到波形,当然更有可能你一测晶振就停振了,毕竟低功耗晶振电路的信号太弱了,很容易被示波器探头影响。正确的做法是将LSE信号通过MCO1引脚输出再用示波器观察MCO1的波形。

出0入0汤圆

 楼主| 发表于 2017-2-24 11:20:59 | 显示全部楼层
senjet 发表于 2017-2-24 04:27
示波器要用高阻探头,置10mV档,测RTC晶振输出引脚或许能看到波形,当然更有可能你一测晶振就停振了,毕竟 ...

用MCO测了下是有输出的,同时换了个探头测有微小的振幅,差不多50mV而且不是很规则很大纹波。大家用STM的RTC做产品有出现停振么?

出0入0汤圆

发表于 2017-2-24 11:23:19 | 显示全部楼层
pigy0754 发表于 2017-2-24 11:20
用MCO测了下是有输出的,同时换了个探头测有微小的振幅,差不多50mV而且不是很规则很大纹波。大家用STM的 ...

很正常,stm32就存在这个问题。

出0入0汤圆

发表于 2017-2-24 13:56:28 | 显示全部楼层
STM32 RTC的晶振,一直是个热议很久的话题。建议楼主用MC-306 6pF试试(x商城有卖),号称是STM32 RTC的专用晶振

出0入31汤圆

发表于 2017-2-24 20:40:13 来自手机 | 显示全部楼层
如果示波器没有问题的话,你这个振幅感觉有点低,建议楼主使用楼上推荐的晶体试试,注意外部的电容不要太大,6pF即可

出0入0汤圆

 楼主| 发表于 2017-2-24 21:48:56 | 显示全部楼层
ANHOME 发表于 2017-2-24 13:56
STM32 RTC的晶振,一直是个热议很久的话题。建议楼主用MC-306 6pF试试(x商城有卖),号称是STM32 RTC的专用 ...

还有这事,后面试一下。谢谢!

出0入0汤圆

发表于 2017-3-10 18:18:27 | 显示全部楼层
换6pf晶振,妥妥的老铁没毛病

出0入0汤圆

发表于 2017-5-1 09:42:13 | 显示全部楼层
咨询楼主一个题外的问题
最近我这里想上一个平板电脑的项目,楼主有兴趣没
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-26 15:00

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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