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