KW36 - 32kHz RTC外部発振器のトリミング調整 はじめに
FRDM-KW36には、32kHzの水晶発振器を備えたRTCモジュールが含まれています。このモジュールは、超低消費電力モードで動作しながら、MCU用の32kHzクロックソースを生成します。この発振器には、C LOAD として使用されるプログラム可能なコンデンサのセットが含まれています。これらのコンデンサの値を変更すると、発振器が提供する周波数を変更できます。
この構成可能な容量は、0pF(コンデンサ・バンク・ディセーブル)から30pFまで、2pF刻みで範囲が広い範囲です。これらの値は、イネーブルされたコンデンサを組み合わせて取得します。使用可能な値は、2 pF、4 pF、8 pF、および 16 pF です これら4つの任意の組み合わせが可能です。外部コンデンサが使用可能な場合は、これらの内部コンデンサをディスエーブルすることをお勧めします (RTC 制御レジスタ SFR の SC2P、SC4P、SCS8、および SC16 ビットをクリアします)。
オシレーターによって提供される周波数を調整するには、最初に周波数を測定できる必要があります。周波数カウンタを使用すると、オシロスコープよりも正確な測定が可能になるため、理想的です。また、オシレーター周波数を出力する必要もあります。発振器の周波数を出力するには、例としてBluetoothデモアプリケーションのいずれかを歌うample、次の手順を実行する必要があります。
周波数の調整例
この例では、Connectivity Software Stack の Heart Rate Sensor デモ (freertos バージョン) を利用し、開発者が SDK から IDE へのプロジェクトのインポートまたはオープンに関する知識を持っていることを前提としています。
SDK から Heart Rate Sensor プロジェクトを開くか、クローンします。
ワークスペースの board フォルダーで board.c ファイルと board.h ファイルを見つけます。
ボード上でvoid関数を宣言します。ファイルを作成します。この機能は、RTC クロックを PTB3 にマルチプレクサし、周波数を測定できるようにするためのものです。
/* Function to mux PTB3 to RTC_CLKOUT */
void BOARD_EnableRtcClkOut (void);
ボード内部でBOARD_EnableRtcClkOut機能を開発します。ファイルを以下のように用意しています。
void BOARD_EnableRtcClkOut(void)
{
/* Enable PORTB clock gating */
CLOCK_EnableClock(kCLOCK_PortB);
/* Mux the RTC_CLKOUT to PTB3 */
PORT_SetPinMux(PORTB, 3u, kPORT_MuxAlt7);
/* Select the 32kHz reference for RTC_CLKOUT signal */
SIM->SOPT1 |= SIM_SOPT1_OSC32KOUT(1);
}
BOARD_BootClockRUN直後hardware_init関数のBOARD_EnableRtcClkOut関数を呼び出します(board.cファイル)。
clock_config.cを探すワークスペースのボードフォルダー内のファイル。
ファイルの先頭に次の定義を追加します。 #define RTC_OSC_CAP_LOAD_0 0x0U /*!< RTC oscillator, capacitance 0pF */
#define RTC_OSC_CAP_LOAD_2 0x2000U /*!< RTC oscillator, capacitance 2pF */
#define RTC_OSC_CAP_LOAD_4 0x1000U /*!< RTC oscillator, capacitance 4pF */
#define RTC_OSC_CAP_LOAD_6 0x3000U /*!< RTC oscillator, capacitance 6pF */
#define RTC_OSC_CAP_LOAD_8 0x800U /*!< RTC oscillator, capacitance 8pF */
#define RTC_OSC_CAP_LOAD_10 0x2800U /*!< RTC oscillator, capacitance 10pF */
#define RTC_OSC_CAP_LOAD_12 0x1800U /*!< RTC oscillator, capacitance 12pF */
#define RTC_OSC_CAP_LOAD_14 0x3800U /*!< RTC oscillator, capacitance 14pF */
#define RTC_OSC_CAP_LOAD_16 0x400U /*!< RTC oscillator, capacitance 16pF */
#define RTC_OSC_CAP_LOAD_18 0x2400U /*!< RTC oscillator, capacitance 18pF */
#define RTC_OSC_CAP_LOAD_20 0x1400U /*!< RTC oscillator, capacitance 20pF */
#define RTC_OSC_CAP_LOAD_22 0x3400U /*!< RTC oscillator, capacitance 22pF */
#define RTC_OSC_CAP_LOAD_24 0xC00U /*!< RTC oscillator, capacitance 24pF */
#define RTC_OSC_CAP_LOAD_26 0x2C00U /*!< RTC oscillator, capacitance 26pF */
#define RTC_OSC_CAP_LOAD_28 0x1C00U /*!< RTC oscillator, capacitance 28pF */
#define RTC_OSC_CAP_LOAD_30 0x3C00U /*!< RTC oscillator, capacitance 30pF */
BOARD_BootClockRUN 関数内の関数へのCLOCK_CONFIG_EnableRtcOsc呼び出しを検索します (clock_config.cファイル)、上記の定義のいずれかで引数を編集します。
最後に、「preinclude.h」で低電力オプションとLEDサポートを無効にしますプロジェクトのソースフォルダにあるファイル: #define cPWR_UsePowerDownMode 0
#define gLEDSupported_d 0
この時点で、PTB3で測定し、周波数カウンターを使用して周波数調整で遊ぶことができます。ボードがプログラムされるたびに、正しい測定値を得るためにPORを実行する必要があります。次の表は、FRDM-KW36ボードrev Bから取得したもので、周波数を調整するための基準として使用できます。容量は、イネーブルされた内部容量だけでなく、パッケージ、ボンディングワイヤ、ボンディングパッド、およびPCBトレースに見られる寄生容量で構成されることに注意してください。したがって、以下に示す基準測定値は実際の値に近い必要がありますが、周波数がボードとレイアウトに合わせてトリミングされていることを確認するために、ボードを使用して測定も行う必要があります。
イネーブルコンデンサ
Cロード
キャパシタンスの定義
周波数
-
0pF
RTC_OSC_CAP_LOAD_0 (銀行が無効)
32772.980Hz
SC2P
2ページF
RTC_OSC_CAP_LOAD_2
32771.330Hz
SC4P
4ページF
RTC_OSC_CAP_LOAD_4
32770.050Hz
SC2P, SC4P
6pF
RTC_OSC_CAP_LOAD_6
32769.122Hz
SC8P
8ページF
RTC_OSC_CAP_LOAD_8
32768.289Hz
SC2P, SC8P
10pF
RTC_OSC_CAP_LOAD_10
32767.701Hz
SC4P, SC8P
12pF
RTC_OSC_CAP_LOAD_12
32767.182Hz
SC2P, SC4P, SC8P
14pFの
RTC_OSC_CAP_LOAD_14
32766.766Hz
SC16P
16pF
RTC_OSC_CAP_LOAD_16
32766.338Hz
SC2P, SC16P
18pFの
RTC_OSC_CAP_LOAD_18
32766.038Hz
SC4P, SC16P
20pFの
RTC_OSC_CAP_LOAD_20
32765.762Hz
SC2P, SC4P, SC16P
22pFの
RTC_OSC_CAP_LOAD_22
32765.532Hz
SC8P, SC16P
24pFの
RTC_OSC_CAP_LOAD_24
32765.297Hz
SC2P, SC8P, SC16P
26pF
RTC_OSC_CAP_LOAD_26
32765.117Hz
SC4P, SC8P, SC16P
28pFの
RTC_OSC_CAP_LOAD_28
32764.940Hz
SC2P, SC4P, SC8P, SC16P
30pF
RTC_OSC_CAP_LOAD_30
32764.764Hz
BLEソフトウェア kW KW35 |36
記事全体を表示