關(guān)于51單片機(jī)晶振的問題總結(jié)
晶振是什么?全稱是石英晶體振蕩器,是一種高精度和高穩(wěn)定度的振蕩器。通過一定的外接電路來,可以生成頻率和峰值穩(wěn)定的正弦波。而單片機(jī)在運行的時候,需要一個脈沖信號,做為自己執(zhí)行指令的觸發(fā)信號,可以簡單的想象為:單片機(jī)收到一個脈沖,就執(zhí)行一次或多次指令。
在初學(xué)51單片機(jī)的時候,總是伴隨很多有關(guān)與晶振的問題,其實晶振就是如同人的心臟,是血液的是脈搏,把單片機(jī)的晶振問題搞明白了,51單片機(jī)的其他問題迎刃而解。
一,為什么51單片機(jī)愛用11.0592MHz晶振?
其一:因為它能夠準(zhǔn)確地劃分成時鐘頻率,與UART(通用異步接收器/發(fā)送器)量常見的波特率相關(guān)。特別是較高的波特率(19600,19200),不管多么古怪的值,這些晶振都是準(zhǔn)確,常被使用的。
其二:用11.0592晶振的原因是51單片機(jī)的定時器導(dǎo)致的。用51單片機(jī)的定時器做波特率發(fā)生器時,如果用11.0592Mhz的晶振,根據(jù)公式算下來需要定時器設(shè)置的值都是整數(shù);如果用12Mhz晶振,則波特率都是有偏差的,比如9600,用定時器取0XFD,實際波特率10000,一般波特率偏差在4%左右都是可以的,所以也還能用STC90C516晶振12M波特率9600,倍數(shù)時誤差率6.99%,不倍數(shù)時誤差率8.51%,數(shù)據(jù)肯定會出錯。這也就是串口通信時大家喜歡用11.0592MHz晶振的原因,在波特率倍速時,最高可達(dá)到57600,誤差率0.00%.用12MHz,最高也就4800,而且有0.16%誤差率,但在允許范圍,所以沒多大影響。
二,在設(shè)計51單片機(jī)系統(tǒng)PCB時,晶振為何被要求緊挨著單片機(jī)?
原因如下:晶振是通過電激勵來產(chǎn)生固定頻率的機(jī)械振動,而振動又會產(chǎn)生電流反饋給電路,電路接到反饋后進(jìn)行信號放大,再次用放大的電信號來激勵晶振機(jī)械振動,晶振再將振動產(chǎn)生的電流反饋給電路,如此這般。當(dāng)電路中的激勵電信號和晶振的標(biāo)稱頻率相同時,電路就能輸出信號強(qiáng)大,頻率穩(wěn)定的正弦波。整形電路再將正弦波變成方波送到數(shù)字電路中供其使用。
問題在于晶振的輸出能力有限,它僅僅輸出以毫瓦為單位的電能量。在IC(集成電路)內(nèi)部,通過放大器將這個信號放大幾百倍甚至上千倍才能正常使用。
晶振和IC間一般是通過銅走線相連的,這根走線可以看成一段導(dǎo)線或數(shù)段導(dǎo)線,導(dǎo)線在切割磁力線的時候會產(chǎn)生電流,導(dǎo)線越長,產(chǎn)生的電流越強(qiáng)?,F(xiàn)實中,磁力線不常見,電磁波卻到處都是,例如:無線廣播發(fā)射、電視塔發(fā)射、手機(jī)通訊等等。晶振和IC之間的連線就變成了接收天線,它越長,接收的信號就越強(qiáng),產(chǎn)生的電能量就越強(qiáng),直到接收到的電信號強(qiáng)度超過或接近晶振產(chǎn)生的信號強(qiáng)度時,IC內(nèi)的放大電路輸出的將不再是固定頻率的方波了,而是亂七八糟的信號,導(dǎo)致數(shù)字電路無法同步工作而出錯。
所以,畫PCB(電路板)的時候,晶振離它的放大電路(IC管腳)越近越好。
三,單片機(jī)電路晶振不起振原因分析
遇到單片機(jī)晶振不起振是常見現(xiàn)象,那么引起晶振不起振的原因有哪些呢?
①PCB布線錯誤;②單片機(jī)質(zhì)量有問題;③晶振質(zhì)量有問題;
④負(fù)載電容或匹配電容與晶振不匹配或者電容質(zhì)量有問題;⑤PCB板受潮,導(dǎo)致阻抗失配而不能起振;⑥晶振電路的走線過長;
⑦晶振兩腳之間有走線;⑧外圍電路的影響。
解決方案,建議按如下方法逐個排除故障:
①排除電路錯誤的可能性,因此可以用相應(yīng)型號單片機(jī)的推薦電路進(jìn)行比較。②排除外圍元件不良的可能性,因為外圍零件無非為電阻,電容,很容易鑒別是否為良品。③排除晶振為停振品的可能性,因為不會只試了一二個晶振。④試著改換晶體兩端的電容,也許晶振就能起振了,電容的大小請參考晶振的使用說明。
⑤在PCB布線時晶振電路的走線應(yīng)盡量短且盡可能靠近IC,杜絕在晶振兩腳間走線。
四,51單片機(jī)時鐘電路用12MHZ的晶振時那電容的值是怎樣得出來的?
拿內(nèi)部時鐘電路來說明吧!
其實這兩個電容沒人能夠解釋清楚到底怎么選值,因為22pF實在是太小了。這個要說只能說和內(nèi)部的振蕩電路自身特性有關(guān)系,搭配使用,用來校正波形,沒有人去深究它到底為什么就是這么大的值。
19.89c52單片機(jī)如果不接晶振會有什么后果?
單片機(jī)不工作了程序無法燒入……等等
五,單片機(jī)晶振電路中兩個微調(diào)電容不對稱會怎樣?相差多少會使頻率怎樣變化?
在檢測無線鼠標(biāo)的接受模塊時,發(fā)現(xiàn)其頻率總是慢慢變化(就是一直不松探頭的手,發(fā)現(xiàn)頻率慢慢變小)晶振是新的!
電容不對稱也不會引起頻率的漂移,說的頻率漂移可能是因為晶振的電容的容量很不穩(wěn)定引起的,可以換了試,換兩電容不難,要不就是的晶振的穩(wěn)定性太差了,或者測量的方法有問題。
六,單片機(jī)晶振與速度的疑問,執(zhí)行一條指令的周期不是由晶振決定的嗎。那么比如51單片機(jī)和MSP430,給51接高速晶振,430接低速的,是不是51跑的要快?是不是速度單片機(jī)速度僅僅與晶振有關(guān),關(guān)鍵是單片機(jī)能不能支持那么大的晶振?
每個單片機(jī)的速度是受到內(nèi)部邏輯門電平跳變速度限制的。兩個芯片同時使用同樣的晶振,比如12M的。因為AVR是RISC指令集,它在同樣外部晶振頻率下,比51要快。
比如,51最快能接40M,AVR是16M的晶振。
STC89C52大都用12MHz晶振,但由于其12個時鐘周期才是一個機(jī)器周期,相當(dāng)于其主頻只有1MHz.
MSP430采用RISC精簡指令集,430單片機(jī)若采用內(nèi)部DCO震蕩可達(dá)21MHz主頻。單個時鐘周期就可以執(zhí)行一條指令,相同晶振,速度較51快12倍。
對于一個51,給他用更高的晶振,速度會快些。但是對于高級的單片機(jī)就不一樣了。高級單片機(jī)內(nèi)部,一般都是有頻率控制寄存器的,所以,簡單的增加晶振,可能達(dá)到單片機(jī)的極限,導(dǎo)致跑飛。
七,請問:有什么方法可以確定某一款單片機(jī)在某一大小的晶振下是否能正常工作?
晶振選擇太高不太合適,具體晶振上限是多少,恐怕測不出來,只能按照人家單片機(jī)的要求,一般STC系列單片機(jī)上限是35M或40M,stc單憑上寫的有,如STC11F16XE 35I-LQFP44G其中35I就是晶振最高35M的工業(yè)級芯片。
超過上限會出現(xiàn)什么樣的問題,沒有測試過,一般晶振選擇12M的比較多,如果選擇STC 1T指令的,就相當(dāng)于12*12=144M的晶振。如果用于串口通信,建議選用11.0592M的或22.184M,選擇晶振最主要還是參照人家的說明書。
八,4個AT89C51單片機(jī)能否用一個12M的晶振使其都正常工作?一個采用內(nèi)部時鐘方式,其余三個用外部方式……那四個都用內(nèi)部方式可以不(將4個單片機(jī)都并聯(lián)在一個晶振上)?
可以,其中一個正常接晶振,他的XTAL2輸出接到另外三個的XTAL1輸入上。
九,單片機(jī)的運行速度和晶振大小的關(guān)系,若單片機(jī)的最高工作頻率是40M,晶振是否可以選擇24M或更高,但不超過40M,這樣單片機(jī)的運行速度是否大增?長期在此工作頻率下對單片機(jī)是否有不良影響?單片機(jī)對晶振的選擇的原則是怎樣的?
當(dāng)然是有影響的,單片機(jī)的工作速度越快,功耗也越大,受干擾也會越厲害,總之最高能跑40M的,跑不超過40M的是沒有問題的,只是對相關(guān)的技術(shù)(如PCB的設(shè)計元件的選取等)會高去很多。