在某些低成本和低功耗的單片機中,可能使用內部的RC振蕩器作為默認的振蕩源。這種設計簡單且經濟實惠,適用于一些不需要高精度時鐘的應用。下面文章中,我們來介紹一下如何校準MCU的內部RC振蕩器,包括補償振蕩器中不準確的無源元件值等。
一、MCU中的內部振蕩器調整
我們知道,內部采用RC振蕩器的單片機會有精度不高的缺點。所以,在這類MCU中,內部振蕩器一般都配備了微調其頻率的機制。這通常是通過替換微型電容,以此調整振蕩器RC電路中的電容大小來完成的。
電容替換包含一系列開關和電容器,可產生一定精度范圍內的任何電容大小。例如,考慮以下電容器結構,它可以并聯組合以產生0nF到255nF的任何整數電容。
如上圖所示,這些每個開關控制一個電容器。例如,僅閉合右側的三個開關會產生7nF。從程序員的角度來看,內部振蕩器的頻率調整歸結為修改內存映射寄存器的值,即修改該寄存器中的位就是在控制電容,這等于是在操作開關。
以某個具有8位寄存器的單片機為例,該寄存器稱為ICSTRM(內部時鐘源調整)。這是一個8位寄存器,二進制復位值為10000000。這8位控制一個電容替代模塊,進而影響振蕩器的周期。該寄存器的值越高,電容和周期就越高。當然,這對頻率有相反的影響。
二、如何通過程序校準
校準程序的具體步驟可能會根據具體應用和硬件平臺而有所不同,以下是一個簡單的校準程序示例,用于校準一個1kHz方波信號的生成:
1.設置初始配置:將單片機配置為產生方波信號,并確保 Trim 寄存器的初始值為默認值。
2.生成 1kHz 方波信號:使用單片機的定時器或其他相關模塊,編寫一個程序來生成 1kHz 的方波信號。
3.測量方波信號的周期:使用示波器或其他合適的測量設備,測量生成的方波信號的周期。記錄測量到的周期值。
4.調整 Trim 寄存器:根據測量到的周期值,計算需要調整 Trim 寄存器的值。調整的方式可以是逐步增加或減小 Trim 寄存器的值,并觀察方波信號的周期變化。
5.重新編譯和運行:將調整后的Trim寄存器的值更新到代碼中,重新編譯程序,并將程序下載到單片機中運行。
6.迭代調整:重復步驟3-5,直到測量到的方波信號周期達到所需的1kHz。
實際的校準過程可能會更復雜,這涉及更多的參數和校準步驟。具體的校準程序應根據您的應用、硬件平臺和需求進行設計和開發。
以上就是英銳恩單片機開發工程師分享的如何校準MCU的內部RC振蕩器。英銳恩專注單片機應用方案設計與開發,提供8位單片機、32位單片機。