打印

STM32应用手记-坎坷的RTC

[复制链接]
3090|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xx-mcu|  楼主 | 2011-9-23 23:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
第一次将STM32嵌入式单片机应用到项目上,而且完全独立开发,首次接触嵌入式单片机,过程有点坎坷。此章手记,仅仅记录关于RTC硬件应用问题。         简练的描述此次项目设计验证中遇到的问题。设备经过数天的上下行参数设置、温补、三阶互调之后。设备送入老化箱进行高低温测试。问题出来了,进行低温老化的时候,当温度低于0℃时,设备如果重新上电,就无法启动。
         起初怀疑HSE外部7.3728MHz晶振失振,于是阅读了官方AN2586应用笔记,根据Pierce振荡器的设计说明,重新计算了CLRExt及振荡器的增益裕量。最终在官方推荐的范围被选定指标:CL1CL2=20p,RExt=390Ω(经过一番计算,还是选用参考参数靠谱,毕竟经过验证的参数)。
         调试过程中又出现原先芯片被搞坏现象,详细阅读了LSE相关说明后恍然大悟,烧芯片的不只是VBat,过大的gmcrit会导致内部振荡电路,其原因下文详细介绍。
         对于STM32™的LSE部分,推荐使用CL < 7pF的晶振(译注:过大的CL会导致过大的gmcrit,从而无法保证足够的增益裕量)。需要注意的另一项,LSE尽量不要加限流电阻,原因下方有说明。
         在应用手机最后一页结论有相关说明:对于振荡器是否能够起振来说,增益裕量是最重要的参数。在针对具体应用选择合适的晶振时,首先要计算增益裕量。第二个重要的参数是根据晶振制造商提供的数据,来选择外部负载电容,这决定了晶振频率的准确性。第三个重要的参数是外部限流电阻用以限制晶振的驱动级别。对于32kHz的振荡器来说,一般不推荐使用外部限流电阻(译注:因为LSE的常见问题是振荡器驱动能力不足而非晶振被过分驱动)。所以,32.768KHz最好不要串限流电阻。
         电路修改完,复测完毕,丢进老化箱继续,好家伙,低温重启时又挂掉,这个时候,有点头大了,难道不只是硬件问题?开始检查RTC初始化程序,最大嫌疑是初始化函数中调用固件库“stm32f10x_rtc.c”中的void RTC_WaitForLastTask(void)
//
此函数为等待最近一次对RTC寄存器的写操作完成。当外部晶振失振时,对RTC寄存器写操作时死在“while ((RTC->CRL & RTC_FLAG_RTOFF) == (uint16_t)RESET)语句中”如图所示:




         问题找到自然有办法解决了,哈!

相关帖子

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

本版积分规则

1

主题

47

帖子

3

粉丝