顯示具有 rtc 標籤的文章。 顯示所有文章
顯示具有 rtc 標籤的文章。 顯示所有文章

2023年1月10日 星期二

[nRF52840] How to change clock source from external 32768 to internal RC

 最近在測試一些nRF52840 BLE相關範例的時候, 總是會遇到在nRF52840 DK Board上面都正常, 但改燒錄在非原廠板子上面就會無法正常的情況.

經過確認後, 發現是因為原廠的nRF52840 DK Board上面有安裝external 32768 振盪器, 而非原廠板子因為成本的關係, 都會將32768拿掉, 因此程式都會當掉在ble stack init的時候.


因此我們必須要將clock source從外部的32768改為內部的RC.

改法如下, 先找到sdk_config.h, 並修改相關的參數.

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