查看原文
其他

被坑惨了,MCU内部RC振荡器慎用!

The following article is from 8号线攻城狮 Author 孔乙不己

首先,调查一个问题。如下图所示,这是某32位单片机的系统框图。我们可以看到,系统时钟可以选择内部RC振荡器或者外部晶振。

那么大家在写程序的时候,习惯用外部晶振来为系统分频用,还是习惯用内部晶振?

图 1

相信这两种方式都不在少数吧,用内部晶振的工程师估计多数都有成本方面的考虑,毕竟很多产品对成本压的比较厉害。

当然,高附加值的产品估计不会对一颗晶振计较,为了系统整体性能,会果断选择用外部晶振,突出一个有钱~

1、问题描述及解决方法

那么,使用内部RC振荡器晶振会存在哪些问题呢?
下面,分享一个之前遇到的技术问题。某款单片机有两个晶振,一个晶振作为系统主时钟24MHz主时钟,另一个是RTC32.768kHz低速时钟,低速时钟摘取关键的描述如下:

图 2
上面描述的主要有四点:
1、RTC时钟源有两个,一个可以来自外部,另一个可以来自系统内部RC振荡器;
2、RTC时钟主要用于唤醒电路、下电实时时钟操作、低速低功耗系统、看门狗计数器输入;
3、内部RC振荡器的精度在50%,其启动要比外部32.768kHz晶振快;
4、当系统检测不到外部32.768kHz晶振时,会自动切换到内部RC振荡器,且不需要软件配置。
项目首次做样机时,两个晶振都放上了,后来翻看技术手册,发现这颗晶振可以去掉,用内部RC替代。于是心想,既然厂家做了这样一个内部晶振供使用,那么其性能也是可以的,并且也去掉后在实验室常温下跑了下全业务运行,没有出现异常。因此,在原理图评审时,跟同事决定将此晶振去掉来降低一部分成本,毕竟剩下来的是几十万的纯利润。
就这样,下一批样机到了,产品做回归测试,常温下测试没问题,但在高低温实验箱跑到60多度环境温度就出线重启,查了好久,实验过程中将各个电源用示波器检测起来,样机出线故障时,电源并无异常,蒙圈了,这个问题有点上头
核对与上版原理图的差异,只有晶振这块去掉了,难道是这的问题?查看芯片手册,看到了上图 2 的描述,立即换下一台样机做测试,故障没有复现。然后又准备了3台样机去做测试,故障没有复现,由此基本确定是晶振导致的本次问题。
高温测试时,内置RC振荡器时钟波动范围太大,导致喂狗时间错误,然后重启复位了,因此最终还是决定要接外置的32.768kHz晶振。

2、经验总结

1、单片机内部RC振荡器可靠性一般,产品可靠性要求高的应用不建议使用;

2、如果要使用内部振荡器作为时钟,外部晶振空置不接,一般可以考虑将晶振输入引脚接地、输出引脚悬空处理,具体芯片可以参照数据手册推荐的方式处理;

3、修改对温度影响敏感的电路,需要做相应的温度测试。


推荐阅读

单片机跑操作系统,到底有几种选择?
USB 2、3、3.1、3.2和4有什么区别?超详细解读能效提高10万倍,无需电池的水下摄影机问世!它是怎么做到的?关于半导体存储的最强入门科普

添加微信回复“进群”

拉你进技术交流群!

国产芯|汽车电子|物联网|新能源|电源|工业|嵌入式…..  

在公众号内回复您想搜索的任意内容,如问题关键字、技术名词、bug代码等,就能轻松获得与之相关的专业技术内容反馈。快去试试吧!
如果您想经常看到我们的文章,可以进入我们的主页,点击屏幕右上角“三个小点”,点击“设为星标”。
欢迎扫码关注


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存