STM32F103系列RTC晶振問題解決記錄
我從2014年開始使用STM32內(nèi)部RTC用于產(chǎn)品,之前出現(xiàn)過很多問題,也換過很多晶振,比如按照ST推薦的6pF晶振,也出現(xiàn)很多問題,貼片的很貴的那種也用過幾種,都不行,查詢了一些晶振啟振的資料,最后還是使用2mm的那種最便宜的晶振,使用過多個(gè)批次,每次200套左右,已經(jīng)1000多套了,只有幾套出現(xiàn)問題,并且更換晶振后都能夠修復(fù),賣出去的產(chǎn)品里面也只有一套出現(xiàn)問題了(我程序里面如果檢測到RTC外部晶振故障,會(huì)多次重試,依舊不行會(huì)切換到內(nèi)部晶振,并且設(shè)備聯(lián)網(wǎng)可以校時(shí))。
3).如何選擇電容C1,C2?
(1):因?yàn)槊恳环N晶振都有各自的特性,所以最好按制造廠商所提供的數(shù)值選擇外部元器件。(2):在許可范圍內(nèi),C1,C2值越低越好。應(yīng)該試用電容將他的振蕩頻率調(diào)到IC所需要的頻率,越準(zhǔn)確越好,C值偏大雖有利于振蕩器的穩(wěn)定,但將會(huì)增加起振時(shí)間。
(3):應(yīng)使C2值大于C1值,這樣可使上電時(shí),加快晶振起振。
?? (4) 對(duì)于32KHZ以上的晶體振蕩器,當(dāng)VDD>4.5V時(shí),建議C1=C2≈30PF。?
1.根據(jù)這個(gè)資料我把int腳上面的電容去掉,out腳上面的電容接6pF(不接電容out腳信號(hào)很強(qiáng),但是有點(diǎn)變形,接6pF電容后接近正弦波,接18pF后幅度變小),這樣解決了99%以上的STM32晶振問題(用的是2mm圓柱晶振,最便宜的那種)。
2.很久沒有折騰晶振問題,最近2個(gè)新產(chǎn)品上面(幾塊板子同時(shí)出問題,肯定不是偶然了)遇到了,一個(gè)最終調(diào)試發(fā)現(xiàn)是PC13,靠近in的那個(gè)腳,如果有高電平或脈沖,會(huì)導(dǎo)致很大部分的晶振不啟振,或者突然停止振動(dòng)(也是調(diào)試很久,對(duì)比發(fā)現(xiàn)這個(gè)問題的),通過把PC13接低電平(或者輸出低電平)解決了這個(gè)批次的問題。
3.還有一個(gè)產(chǎn)品也是新產(chǎn)品,幾片同樣出現(xiàn)晶振不啟振,目前正在調(diào)試,剛剛測試發(fā)現(xiàn)只要用示波器接out是可以顯示波形,接in后晶振立即停止了,抗干擾能力非常弱,這也就是STM32的最大bug,上面PC13腳影響RTC同樣是這個(gè)問題。
看到晶振啟動(dòng)電路后,我嘗試加上一個(gè)10M電阻在晶振兩端,發(fā)現(xiàn)晶振啟振特別穩(wěn)定,并且用示波器也能看到穩(wěn)定的波形。
in腳上面穩(wěn)定的波形,并且抗干擾能力變強(qiáng)了,也不再受到PC13以及示波器的影響而停止了。
out腳上面波形有畸變,并且幅度較小。
4.如果是手工焊接的,建議使用酒精或洗板水把晶振附近焊接點(diǎn)清洗干凈,也可以解決部分出問題設(shè)備。
通過上面這些改進(jìn),可以解決我目前所遇到的所有晶振問題,但是很折騰人,馬上又要出1000套貨,看看這個(gè)批次是否會(huì)出現(xiàn)晶振問題,如果對(duì)RTC要求較高,最終還是建議使用外部RTC。
2017-08-11 補(bǔ)充:本次1000套生產(chǎn)的產(chǎn)品一套都沒有出現(xiàn)RTC晶振問題,相反以前手工焊接出現(xiàn)很多,初步判斷很多問題是由于助焊劑導(dǎo)致,建議將晶振部分使用洗板水清洗干凈,并噴涂三防漆可以有效的解決這個(gè)問題。
2017-12-01補(bǔ)充:如果出現(xiàn)了清洗干凈還有問題,可以在晶振2腳接一個(gè)10M歐電阻,注意不是1M歐,接了這個(gè)電阻目前我遇到的都能100%解決。