被坑慘了,mcu內(nèi)部RC振蕩器慎用?。?!
前言
寫文章之前,先調(diào)查一個小問題。如下圖 1 為某32位單片機的系統(tǒng)框圖,我們可以看到系統(tǒng)時鐘可以選擇內(nèi)部RC振蕩器或者外部晶振:那么大家寫程序時,習慣用外部晶振來為系統(tǒng)分頻用還是習慣用內(nèi)部晶振?圖 1相信這兩種方式都不在少數(shù)吧,用內(nèi)部晶振的工程師估計多數(shù)都有成本方面的考慮,畢竟很多產(chǎn)品對成本壓的比較厲害。當然高附加值的產(chǎn)品估計不會對一顆晶振計較,為了系統(tǒng)整體性能,會果斷選擇用外部晶振,突出一個有錢~問題描述及解決方式
那么使用內(nèi)部RC振蕩器晶振會存在哪些問題呢?分享之前遇到的一個技術問題,某款單片機有兩個晶振,一個晶振作為系統(tǒng)主時鐘24MHz主時鐘,另一個是RTC32.768kHz低速時鐘,低速時鐘摘取關鍵的描述如下:圖 2總結下上面描述的主要意思有4點:1、RTC時鐘源有兩個,一個可以來自外部,另一個可以來自系統(tǒng)內(nèi)部RC振蕩器;2、RTC時鐘主要用于喚醒電路、下電實時時鐘操作、低速低功耗系統(tǒng)、看門狗計數(shù)器輸入;3、內(nèi)部RC振蕩器的精度在50%,其啟動要比外部32.768kHz晶振快;4、當系統(tǒng)檢測不到外部32.768kHz晶振時,會自動切換到內(nèi)部RC振蕩器,且不需要軟件配置;項目首次做樣機時,兩個晶振都放上了,后來翻看技術手冊發(fā)現(xiàn)了這顆晶振可以去掉,用內(nèi)部RC替代,心想既然廠家做了這樣一個內(nèi)部晶振供使用,那么其性能也是可以的,并且也去掉后在實驗室常溫下跑了下全業(yè)務運行,沒有出現(xiàn)異常。因此,在原理圖評審時跟同事決定將此晶振去掉來降低一部分成本,畢竟剩下來的是幾十萬的純利潤。就這樣,下一批樣機到了,產(chǎn)品做回歸測試,常溫下測試沒問題,但是在高低溫實驗箱跑到60多度環(huán)境溫度就出線重啟,查了好久,實驗過程中將各個電源用示波器檢測起來,樣機出線故障時,電源并無異常,蒙圈了,這個問題有點上頭。核對與上版原理圖的差異,只有晶振這塊去掉了,難道是這的問題,查看芯片手冊,看到了上圖 2 的描述,立即換下一臺樣機做測試,故障沒有復現(xiàn),又準備了3臺樣機去做測試,故障沒有復現(xiàn),基本確定是晶振導致的本次問題。高溫測試時內(nèi)置RC振蕩器時鐘波動范圍太大,導致喂狗時間錯誤,然后重啟復位了,因此最終還是決定要接外置的32.768kHz晶振。經(jīng)驗總結
1、單片機內(nèi)部RC振蕩器可靠性一般,產(chǎn)品可靠性要求高的應用不建議使用;2、如果要使用內(nèi)部振蕩器作為時鐘,外部晶振空置不接,一般可以考慮將晶振輸入引腳接地、輸出引腳懸空處理,具體芯片可以參照數(shù)據(jù)手冊推薦的方式處理;3、修改對溫度影響敏感的電路,需要做相應的溫度測試;
End
微信公眾號后臺回復關鍵字“加群”,添加小編微信,拉你入技術群。