真是沒(méi)想到啊,把11.0592MHz的晶振焊成了12MHz,單片機(jī)串口通訊打印全亂碼了。明明頻率差不多,為什么會(huì)導(dǎo)致通訊徹底失???貿(mào)澤科普實(shí)驗(yàn)室?guī)Т蠹覐拇趤y碼開始,重新認(rèn)識(shí)晶振——
01為什么晶振頻率有小數(shù)點(diǎn)的特殊數(shù)值?
在通信的時(shí)候,單片機(jī)需要設(shè)置串口波特率,也就是每秒傳輸?shù)谋忍財(cái)?shù),比如9600波特率,就是每秒傳9600個(gè)二進(jìn)制位。串口通訊要想正常傳數(shù)據(jù),發(fā)送端和接收端的波特率必須一致,就像兩個(gè)人聊天,一個(gè)人每秒說(shuō)10個(gè)字,而另一個(gè)人每秒只能聽8個(gè)字,必然聽不清,也就是對(duì)應(yīng)串口亂碼了。
波特率并不是憑空設(shè)定的,而是由晶振頻率計(jì)算出來(lái)的,以視頻中51單片機(jī)為例,其1個(gè)機(jī)器周期等于12個(gè)晶振時(shí)鐘周期,波特率就是:
波特率=晶振頻率÷機(jī)器周期÷分頻系數(shù)
我們還是以常用的9,600波特率為例,算一筆賬,差距一眼就能看出:
如果使用的是11.0592MHz晶振:
晶振頻率:11,059,200Hz
機(jī)器周期:12 個(gè)時(shí)鐘周期,每秒能產(chǎn)生:11,059,200÷12 = 921600個(gè)機(jī)器周期
波特率計(jì)算:921,600÷96=9,600,剛好是目標(biāo)波特率

圖1
如果換成12MHz晶振:
晶振頻率:12,000,000Hz
機(jī)器周期:12個(gè)時(shí)鐘周期,每秒能產(chǎn)生 12,000,000÷12= 1,000,000個(gè)機(jī)器周期
波特率計(jì)算:1,000,000÷ 104≈9615(實(shí)際波特率),和目標(biāo)9,600存在明顯誤差。若按理想分頻,單片機(jī)無(wú)法實(shí)現(xiàn)非整數(shù)分頻(1,000,000÷96≈10416.67),只能取近似值,導(dǎo)致實(shí)際波特率和目標(biāo)值的誤差進(jìn)一步擴(kuò)大。

圖2
所以,把11.0592MHz的晶振焊成了12MHz,就導(dǎo)致了串口通信出錯(cuò)。如果你在單片機(jī)開發(fā)中遇到過(guò)這種串口亂碼玄學(xué)問(wèn)題,不妨先檢查晶振有沒(méi)有焊對(duì)。
其實(shí),上面串口通信的例子,很好的解釋了振頻率總有很多“帶小數(shù)點(diǎn)”的奇怪?jǐn)?shù)值,這個(gè)問(wèn)題是很多剛接觸電子開發(fā)的人都會(huì)疑惑的。
除了11.0592MHz,32.768kHz也是常用的非整數(shù)晶振頻率,它幾乎是所有實(shí)時(shí)時(shí)鐘(RTC)電路的標(biāo)配。這是因?yàn)?2.768kHz恰好是2的15次方(2^15=32768),經(jīng)過(guò)15次二分頻后,就能精準(zhǔn)得到1Hz的時(shí)鐘信號(hào)(每秒1個(gè)脈沖),完美匹配“秒”的時(shí)間單位。如果選用其他頻率,想要得到1Hz信號(hào),要么需要復(fù)雜的分頻電路,要么會(huì)產(chǎn)生計(jì)時(shí)誤差,32.768kHz因此成為RTC電路的“黃金頻率”。

圖3
為什么晶振頻率有小數(shù)點(diǎn)的特殊數(shù)值?答案很簡(jiǎn)單:這些看似特殊的頻率,都是經(jīng)過(guò)精密計(jì)算的工程極優(yōu)解,每一個(gè)數(shù)字背后都藏著實(shí)用的設(shè)計(jì)邏輯。
02晶振是如何精確到小數(shù)點(diǎn)四位的?
晶振能實(shí)現(xiàn)如此高的頻率精度,核心在于其內(nèi)部的石英晶片。
拆開晶振的金屬外殼,一片經(jīng)過(guò)精密切割的石英晶片便顯露出來(lái)了,還有連接在其表面的金屬電極。

圖4
石英晶體具有獨(dú)特的壓電效應(yīng):給石英晶體施加交變電壓時(shí),晶體會(huì)隨之產(chǎn)生周期性的機(jī)械振動(dòng)(逆壓電效應(yīng));反之,機(jī)械振動(dòng)又會(huì)產(chǎn)生對(duì)應(yīng)的電信號(hào)(正壓電效應(yīng))。正是這種電能與機(jī)械振動(dòng)的持續(xù)相互轉(zhuǎn)換,構(gòu)成了穩(wěn)定振蕩的基礎(chǔ)。

圖5
而晶振的精準(zhǔn)頻率,要?dú)w功于石英晶體本身的一個(gè)關(guān)鍵特性了,它具有一個(gè)由自身物理結(jié)構(gòu),比如切割方向、幾何尺寸、厚度等所決定的固有機(jī)械諧振頻率。當(dāng)我們施加的外部交變電壓頻率恰好與這個(gè)固有頻率一致時(shí),便會(huì)引發(fā)諧振。此時(shí),晶體的機(jī)械振幅達(dá)到極大,輸出的電信號(hào)也極為強(qiáng)勁和穩(wěn)定。

圖6
由于這個(gè)頻率是由晶體本身的物理結(jié)構(gòu)決定的,幾乎完全不受外部電路和環(huán)境干擾,因此才能實(shí)現(xiàn)極高的精度。晶振有那么多“非整數(shù)”的標(biāo)稱頻率都是經(jīng)過(guò)精密計(jì)算和切割后,石英晶體所能穩(wěn)定產(chǎn)生的、精確的固有諧振頻率。
03有源vs無(wú)源:晶振該怎么選?
搞懂了晶振的頻率邏輯,接下來(lái)就是使用中的實(shí)際問(wèn)題了,比如晶振主要分為有源晶振和無(wú)源晶振,怎么選?
無(wú)源晶振:需要“外部助力”才能工作
平時(shí)在單片機(jī)超小系統(tǒng)中常用的2腳晶振,大多是無(wú)源晶振,必須依靠外部的起振電路才能產(chǎn)生穩(wěn)定振蕩。
常見的起振電路是皮爾斯并聯(lián)振蕩電路,由兩個(gè)匹配電容(CL1、CL2)和單片機(jī)內(nèi)部的反相放大器組成。

圖7
晶振 datasheet 中會(huì)標(biāo)注負(fù)載電容(CL)和雜散電容(Cs)的數(shù)值,通過(guò)公式 CL = (CL1×CL2)/(CL1+CL2) + Cs,就能計(jì)算出合適的匹配電容參數(shù)——如果電容數(shù)值不合適,晶振可能無(wú)法起振,或者輸出頻率不穩(wěn)定。

圖8
無(wú)源晶振的優(yōu)勢(shì)很明顯:成本低、體積小、設(shè)計(jì)靈活,適合對(duì)成本敏感、功能相對(duì)簡(jiǎn)單的電路,比如51單片機(jī)超小系統(tǒng)、簡(jiǎn)單傳感器模塊等。但它的缺點(diǎn)也不容忽視:需要額外設(shè)計(jì)起振電路,對(duì)布線要求較高,抗干擾能力相對(duì)較弱。
有源晶振:即插即用的“時(shí)鐘模塊”
有源晶振則是一體化解決方案——把石英晶體、起振電路、信號(hào)放大電路和波形整形電路全部集成在金屬外殼內(nèi),相當(dāng)于一個(gè)現(xiàn)成的時(shí)鐘信號(hào)發(fā)生器。
使用時(shí),只需給有源晶振接通電源,就能直接輸出穩(wěn)定的時(shí)鐘信號(hào),不需要額外設(shè)計(jì)起振電路,電路連接非常簡(jiǎn)單。而且有源晶振的輸出信號(hào)穩(wěn)定性更高、抗干擾能力更強(qiáng),還能提供更寬的頻率范圍,部分型號(hào)甚至支持頻率可調(diào)。
不過(guò)有源晶振的價(jià)格比無(wú)源晶振高不少,體積也更大,功耗相對(duì)較高,更適合對(duì)時(shí)鐘精度和穩(wěn)定性要求高的場(chǎng)景,比如工業(yè)控制、通信設(shè)備、高端單片機(jī)系統(tǒng)等。
04晶振使用也有“坑”要避?
雖然晶振是結(jié)構(gòu)簡(jiǎn)單的電子元件,但很多新手會(huì)因細(xì)節(jié)疏忽踩坑,導(dǎo)致電路工作異常,比如:
1)正如開頭的實(shí)驗(yàn)所示,不同頻率晶振對(duì)應(yīng)的機(jī)器周期、波特率等參數(shù)不同,隨意替換會(huì)導(dǎo)致功能異常,必須根據(jù)電路設(shè)計(jì)需求選擇指定頻率,不能隨意更換。
2)無(wú)源晶振的匹配電容不能隨便選,需按 datasheet 計(jì)算選型,否則會(huì)影響起振和頻率穩(wěn)定性。
3)晶振電路對(duì)布線要求較高,晶振應(yīng)盡量靠近單片機(jī)的晶振引腳,布線不宜過(guò)長(zhǎng),避免引入干擾,導(dǎo)致時(shí)鐘信號(hào)異常。
晶振,就像電子系統(tǒng)的“心臟”,每一次精準(zhǔn)振蕩,都為設(shè)備的正常運(yùn)行提供時(shí)間基準(zhǔn)。從串口亂碼到實(shí)時(shí)計(jì)時(shí),晶振的頻率選擇和選型都直接影響著項(xiàng)目成敗。希望通過(guò)這篇文章,你能真正搞懂晶振的核心邏輯,以后在開發(fā)中再也不會(huì)為“選什么晶振”“為什么通訊失敗”而頭疼。
-
單片機(jī)
+關(guān)注
關(guān)注
6078文章
45562瀏覽量
672983 -
晶振
+關(guān)注
關(guān)注
35文章
3623瀏覽量
73759 -
串口
+關(guān)注
關(guān)注
15文章
1626瀏覽量
83272
原文標(biāo)題:11.0592MHz 換 12MHz,串口直接亂碼?原因終于說(shuō)清了 | 貿(mào)澤科普實(shí)驗(yàn)室
文章出處:【微信號(hào):貿(mào)澤電子,微信公眾號(hào):貿(mào)澤電子】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
晶振應(yīng)該用11.0592MHZ還是12MHZ的?
11.0592MHZ晶振跟51單片機(jī)是什么關(guān)系?
單片機(jī)外接11.0592mhz的晶振問(wèn)題
請(qǐng)問(wèn)11.0592MHZ晶振跟51單片機(jī)有什么關(guān)系?
為什么51單片機(jī)愛用11.0592MHZ晶振?
為什么51單片機(jī)愛用11.0592MHZ晶振?
12MHz晶振與11.0592MHz兩種不同晶振的區(qū)別
如何解決單片機(jī)串口通訊在12MHz下的問(wèn)題
單片機(jī)串口通信亂碼怎么解決
為什么51單片機(jī)的晶振一般使用11.0592?
單片機(jī)串口通訊在12MHz下的問(wèn)題
為什么51單片機(jī)愛用11.0592MHZ晶振
單片機(jī)串口通信亂碼問(wèn)題
11.0592MHz晶振換成12MHz后單片機(jī)串口通訊亂碼的原因分析
評(píng)論