2016年1月28日 星期四

How to measure and calibrate Low-speed internal oscillator on STM32F0

1. RTC是經常拿來當作喚醒源的一種應用, 為了節省成本, 通常都是使用內部的RC震盪來當作
    起始源, 因此對內部的RC震盪進行校正就很重要了, 底下的範例就是在STM32F0系列上來進
    行校正的測試程式.

2. 測試程式主要是參考ST的原始文件Low-speed internal oscillator measurement(AN4067)來寫
    的, 當然除了內部的RC校正, 也可以對外部的石英震盪進行校正, 但目前還是先測試最常使
    用的內部RC校正.

3. 從文件上的Figure14可以看到校正的原理:



  • 將TIM14設定為input capture mode.
  • TIM14_RTC_CLK: TIM14 Channel 1 is connected to RTC input clock.  RTC input clock can be LSE, LSI or HSE/div128, 目前設定為LSI.
  • 接著利用input capture方式, 計算出LSI的數值.
  • 根據User期待喚醒的時間數值參數和LSI計算出最後的wake up counter, 並設定好RTC.


4. 簡易的測試方式:
  • 可以在RTC_IRQHandler()裡面加上GPIO Toggle, 來確定校正是否成功.

  • 從下圖Logic analyzer的波形上可以看到, 跟我們期待的10msec toggle比起來, 9.992msec已經相當接近10msec了.

5. Test Code Link: 可以參考rtc.c & rtc.h


沒有留言:

張貼留言