晶體振蕩器是指從一塊石英晶體上按一定方位角切下薄片(簡稱為晶片),石英晶體諧振器,簡稱為石英晶體或晶體、晶振;而在封裝內(nèi)部添加IC組成振蕩電路的晶體元件稱為晶體振蕩器。其產(chǎn)品一般用金屬外殼封裝,也有用玻璃殼、陶瓷或塑料封裝的。石英晶體振蕩器是高精度和高穩(wěn)定度的振蕩器,被廣泛應(yīng)用于彩電、計算機、遙控器等各類振蕩電路中,以及通信系統(tǒng)中用于頻率發(fā)生器、為數(shù)據(jù)處理設(shè)備產(chǎn)生時鐘信號和為特定系統(tǒng)提供基準信號。
問題:例如STM32F103系列單片機編程,定時器計數(shù)或者延時函數(shù)delay_ms(),慢4倍左右。
原因/現(xiàn)象:當發(fā)現(xiàn)時鐘慢4倍左右,就可能是晶振出問題,導致系統(tǒng)初始化之后使用的是內(nèi)部晶振;
解決方案:發(fā)現(xiàn)晶振波形不對,更換旁路電路或者晶振即可解決,否則,需要查看PCB走線是否正確。
(1)示波器測量
示波器負探頭接地(可不接),正探頭接晶振的其中一端,或者晶振兩端的電容其中一端;如果是8MHz的晶振,正常晶振波形如圖所示。
失真的晶振波形如下圖所示。
(2)萬用表測量
STM32單片機3.3V供電,正常情況,用萬用表測量晶振兩端的兩個電容,一般是1/2Vcc左右,但是根據(jù)我測量,一般情況是2.05V、2.30V左右。個人感覺用萬用表測量晶振旁路的2個電容電壓這個方法,并不靠譜。
總結(jié):對于晶振沒有起振,先確保MCU燒錄了正常的程序,啟用外部晶振的。接下來方法有替換晶振元器件看是否正常;晶振旁邊兩個電容是否焊接錯誤;用示波器監(jiān)控晶振其中一個引腳是否有正弦波;或者萬用表測量晶振兩端的兩個電容,是否有1/2Vcc左右;萬用表測量BOOT0電平,正常是低電平,異常是高電平;查看電路板走線。