STM32 RTC(實時時鐘) 32.768kHz晶振起振指南
更有陰謀論者提出讓人啼笑皆非的解釋——STM32的RTC晶振不起振是ST與晶振廠商串通后故意搞出來的,目的是提高某晶振廠商高端晶振的銷量。。。
最近做的幾塊板子也用到了STM32的RTC,前后兩版一共做了大概6片,幸運的是并未遇到晶振不起振的現(xiàn)象。而我采用的是3毛錢一個的普通晶振,并未選用傳說中低負(fù)載高精度晶振。。。后來在另外一片實驗性質(zhì)的板子上首次遇到了晶振不起振的問題,而且做了2片都不起振,這才讓我意識到這個問題的嚴(yán)重性。
從上述現(xiàn)象來看,我認(rèn)為對RTC晶振起振影響最大的因素應(yīng)該是PCB的布線。但是遇到問題時通常是PCB已做好,甚至已經(jīng)做了幾百塊,沒有回頭路了。于是大家更關(guān)注的問題似乎就是“如何補救”了。在網(wǎng)上搜索一下,你就會發(fā)現(xiàn)世界是如此美好!每個人的經(jīng)驗和建議都不一樣,甚至是完全相反的!這種現(xiàn)象告訴我們,除了PCB布線,對晶振起振影響最大的似乎不是電氣參數(shù),而是另外一種不可忽略的因素——人品!
各種相互矛盾的經(jīng)驗也告訴我們,導(dǎo)致晶振不起振的原因是多種多樣的,也是因“人”而異的。也許,我們無法找到一個絕對有效的經(jīng)驗一舉解決STM32的RTC晶振這個讓人頭疼的問題,但我們可以從各種經(jīng)驗中找到一些線索,為最終摸索到適合自己這塊板子的解決方案提供一些幫助和提示。
如果晶振不起振,尤其是你已經(jīng)使用了傳說中的愛普生6pF晶振后還是不行,也許你應(yīng)該嘗試對以下幾個方面排列組合,找到適合你這塊板子的,更容易起振的方式。
下面就羅列一下可能影響RTC晶振起振的因素
1. 晶振的品牌和負(fù)載電容
大家貌似都知道要用6pF的晶振,但我發(fā)現(xiàn)其實12.5pF的也可以用。大家都說KDS日本原裝的好,我那個3毛錢的國產(chǎn)晶振貌似也沒啥大問題。。。
2. 晶振外接的匹配電容
有人說6pF的晶振要配6pF的電容。但有經(jīng)驗公式指出這個電容的值應(yīng)該是晶振本身負(fù)載電容的兩倍,6pF的晶振應(yīng)該配10pF的匹配電容,當(dāng)然12.5pF的就應(yīng)該配20pF或者22pF的電容了~電容值不匹配可能造成晶振不起振。更神奇的是,有人指出去掉外接的匹配電容會使晶振起振!這似乎沒啥道理,但在我的板子上,有且僅有這個方案是可行的?。。?br />3. 晶振并聯(lián)的反饋電阻
晶振可以并聯(lián)一個高阻值的電阻,據(jù)說這樣更容易起振。。。這個電阻的阻值有人說是1MΩ,有人說是5MΩ,也有人說是10MΩ,,,當(dāng)然也有人說不能并聯(lián)這個電阻,并聯(lián)了反而不起振
4. XTALout到晶振間串聯(lián)電阻
這種做法是官方的應(yīng)用筆記指出的,而且給出了這個電阻的計算公式。對這個電阻的的必要性也是眾說紛紜,同樣存在兩種矛盾的說法,即必須要有這電阻,否則不起振。還有一說不能有這個電阻,否則不起振。。。從官方的應(yīng)用筆記來看,這個電阻的主要作用是保護晶振,以防晶振發(fā)熱。由此看來這個這個電阻似乎并非影響晶振起振的主要因素,甚至可能讓晶振更難起振。
5. 晶振的外殼是否接地
這個就不用說了吧。。。晶振的外殼是金屬的,做封裝時可以把那個焊盤做成機械焊盤而懸空,也可以做成電氣焊盤,然后連接到GND。對這個說法同樣存在爭議,有人說外殼必須接地,也有人說接地后反而不起振。
6. 提高Vbat引腳的電源質(zhì)量
這種說法是有一定道理的,因為RTC部分是由Vbat的來供電的。有人說Vbat引腳對電源質(zhì)量要求比較高,如果紋波較大可能會影響晶振的起振。更有人說反而需要一些噪聲,激勵晶振產(chǎn)生正反饋從而順利起振(本人對此表示呵呵)。。。但不管怎樣,提高電源質(zhì)量對大家都是好事~
7. 晶振周圍的環(huán)境
有人指出應(yīng)該仔細(xì)清洗RTC晶振周圍的電路,甚至是使用環(huán)氧樹脂膠將晶振密封起來。這種說法得到了一些人的支持,看來也是有相當(dāng)多的事實依據(jù)。
8. 減少晶振焊接時加熱的時間
有人認(rèn)為長時間加熱晶振進行焊接會對晶振本身帶來影響,卻不是徹底損壞晶振,從而使得晶振不容易起振。。。這種說法我沒驗證過,個人表示懷疑。。。
9. 焊接的焊錫量
這個種說法感覺就更不靠譜了,但真的有人在晶振引腳上多加了點焊錫晶振就能起振了。從原理上說,多加點焊錫確實會改變晶振和PCB間的寄生參數(shù),但我感覺影響微乎其微。。??赡芫д褚呀?jīng)徘徊在臨界值的邊緣了,這種做法才會起到一點作用。
10. 使用有源晶振
個人認(rèn)為這是一勞永逸解決晶振不起振問題的不二法門!有人對STM32的RTC晶振不易起振的原因做了一個解釋,即出于低功耗的考慮,STM32對晶振的驅(qū)動功率比較低,所謂“好鼓不用重錘”,一些差的晶振就需要更高的驅(qū)動功率,所以不易起振。我認(rèn)為這種解釋是有道理的。使用有源晶振則不存在驅(qū)動功率的問題,如果問題確實是因為驅(qū)動功率造成的,那使用有源晶振毫無疑問可以徹底解決問題。而且目前網(wǎng)上還沒看到說有源晶振不起振的求助帖。但是有源晶振通常比較昂貴,甚至要比一顆外置的RTC芯片還要貴。至于這個問題的取舍,就要看各位看官自己的想法了。
評論