2 Replies Latest reply on Apr 20, 2020 6:38 PM by JuyoungJ_06

    Community Translation - KBA#41 - Real-Time Clock (RTC) in PSoC® 4 – KBA96934

    MoTa_728816

      Hi,

       

      I'd like to translate KBA-#41 (KBA96934)

       

      moto

       

      Original KBA: KBA96934

      Real-Time Clock (RTC) in PSoC® 4 – KBA96934

       

      Translated by: MoTa_728816

      ================

      タイトル: PSoC 4 の リアルタイムクロック (RTC) - KBA96934

       

      質問:リアルタイムクロック (RTC) とは何ですか?

      PSoC 4 の RTC はどのように設定して使用したら良いのでしょうか?

       

      回答:

      RTC は現在の日付や時間の管理を行うクロックです。RTCは外付けのクリスタル、通常32.768-kHz の外付け時計クリスタル発振器(WCO)かクォーツクリスタル発振器 (QCO) を使用して正確な時間を保持します。

      PSoC 4 の RTC コンポーネント

      全ての PSoC 4 デバイスは PSoC Creator 3.2 から リアルタイムコンポーネントをサポートしています。しかし高精度の RTC 動作に要求される時計クリスタル発振器や外部32.768-kHz クリスタルの発振器は PSoC 4100M/4200M/4100BL/4200BL ファミリにのみ搭載されています。 PSoC 4000/4100/4200 等のような他のファミリでは RTC コンポーネントは外部クロックか内部のメイン発振器 (IMO) を使用してサポートされています。後者の場合、RTC の精度は使用されるクロックの精度に依存します。希望される精度と使用可能なリソースにより、PSoC 4 の RTC を使用する方法は二通りあります。

      オプション #1: WCO を使用した RTC

      このオプションでは±250ppm の精度の RTC を実装可能ですが、外部に WCO が必要になります。この実装をサポートするのは WCO 機能を有した 4100M/4200M/4100BL/4200BL ファミリのみとなります。WCO を使用した RTC を構築するのには以下の手順に従ってください:

       1. PSoC Creator 3.2 又はそれ以降を立ち上げて PSoC 4100M/4200M 又は PSoC 4100 BLE/4200 BLE のプロジェクトを作成してください。

       2. 図1 のように、コンポーネントカタログからトップデザインに Real-Time Component (RTC) [v1.0] を配置してください。

       

           図 1. カタログからRTC コンポーネントを配置する。

           001-182629.png

       3. 回路図上に置いたRTCコンポーネントをダブルクリックしてコンフィグレーションを行います。Implement RTC update manually はチェックを外してください。

        パラメータの詳細についてはコンポーネントのデータシートを参照してください。

                図 2. RTC コンポーネントカスタマイザ

           002-182633.png

       4. Workspace Explorer から .cydwr をオープンしてください。

           図 3. Workspace Explorer から“cydwr”を開く

        003-182636.png

       5. cydwr ウィンドウの下にある Clocks タブを選択して、図 4のように WCO クロックオプションをダブルクリックしてください。

           図 4. システムクロック設定ウィンドウを開く

        004-182634.png

       6. WCO を有効にするために WCO (32.768 kHz) のチェックボックスをチェックして、LFCLK 出力として WCO (32.768 kHz) を選択します。(図 5)

       7. Timer2(WDT2) のチェックボックスをチェックします。WDT2 はデフォルトでは RTC クロックのトラッキングに必要な1秒割込みを発生するように設定されています。(図 5)

       8. RTC_Sel マルチプレクサ内で、RTC への出力として Timer2(WDT2) を選択してください。(図 5); 他の WDT タイマも RTC への入力として使用できます - その場合、RTC クロックの周期が1秒(もしくは希望する周期) になるように設定する必要があります。

       9. OK をクリックして、プロジェクトをビルドします。

           図 5. WCO で RTC を使用するための Low Frequency Clock コンフィグレーション

      005-182635.png

       10. main.c 内で RTC を起動するために RTC_Start() API をコールしてください、そして RTC コンポーネントカスタマイザで設定した書式で時間を取得するのには RTC_GetTime() API を、日付を取得するのにはRTC_GetDate() API を使用してください。RTC コンポーネントでサポートされている API の詳細については RTC コンポーネントのデータシートを参照してください。

        PSoC Creator のサンプルプロジェクト RTC_P4_WDT_Example では WCO  と WDT を使用して RTC を実装しています。当該サンプルプロジェクトを PSoC 4100M/4200M/4100BL/4200BL デバイスで使用する方法の詳細はサンプルプロジェクトのデータシートをご参照ください。RTC サンプルプロジェクトにアクセスするにはトップデザインかコンポーネントカタログにある RTC コンポーネントで右クリックをして Find Example Projects オプションを選択してください。

       

           図 6. PSoC Creator で RTC のサンプルプロジェクトを見つける

      006-182639.png

        RTC を正しく機能させるためには WCO をデバイスに接続する必要があることにご注意ください。通常の 32.768-kHz クリスタルが使用可能です。図 7 と 図 8 は ECS-.327-12.5-34B を WCO として接続する回路例です。

       

           図 7. PSoC 4100M/4200M 用 WCO 接続

      007-182637.png

       

           図 8. PSoC 4100BL/4200BL 用 WCO 接続

      008-182638.png

      オプション #2: WCO を使用しない RTC

      このオプションを使用すると外部クロックや IMO を使用して RTC を実装可能ですが、達成可能な精度は使用されるクロックの精度に依存します。このオプションを使用することで、すべての PSoC 4 デバイスに RTC 機能を追加することが可能です。WCO を使用しない RTC  の実装は以下の手順に従ってください:

       1. PSoC Creator 3.2 またはそれ以降で PSoC 4 プロジェクトを作成してください。

       2. コンポーネントカタログから Real-time Component (RTC) [v1.0] をトップデザインに配置してください。

       3. コンポーネントをダブルクリックして必要に応じて設定してください。Implement RTC update manually をチェックしてください。

        パラメータの詳細についてはコンポーネントのデータシートを参照してください。

           図 9. WCO を使用しないクロックソースを使用した RTC カスタマイザ

      009-182643.png

       4. RTC_Sel マルチプレクサ内 (オプション #1 ステップ 8)で、図10 のように RTC への出力を None に設定してください。

           図 10. WCO を使用しない RTC 用の Low Frequency Clocks コンフィグレーション

      010-182644.png

       5. RTC の割込みソースを (希望の周期に) 設定します;ソースは外部ピンの割込み、TCPWMの割込み、Systick 割込み等 - 何でも可能です。

       6. RTC の周期を設定するために、RTC_SetPeriod() API を使用してください、そして RTC の日時を更新する為に割込みソースから RTC_Update() API をコールしてください。

       

      Systick タイマを使用した RTC サンプルについては Find Example Project ウィンドウから RTC_P4_SysTick_Example を参照してください。

      RTC に関するより詳細な情報は RTC コンポーネントのデータシートをご参照ください。

      ================

       

      31-Mar-2020

      moto