單片機晶振大多為11.0592的原因
常用波特率通常按規(guī)范取為1200,2400,4800,9600, 若采用晶振12兆赫茲或6兆赫茲,計算得出的T1定時初值將不是一個整數(shù),這樣通信時便會產(chǎn)生積累誤差,進而產(chǎn)生波特率誤差,影響串行通信的同步性能。解決的方法只有調(diào)整單片機的時鐘頻率,通常采用11.0592兆赫茲晶振。因為用它能夠非常準確地計算出T1定時初值,即使對于較高的波特率(19600,19200),不管多么古怪的值,只要是標準通信速率,使用11.0592兆赫茲的晶振可以得到非常準確的數(shù)值。
11.0592兆是因為在進行通信時,12兆頻率進行串行通信不容易實現(xiàn)標準的波特率,比如9600,4800,而11.0592兆計算時正好可以得到,因此在有通信接口的單片機中,一般選11.0592兆。
51晶振為什么是11.0592
用11.0592晶振的原因是51單片機的定時器導致的。用51單片機的定時器做波特率發(fā)生器時,如果用11.0592兆赫茲的晶振,根據(jù)公式算下來需要定時器設(shè)置的值都是整數(shù);如果用12兆赫茲晶振,則波特率都是有偏差的,比如9600,用定時器取0XFD,實際波特率10000,一般波特率偏差在4%左右都是可以的,所以也還能用STC90C516 晶振12兆 波特率9600,倍數(shù)時誤差率6.99%,不倍數(shù)時誤差率8.51%,數(shù)據(jù)肯定會出錯。 這也就是串口通信時大家喜歡用11.0592兆赫茲晶振的原因,在波特率倍速時,最高可達到57600,誤差率0.00%。 用12兆赫茲,最高也就4800,而且有0.16%誤差率,但在允許范圍,所以沒多大影響。
為什么不是其他數(shù)
我們假定0-12_000_000之間有一個數(shù)滿足以下條件的時候,這個數(shù)比較適合晶振的頻率:
1.當初值在0-255的情況下,這個數(shù)能夠整除較多的數(shù)(整除的數(shù)越多,便可獲得能夠整除的波特率的種類越多);
2.而且這個數(shù)應該較大,晶振頻率越快,波特率越大,傳輸?shù)乃俣仍娇欤?/p>
3.在SOMD加倍和不加倍的情況下,這個數(shù)都能夠整除較多的數(shù)。
因此,我們選出在SOMD加倍和不加倍的兩種情況下,都可以整除較多數(shù)的頻率(將兩種情況的加在一起)。
-
晶振
+關(guān)注
關(guān)注
34文章
2899瀏覽量
68277
發(fā)布評論請先 登錄
相關(guān)推薦
評論