服務熱線
0755-88364040
本文介紹了低端微控制器單元中可用的內部 RC 振蕩器校準機制。 介紹了自動校準的基本校準程序和注意事項。
在上一篇題為 MCU 內部振蕩器的優缺點的文章中,我們揭示了微控制器單元中內部 RC 振蕩器的優缺點。
現在我們將探索一種技術來減輕這些缺點,包括補償振蕩器中不準確的無源元件值。這種技術通常被稱為微調、微調或校準內部振蕩器。
MCU 中的內部振蕩器微調
由于它們的缺點,MCU 中的內部振蕩器具有微調其頻率的機制,與樂器不同。這通常通過使用微型電容替代盒調整振蕩器 RC 電路中的電容來完成。
電容替換盒包含一系列開關和電容器,可在一定精度范圍內產生任何電容。例如,考慮以下電容器網絡,這些電容器可以并聯組合以產生從 0nF 到 255nF 的任何整數電容。
電容替代網絡。
開關有條件地包括 2 次方的電容器。例如,僅閉合右側的三個開關會產生 7nF。 是的,它是二進制的!
現在,由于 RC 振蕩器通過對電容器進行充電和放電來工作,因此這些開關需要是模擬的。 出于這個原因,這些微型電容替代盒使用一種特殊類型的開關,稱為傳輸門或模擬開關。 這些很像繼電器的半導體替代品。 它們控制數字信號并切換模擬信號。 有很多商用傳輸門 IC,如 CD4016、CD4066 和 CD4053。
有關傳輸門的更多信息,請閱讀 Robert Keim 的文章 The CMOS Transmission Gate。
從程序員的角度來看,內部振蕩器的頻率調整歸結為修改內存映射寄存器的值。 該寄存器中的位控制電容替換模塊中的開關。
對于 S08 系列的某些成員,該寄存器稱為 ICSTRM(內部時鐘源微調)。這是一個 8 位寄存器,二進制復位值為 10000000。這 8 位控制電容替換模塊,進而影響振蕩器的周期:此寄存器的值越高,電容和周期越高.當然,這對頻率有相互影響。
簡單的校準程序
這是您可以在 MCU 上執行的一個很好的修整程序:
運行一個生成 1kHz 方波的應用程序。
迭代直到無法改進:
測量生成信號的周期。
將 Trim 寄存器修改為 1ms。
重新編譯并運行。
迭代的原因是,由于微調模塊中電容器值的不確定性(例如一組高度略有不同的樓梯),您為微調寄存器估計的更改將因某些未知因素而關閉。迭代處理了這種不規則性。
自動化這個過程
您可能希望為您的應用程序自動執行此過程,以便您的程序在上電時校準振蕩器,作為引導序列的一部分。
為此,您將需要一個可靠的時鐘參考來與您的 MCU 生成的固定頻率信號進行比較。盡管這似乎毫無意義,因為您首先要避免使用外部時鐘信號,但該外部信號不必滿足您的時鐘要求;它必須是準確和穩定的。
自動微調過程的另一個重要細節是算法:上述過程適用于擁有示波器和漂亮計算器的工程師。然而,許多校準函數使用逐次逼近法。這與逐次逼近型 ADC 使用的算法相同,其本質是二分搜索算法。毫不奇怪,對于一個 N 位修整寄存器,這需要 N 次迭代。
要了解 ADC 中的逐次逼近,您可能需要閱讀 Elliott Smith 撰寫的文章了解逐次逼近寄存器 ADC。
設備程序員
除了對 ROM 存儲器和微控制器進行編程之外,還有一些設備編程器提供有用的附加功能。有些甚至在您的微控制器上執行此微調程序,以便您方便地對一批設備進行編程,微調每個單元上的內部振蕩器。
如果您想知道在您即將切斷設備電源時將正確的修整值寫入 RAM 寄存器有什么好處,那么您就大功告成了!
MCU 制造商通常在非易失性存儲器中提供一個特殊位置來存儲設備的微調值。 這不會自動工作:您的代碼仍然必須在啟動時從該位置獲取值并將該值寫入修整寄存器。