S6J3110 / S6J3120 Series クロックシステムの設定方法 32-Bit Microcontroller Spansion®Traveo™ Family APPLICATION NOTE Publication Number S6J3110_AN708-00014 CONFIDENTIAL Revision 2.0 Issue Date July 31, 2015 v1.1 A P P L I C A T I O N N O T E 対象製品 本操作マニュアルに記載されている内容の対象製品は、下記のとおりです。 シリーズ名 2 CONFIDENTIAL 品種型格(パッケージサフィックスは除く) S6J3110 series S6J3118, S6J3119, S6J311A, S6J311B, S6J311C, S6J311D, S6J311E S6J3120 series S6J3128, S6J3129, S6J312A S6J3110_AN708-00014-2v0-J, July 31, 2015 v1.1 A P P L I C A T I O N N O T E Table of Contents 1. 2. 3. 4. 5. はじめに ......................................................................................................................................... 6 1.1 この文書について................................................................................................................ 6 クロックシステム概要 .................................................................................................................... 7 クロックシステムの設定方法 ....................................................................................................... 12 3.1 クロックシステム設定方法(RUN 動作) ............................................................................. 12 3.1.1 RUN プロファイル設定 .................................................................................... 12 3.1.2 RUN プロファイル設定適用 ............................................................................. 13 3.2 クロックシステム設定手順(PLL 動作) .............................................................................. 15 3.2.1 ソースクロック許可設定 .................................................................................. 15 3.2.2 ソースクロックタイマ設定 .............................................................................. 16 3.2.3 クロックギア設定 ............................................................................................. 16 3.2.4 PLL クロック逓倍/分周 .................................................................................... 17 3.2.5 クロックドメイン 0 ソースクロック選択 ......................................................... 17 3.3 サンプルソフトのクロック設定手順 ................................................................................. 18 参考文書 ....................................................................................................................................... 23 主な変更内容 ................................................................................................................................ 24 July 31, 2015, S6J3110_AN708-00014-2v0-J CONFIDENTIAL 3 V1.1 A P P L I C A T I O N N O T E Figures Figure 2-1 クロックシステム概要図 .......................................................................................................... 7 Figure 2-2 クロック生成部 ブロックダイアグラム................................................................................... 8 Figure 2-3 内蔵 PLL クロック生成部 ......................................................................................................... 8 Figure 2-4 クロック分周/分配部 ブロックダイアグラム (Clock Domain 0) ........................................... 10 Figure 2-5 クロック分周/分配部 ブロックダイアグラム (Clock Domain MCUC) ................................... 11 Figure 3-1 RUN 動作設定手順 .................................................................................................................. 12 Figure 3-2 状態遷移図 ............................................................................................................................. 13 Figure 3-3 PLL クロック設定手順例 ........................................................................................................ 15 Figure 3-4 PLL クロック設定手順例 (start.c)........................................................................................... 18 4 CONFIDENTIAL S6J3110_AN708-00014-2v0-J, July 31, 2015 v1.1 A P P L I C A T I O N N O T E Tables Table 2-1 PLL クロック逓倍/分周設定例 .................................................................................................... 9 Table 3-1 ソースクロック発振許可設定例 ............................................................................................... 16 Table 3-2 ソースクロックタイマ設定例 .................................................................................................. 16 Table 3-3 クロックギア設定例................................................................................................................. 16 Table 3-4 PLL クロック逓倍/分周設定 ..................................................................................................... 17 Table 3-5 クロックドメイン 0 ソースクロック設定例............................................................................. 17 July 31, 2015, S6J3110_AN708-00014-2v0-J CONFIDENTIAL 5 V1.1 A P P L I C A T I O N N O T E 1. はじめに 1.1 この文書について このアプリケーションノートは、スパンション製マイコン Traveo ファミリ S6J3110 / S6J3120 series の利用 を検討されている方を対象としています。 本アプリケーションノートでは、クロックシステムの設定方法について記載します。 6 CONFIDENTIAL S6J3110_AN708-00014-2v0-J, July 31, 2015 v1.1 A P P L I C A T I O N 2. N O T E クロックシステム概要 本章ではクロックシステムの概要について説明します。 クロックシステムはマイコンを動作させるための様々なクロックを提供します。 Figure 2-1 のようにクロックシステムは 3 つのモジュールで構成されています。 -クロック制御部 -クロック生成部 -クロック分周/分配部 Figure 2-1 クロックシステム概要図 クロック制御部 クロック分周/分配部 Clock Domain 0 外部発振入力 X0 高速CR 発振回路 X1 X0A X1A Clock Domain TRC クロック生成部 低速CR 発振回路 メイン 発振回路 PLL 発振回路 SSCG PLL 発振回路 Clock Domain x (X=1,2,3…) 低速CRクロック メインクロック Clock Domain HSSPI サブクロック マイコン機能 - CPU - Flash - SHE - 周辺機能 … サブ 発振回路 高速CRクロック Clock Domain MCUC PLLクロック Clock Domain CLKO SSCG PLLxクロック クロック制御部 クロック制御部はレジスタ設定値に基づいて、クロックシステムに制御信号を生成します。 クロック生成部 Figure 2-2Figure 2-2 にクロック生成部のブロックダイアグラムを示します。クロック生成部はマイコンの 外部/内蔵発振クロックからソースクロックを生成します。ソースクロックはクロック分周/分配部にて分周 され、内部動作クロックとしてマイコン内の各機能に供給されます。 S6J3110 / S6J3120 シリーズでは以下のクロックソースが生成されます。 - メインクロック: 4MHz - 高速 CR クロック: 4MHz - 低速 CR クロック: 100kHz 各クロックソースには、クロックの発振安定待ち時間までクロック出力をゲーティングするタイマ(ソース クロックタイマ)が用意されています。低消費電力対応の場合は、クロックゲーティング機能を使用して、 内部回路へのクロック供給を止めることも可能です。 July 31, 2015, S6J3110_AN708-00014-2v0-J CONFIDENTIAL 7 V1.1 A P P L I C A T I O N N O T E Figure 2-2 クロック生成部 ブロックダイアグラム クロック生成部 クロックソース 4MHz 100KHz ソースクロックタイマ 高速CR タイマ 高速CR 発振回路 低速CR タイマ 低速CR 発振回路 SCROSCRDY メイン タイマ MOSCRDY CLK GATE 高速CRクロック OUT CLK GATE OUT CLK GATE OUT 低速CRクロック クロック監視 CSV メインクロック CSV SOSCRDY サブ 発振回路 X1A EN IN サブ タイマ X0A ソースクロック Divider (1/40) EN IN メイン 発振回路 X1 EN IN 4MHz X0 クロックゲーティング CROSCRDY EN IN 1/2 CLK GATE CSV OUT SEL メインクロック/ メイン2分周クロック サブクロック CSV 32kHz 内蔵PLL生成部 PLL0クロック PLL0 circuit PLL0 circuit PLL0 PLLcircuit circuit CAN PLLクロック SSCG クロック生成部 SSCG PLL0クロック SSCG PLL circuit SSCG SSCGPLL PLLcircuit circuit SSCG PLL circuit *S6J3110 / S6J3120 シリーズはサブ発振入力には対応していません。 クロック生成部には PLL 発振回路を内蔵しており、メインクロックもしくは高速 CR クロックから PLL ク ロックを生成します。PLL クロックの逓倍/分周設定は、レジスタ設定(PLLDIVL/PLLDIVN/PLLDIVM)によ り行います。Figure 2-3 に内蔵 PLL クロック生成部の構成、Table 2-1 に PLL クロック設定例を示します。 Figure 2-3 内蔵 PLL クロック生成部 PLLDIVM: PLL clock M divider (13, 14, 15, ..., 199, 200) PLLDIVL: PLL input clock divider (1, 2, 4, 6) PLLDIVN: PLL source clock N-multiplication factor (13, 14, 15, ..., 199, 200) 8 CONFIDENTIAL S6J3110_AN708-00014-2v0-J, July 31, 2015 v1.1 A P P L I C A T I O N N O T E Table 2-1 PLL クロック逓倍/分周設定例 Input Input clock DIV clock Configuration PLLin PLL Multiplier Configuration PLLout Output Divider Configuration (Set by PLLDIVL) (Set by PLLDIVN) (Set by PLLDIVM) PLL Clock Part Number 4MHz 1 4MHz 144 576MHz 4 144MHz S6J311B, S6J311C, S6J311D, S6J311E 4MHz 1 4MHz 120 480MHz 4 120MHz S6J311B, S6J311C, S6J311D, S6J311E 4MHz 1 4MHz 112 448MHz 4 112MHz S6J311B, S6J311C, S6J311D, S6J311E, S6J3128, S6J3129, S6J312A S6J311B, S6J311C, S6J311D, S6J311E, 4MHz 1 4MHz 144 576MHz 6 96MHz S6J3118, S6J3119, S6J311A S6J311B, S6J311C, S6J311D, S6J311E, 4MHz 1 4MHz 120 480MHz 6 80MHz S6J3118, S6J3119, S6J311A, S6J3128, S6J3129, S6J312A S6J311B, S6J311C, S6J311D, S6J311E, 4MHz 1 4MHz 120 480MHz 12 40MHz S6J3118, S6J3119, S6J311A, S6J3128, S6J3129, S6J312A <注意事項> − PLL の入力クロック(PLLin)は 4MHz となるように入力クロックの分周設定を行ってください。 − PLL の出力クロック周波数(PLLout)の許容範囲は製品型格毎に異なります。下記の範囲内になるよ うクロック逓倍設定を行ってください。 S6J3118, S6J3119, S6J311A, S6J311B, S6J311C, S6J311D, S6J311E: 400MHz ~ 576MHz S6J3128, S6J3129, S6J312A: 400MHz ~ 512MHz − PLL クロックの最大動作周波数は製品型格毎に異なります。 S6J311B, S6J311C, S6J311D, S6J311E: 144MHz S6J3118, S6J3119, S6J311A: 96MHz S6J3128, S6J3129, S6J312A: 112MHz − 詳細は各製品のデータシート及びハードウェアマニュアルを参照ください。 クロック分周/分配部 クロック分周/分配部は、クロックドメイン毎にソースクロック選択及び分周回路が存在します。 S6J3110/S6J3120 シリーズには以下のクロックドメインが存在し、各ドメインでは 1 つのクロックソース が選択され、分周されたクロックが内部クロックとして分配されます。 - Clock Domain 0 (CD0) - Clock Domain 1/2/3/4/5 (CD1/CD2/CD3/CD/4/CD5) *S6J3120series のみ - TRC Clock Domain (CD_TRC) - HSSPI Clock Domain (CD_HSSPI) *S6J3120series のみ - MCUC Clock Domain (CD_MCUC) - CLKO Clock Domain (CD_CLKO) Figure 2-4 および Figure 2-5 に、S6J3110 series における Clock Domain 0 及び MCUC Clock Domain のクロック 分周/分配部のブロックダイアグラムを示します。ソースクロックが選択された後、ソースクロックの分周 クロックが内蔵機能への動作クロックとして分配されます。クロックドメインの構成や内部動作クロックの 最大動作周波数の詳細は、各製品のデータシート及びハードウェアマニュアルを参照ください。 July 31, 2015, S6J3110_AN708-00014-2v0-J CONFIDENTIAL 9 V1.1 A P P L I C A T I O N N O T E Figure 2-4 クロック分周/分配部 ブロックダイアグラム (Clock Domain 0) <内部動作クロック> ソースクロック CLK_CPU Divider GATE (1/2/3..31/32) 高速CRクック GATE Divider 低速CRクロック GATE (1/2/3/4/5/6/7/8) Divider メインクロック GATE (1/2/4/8) Selector Divider GATE GATE GATE (1/2/3/4/5/6/7/8) PLL0クロック Divider GATE (1/2/3..15/16) Divider GATE (1/2/3..15/16) Divider (1/2/3..15/16) Divider Divider (1/2/3..15/16) (1/2/4/8) Divider (1/2/3..15/16) S Divider E (1/2/3..31/32) L Divider (1/2/3..15/16) S Divider E (1/2/3..31/32) L Divider (1/2/3..15/16) S Divider E (1/2/3..31/32) L Divider (1/2/3..15/16) S Divider E (1/2/3..31/32) L 10 CONFIDENTIAL GATE GATE (1/2/3..15/16) Divider ETB (Trace buffer) CLK_HPM CLK_DMA CLK_MEMC DEBUG SRAM I/O, DMA IRC, BootROM DEBUG GATE (2) CD0CSL[2:0] CLK_ATB CLK_HPM2 Divider SSCG PLL0クロック SHE TC Flash Work Flash GATE (1/2/4/8) CPU CLK_FCLK CLK_DBG Divider メインクロック/ メイン2分周クロック CLK_SHE <マイコン内部機能> GATE CLK_SYSC1 CLK_HAPP0A0 CLK_HAPP0A1 CLK_HAPP1B0 CLK_HAPP1B1 CLK_LCP GATE GATE GATE GATE GATE GATE GATE GATE GATE CLK_LCP0 CLK_LCP0A CLK_LCP1 CLK_LCP1A CLK_LAPP0 System controller None None None None CAN FD None Timer Multi Function Serial A/DC None None None CLK_LAPP0A None CLK_LAPP1 CLK_LAPP1A None None * “None” は接続されるマイコン内部機能がないことを意味しています。 S6J3110_AN708-00014-2v0-J, July 31, 2015 v1.1 A P P L I C A T I O N N O T E Figure 2-5 クロック分周/分配部 ブロックダイアグラム (Clock Domain MCUC) <内部動作クロック> <マイコン内部機能> ソースクロック CLK_SYSC0H Divider GATE (1/2/3..31/32) 高速CRクック 低速CRクロック メインクロック CLK_COMH メインクロック/ メイン2分周クロック CLK_RAM0H Selector CLK_RAM1H Divider (1/2/3..15/16) GATE MCU Config Group - LVD - CSV - RTC - EXTIRQ - NMI - H/W WDG RAM ECC Backup RAM 0 Backup RAM 1 CLK_SYSC0P None PLL0クロック CLK_COMP None * “None” は接続されるマイコン内部機能がないことを意味しています。 SSCG PLL0クロック July 31, 2015, S6J3110_AN708-00014-2v0-J CONFIDENTIAL 11 V1.1 A P P L I C A T I O N N O T E 3. クロックシステムの設定方法 3.1 クロックシステム設定方法(RUN 動作) Figure 3-1 に RUN 動作のためのクロックシステム設定方法を示します。 Figure 3-1 RUN 動作設定手順 電源投入 : ハードウェアによる動作 リセット解除 高速CRクロック発振: 許可 (初期状態) 発振安定待ち : ソフトウェアによる設定動作 高速CR発振安定待ち完了 高速CR発振で動作開始 デフォルトRUN動作 RUNプロファイルレジスタ設定 RUNプロファイル設定適用 RUNプロファイル設定適用 (SYSC_TRGRUNCNTR:トリガ制御に “0xAB”を書き込む) RUNプロファイル設定反映/設定完了 RUN動作 RUN設定変更 電源投入後、マイコンは高速 CR クロックで動作します。システム動作クロックを変更する場合は、ソフト ウェアによる RUN プロファイルの設定及び適用が必要です。 3.1.1 RUN プロファイル設定 大きく 2 つの低消費電力状態があり、設定により様々な低消費電力制御が可能です。 - RUN (Normal Operation): CPU がプログラム動作している状態です。 初期化リセット後は本ステート(プログラム動作)で動作します。 RUN 状態では、RUN プロファイルの更新、PSS への移行ができます。 - PSS (Power Saving State): CPU がプログラムを停止している状態かつ低消費電力状態です。 12 CONFIDENTIAL S6J3110_AN708-00014-2v0-J, July 31, 2015 v1.1 A P P L I C A T I O N N O T E Figure 3-2 状態遷移図 以下のクロックに関する項目を RUN/PSS で設定可能です。それぞれ RUN プロファイルレジスタ/PSS プロ ファイルレジスタで設定します。クロック設定を変更する場合においても、プロファイルの設定及び更新を 行う必要があります。 3.1.2 - ソースクロック発振許可/禁止 - クロックドメイン制御 (ソース選択, 分周, 各ドメインクロックの発振許可/停止) RUN プロファイル設定適用 RUN/PSS プロファイル設定パラメータの設定を変更する場合、該当するレジスタへ値を書き込んだだけで は設定が反映されません。RUN プロファイルの設定を反映させるには以下の手順を行う必要があります。 1. 2. 3. 4. 設定を変更するレジスタ全てに設定値を書き込む システムステータスフラグ・割込みクリアレジスタ(SYSC0_SYSICLR)にて RUN プロファイル更 新完了(メイン状態制御)フラグをクリア RUN プロファイル更新トリガレジスタ(SYSC0_TRGRUNCNTR)に”0xAB”を書き込む システムステータスレジスタ(SYSC0_SYSSTSR)の RUN プロファイル更新完了(メイン状態制御) フラグビット(RUNDF0)をポーリングし、プロファイル更新が完了する(RUNDF0 が”1”になる) まで待つ 制御回路が RUN プロファイルの内容を確認し、 内容に問題がなければ以下の順で設定を反映していきます。 1. 2. 3. システムステータスレジスタ(SYSC0_SYSSTSR)の RUNSTS0 に"1"をセット RUN プロファイルの内容を APPLIED プロファイルにコピー 以下の設定を順に反映 − − − − − 4. 5. クロック発振許可/停止(発振安定待ちも含む) クロックスーパバイザ設定変更 LVD 設定変更 クロック動作設定(ソースクロックの変更、分周、各クロックソース ON/OFF) クロック停止設定(ソースクロックの停止) RUN プロファイルの更新が完了後、システムステータスレジスタ(SYSC0_SYSSTSR)の RUNSTS0 を"0"クリア システムステータスレジスタ(SYSC0_SYSSTSR)の RUNDF0 に"1"をセット July 31, 2015, S6J3110_AN708-00014-2v0-J CONFIDENTIAL 13 V1.1 A P P L I C A T I O N N O T E RUN プロファイルの設定内容に問題がある場合はプロファイルエラーとなり、システムエラー割込み要因 レジスタ 1(SYSC0_SYSERRIR1)の RUNERRIF0 に”1”をセットします。このとき新しいプロファイルの内 容は破棄され、現在使用しているプロファイルの内容で回路は動作します。 <注意事項> プロファイル更新中のプロファイル更新は禁止です。プロファイル更新中に再度プロファイルを更新した 場合システムエラー割込みが発生し、再度更新しようとしたプロファイルは無効となります。 RUN プロファイルを更新する前に、プロファイルステータスレジスタ(SYSC0_SYSPROSTSR:RUNPSTS) を確認し、プロファイルエラーがないことを確認してください。プロファイルエラーの状態で RUN プロ ファイル更新を行った場合 NMI 割込みが発生し、RUN プロファイルの設定は破棄されます。 RUN プロファイル更新中は RUN プロファイルレジスタ群にライトアクセスすることは禁止です。RUN プロファイル更新中に RUN プロファイルレジスタ群にライトアクセスした場合、バスエラーとなり書き 込んだデータは無効となります。 プロファイル設定や動作の詳細については、ハードウェアマニュアルの低消費電力の章を参照ください。 14 CONFIDENTIAL S6J3110_AN708-00014-2v0-J, July 31, 2015 v1.1 A P P L I C A T I O N 3.2 N O T E クロックシステム設定手順(PLL 動作) Figure 3-3 に PLL クロックの設定手順を示します。RUN プロファイル設定後、PLL クロックへの切り替え はクロックギアを使用することで、徐々に変化させていくことができます。 Figure 3-3 PLL クロック設定手順例 電源投入 : ソフトウェアによる設定動作 PLL/SSCGクロック発振安定待ち時間設定 (SYSC_PLLSSCGSTCNTR) クロックギア制御設定 (SYSC_PLLxCGCNTR) RUNプロファイル更新 PLLクロックでのRUN動作 クロックギアアップ開始 (SYSC_PLLxCGCNTR) (PLLCGSTR = 1'b1) クロックギアステータス確認 SYSC_PLLx CGCNTR.PLLCGSTS[1:0]を 読み出し PLLCGSTS[1:0] = 2'b10 ? No Yes RUN動作 3.2.1 ソースクロック許可設定 ハードウェアリセット直後は外部/内蔵発振回路からのソースクロック(高速 CR クロック、低速 CR クロッ ク、メインクロック/メイン 2 分周クロック)のみが発振許可となり、PLL クロックは発振禁止となります。 システムクロックのソースクロックを PLL クロックに変更するためには PLL クロックの発振を許可にする 必要があります。PLL クロックの発振を許可にするためにはメインクロックの発振が許可になっている必要 があります。メインクロックの発振が禁止となっていた場合、プロファイルエラーとなります。 Table 3-1 に示すレジスタのビットに”1”を書き込むことにより、RUN 動作時の該当クロックの発振を許可す ることができます。ただし、システムで使用されているクロックの設定を変更することはできません。また、 RUN 動作時は高速 CR クロック及び、低速 CR クロックの発振を禁止にすることはできません。 July 31, 2015, S6J3110_AN708-00014-2v0-J CONFIDENTIAL 15 V1.1 A P P L I C A T I O N N O T E Table 3-1 ソースクロック発振許可設定例 レジスタ略称 ビット名 設定値(2 進数) 設定内容 PLLEN PLL クロック発振許可 1 MOSCEN メインクロック発振許可 1 SCROSCEN 低速 CR クロック発振許可 1 CROSCEN 高速 CR クロック発振許可 1 SYSC0_RUNCKSRER ソースクロックタイマ設定 3.2.2 クロックの発振安定待ち時間までクロック出力をゲーティングするためにソースクロックタイマを使用し ます。ソースタイマを使用するためには Table 3-2 に示すレジスタを設定する必要があります。 Table 3-2 ソースクロックタイマ設定例 レジスタ略称 ビット名 設定内容 PSCL メインクロックタイマの入力クロック分周比選択 CMPR メインクロックタイマのコンペア値 SYSC_ MOCTTRGR CGCPT タイマ設定変更/タイマカウント開始 SYSC_PLLSSCGSTCNTR PLLSTABS PLL 発振安定待ち時間を選択 SYSC_MOCTCPR クロックギア設定 3.2.3 クロックギアはクロックギア回路に入力されたクロックを段階的に出力していきます。これにより周波数を 徐々に変化させていくことができます。 クロックギアを使用せずにメインクロックから PLL クロックへの変更を行った場合、周波数が急激に変動 することにより電源電流が大きく変動します。電源電流のオーバシュート/アンダシュートを避けるため、 クロック変更時は必ずクロックギアを使用してください。 クロックギアを使用するためには Table 3-3 に示すレジスタを設定する必要があります。 Table 3-3 クロックギア設定例 レジスタ略称 ビット名 PLLCGLP SYSC_PLL0CGCNTR 設定内容 *1 クロックギア動作の 1 ステップにおけるループ回数 PLLCGSTP *1 ギアアップ/ギアダウン時のステップ幅 PLLCGSSN *1 クロックギア動作開始ステップ クロックギア動作開始 PLLCGSTR PLLCGEN *1 クロックギア動作許可 PLL クロック発振許可設定後の設定変更は禁止です。 *1 クロックギア動作開始手順 3.2.3.1 Table 3-3(PLLCGSTR を除く)の設定を行った後、以下の手順を行うことでクロックギアが動作を開始しま す。クロックギア動作開始後はクロックギアが完了するまで待ってください。 1. 2. 3. 16 CONFIDENTIAL PLL クロックをドメインクロックとして選択 クロックギア制御レジスタ(SYSC_PLL0CGCNTR)の PLLCGSTR に”01”をセット クロックギア制御レジスタ(SYSC_PLL0CGCNTR)の PLLCGSTS をポーリングし、クロックギアが 停止する(PLLCGSTS が”10”になる)まで待つ S6J3110_AN708-00014-2v0-J, July 31, 2015 v1.1 A P P L I C A T I O N N O T E <注意事項> ステップ幅が小さく、ループ回数が大きいほど周波数は緩やかに変化していきます。 クロックギアを動作許可に設定すると、クロックギア入力クロックの発振安定待ち時間経過後から PLLCGSSN の設定に応じたクロックを出力します。ただし、クロックギア動作開始設定が行われるまで ギアアップ/ギアダウンは行いません。 3.2.4 PLL クロック逓倍/分周 PLL クロックの逓倍/分周設定は RUN PLLx 制御レジスタ (SYSC0_RUNPLLxCNTR)で設定します. PLL クロック設定例については Table 3-4 を参照ください。 Table 3-4 PLL クロック逓倍/分周設定 レジスタ略称 ビット名 SYSC0_RUNPLLxCNTR 3.2.5 設定内容 PLLDIVN PLL クロック N 逓倍設定ビット PLLDIVM PLL クロック M 分周設定ビット PLLDIVL PLL 入力クロック分周設定ビット クロックドメイン 0 ソースクロック選択 ハードウェアリセット直後、全てのクロックドメインはソースクロックに高速 CR クロックが選択されてい る状態になります。システムクロックのソースクロックを PLL クロックに変更する場合はクロックドメイ ン 0 のソースクロックに PLL クロックを設定する必要があります。クロックドメイン 0 のソースクロック を PLL クロックに設定することでシステムクロックのソースクロックが PLL クロックになります。 RUN 動作時のクロックドメイン 0 のソースクロックは Table 3-5 に示すレジスタを設定することによって選 択することが可能です。RUN 動作時のクロックドメイン 0 のソースクロックを PLL クロックに設定する場 合の設定値を Table 3-5 に記します。 Table 3-5 クロックドメイン 0 ソースクロック設定例 レジスタ略称 SYSC1_ RUNCKSELR0 July 31, 2015, S6J3110_AN708-00014-2v0-J CONFIDENTIAL ビット名 CD0CSL 設定内容 クロックドメイン 0 ソースクロック選択 設定値(10 進数) 4 17 V1.1 A P P L I C A T I O N 3.3 N O T E サンプルソフトのクロック設定手順 Figure 3-4 にサンプルソフトにおけるクロック設定手順例を示します。 Figure 3-4 PLL クロック設定手順例 (start.c) static void ConfigureClocks(void) { // At first, disable PSS profile update. // This setting is for wakeup from shutdown mode. // note: SYSC1 was cleared by hardware after PSS profile is updated, but SYSC0 was not cleared. SYSC0_PROTKEYR = SYSC_KEY_UNLOCK; SYSC0_PSSENR_PSSEN0 = 0; ソースクロックタイマ(発振安定待ち時間)の設定 //-----------------------------------------------------------------// Set main oscillator and main PLL stabilization time メイン/PLL/SSCG クロックの発振安定待ち時間設定 //------------------------------------------------------------------ // Set new main oscillation stabilization time and trigger data update SYSC0_PROTKEYR SYSC_6.unMOCTCPR.stcField = = SYSC_KEY_UNLOCK; - SYSC レジスタのプロテクト解除 // unlock SYSC0 (stc_sysc_6_moctcpr_field_t){ .u4PSCL = SYSC_MAINSCT_PRESCALER, .u16CMPR // prescaler = SYSC_MAINSCT_CMPR }; // compare value // trigger configuration capture 分周値/コンペア値の設定 - SYSC レジスタのプロテクト解除 SYSC0_PROTKEYR SYSC_6.unMOCTTRGR.stcField - メインクロックタイマの = = SYSC_KEY_UNLOCK; // unlock SYSC0 (stc_sysc_6_mocttrgr_field_t){ .u1CGCPT - メインクロックタイマの設定変更 = 1 }; 及びタイマカウント開始 // Set PLL / SSCG stabilization time - SYSC レジスタのプロテクト解除 SYSC0_PROTKEYR = SYSC_KEY_UNLOCK; // unlock SYSC0 - PLL/SSCG クロックの発振安定 SYSC_7.unPLLSSCGSTCNTR.stcField = (stc_sysc_7_pllsscgstcntr_field_t){ .u4PLLSTABS = SYSC_PLLST_PLLSTABS, 待ち時間設定 .u4SSCGSTABS = SYSC_PLLST_PLLSTABS, }; RUN プロファイル設定 (パワードメイン制御) //-----------------------------------------------------------------// Configure run profile //-----------------------------------------------------------------// Enable power domains SYSC0_PROTKEYR SYSC0_1.unRUNPDCFGR.stcField 18 CONFIDENTIAL = = SYSC_KEY_UNLOCK; - SYSC レジスタのプロテクト解除 // unlock SYSC0 (stc_sysc0_1_runpdcfgr_field_t){ .u1PD6_1EN = 1, - パワードメイン許可設定 // switch on PD6_1 () .u1PD6_0EN = 1, // switch on PD6_0 () .u1PD5_3EN = 1, // switch on PD5_3 () .u1PD5_2EN = 1, // switch on PD5_2 () .u1PD5_1EN = 1, // switch on PD5_1 () .u1PD5_0EN = 1, // switch on PD5_0 () .u1PD4_1EN = 1, // switch on PD4_1 (Backup RAM1) .u1PD4_0EN = 1, // switch on PD4_0 (Backup RAM0) .u1PD3EN = 1, // always on (Core) .u1PD2EN = 1 };// always on (Peripheral) S6J3110_AN708-00014-2v0-J, July 31, 2015 v1.1 A P P L I C A T I O N N O T E RUN プロファイル設定 (クロック発振許可設定) // Enable oscillators SYSC0_PROTKEYR = SYSC0_1.unRUNCKSRER.stcField SYSC_KEY_UNLOCK; = - SYSC レジスタのプロテクト解除 // unlock SYSC0 (stc_sysc0_1_runcksrer_field_t){ .u1SOSCEN .u1PLL0EN = 0, = 1, -各種クロック発振許可設定 // disable Sub Oscillation (サブクロックは除く) // enable PLL0 .u1SSCG0EN = 1, // enable SSCG0 .u1MOSCEN = 1, // enable Main Oscillation .u1CROSCEN = 1, // RC Osc. (always on in RUN state) .u1SCROSCEN = 1 };// Slow RC Osc. (always on in RUN state) RUN プロファイル設定 (PLL/SSCG クロック設定) //-----------------------------------------------------------------// Write Main / SSCG PLL settings SYSC0_PROTKEYR = SYSC0_1.unRUNPLL0CNTR.stcField SYSC_KEY_UNLOCK; // unlock SYSC0 = (stc_sysc0_1_runpll0cntr_field_t){ .u8PLL0DIVN = (SYSC_MAIN_PLL_DIVN), .u4PLL0DIVM = (SYSC_MAIN_PLL_DIVM), .u2PLL0DIVL = SYSC0_PROTKEYR = SYSC_KEY_UNLOCK; // set PLL input multiplication value (SYSC_PLL_DIVL)}; // set PLL output divider - PLL クロック N 逓倍 - PLL クロック M 分周 - PLL 入力クロック分周 // set PLL input divider // unlock SYSC0 SYSC0_1.unRUNSSCG0CNTR0.stcField = (stc_sysc0_1_runsscg0cntr0_field_t){ .u8SSCG0DIVN = (SYSC_MAIN_SSCG_DIVN), .u4SSCG0DIVM = (SYSC_MAIN_SSCG_DIVM), .u2SSCG0DIVL = (SYSC_SSCG_DIVL)}; // set SSCG PLL input multiplication value // set SSCG PLL output divider // set SSCG PLL input divider // Clock gear SYSC0_PROTKEYR SYSC_7.unPLL0CGCNTR.stcField = SYSC_KEY_UNLOCK; = - SYSC レジスタのプロテクト解除 // unlock SYSC0 (stc_sysc_7_pll0cgcntr_field_t){ .u8PLLCGLP = SYSC0_PROTKEYR = SYSC_KEY_UNLOCK; SYSC_7.unSSCG0CGCNTR.stcField = (stc_sysc_7_sscg0cgcntr_field_t){ 4, // Loops per step .u2PLLCGSTP = 1, .u6PLLCGSSN = 8, // Start step = 8 .u1PLLCGSTR = 0, // Start gear operation .u1PLLCGEN = 1}; // Enable - PLL クロックギア設定 // 2 steps - SYSC レジスタのプロテクト解除 // unlock SYSC0 .u8SSCGCGLP = 4, // Loops per step .u2SSCGCGSTP = 1, .u6SSCGCGSSN = 8, // Start step = 8 .u1SSCGCGSTR = 0, // Start gear operation .u1SSCGCGEN = 1}; // Enable - SSCG クロックギア設定 // 2 steps RUN プロファイル設定 (クロックソースの選択) //-----------------------------------------------------------------// Select clock sources SYSC0_PROTKEYR = SYSC_KEY_UNLOCK; SYSC0_1.unRUNCKSELR.stcField = (stc_sysc0_1_runckselr_field_t){ - SYSC レジスタのプロテクト解除 // unlock SYSC0 .u3CDMCUCCSL= 5}; // Clock domain MCUC clock = SSCG0 -クロックドメイン MCUC に SSCG クロック入力を選択 SYSC1_PROTKEYR = SYSC_KEY_UNLOCK; SYSC1.unRUNCKSELR0.stcField = (stc_sysc1_runckselr0_field_t){ - SYSC レジスタのプロテクト解除 // unlock SYSC1 .u4HSSPICSL = 0, 0, // LAPP1A clock = CD0 (1=PLL0) .u1LAPP0ACSL= 0, // LAPP0A clock = CD0 (1=PLL0) .u1LCP1ACSL = July 31, 2015, S6J3110_AN708-00014-2v0-J CONFIDENTIAL // Hsspi clock domain = Fast CR .u1LAPP1ACSL= 0, // LCP1A clock = CD0 (1=PLL0) .u1LCP0ACSL = 0, .u3CD0CSL 5}; // Clock Domain 0 = SSCG0 = -クロックドメイン 0 に SSCG クロック入力を選択 - LAPP1A/LAPP0A/LCP1A/LCP0A に CD0 を選択 // LCP0A clock = CD0 (1=PLL0) 19 V1.1 A P P L I C A T I O N SYSC1_PROTKEYR = SYSC1.unRUNCKSELR2.stcField = SYSC_KEY_UNLOCK; N O T E // unlock SYSC1 (stc_sysc1_runckselr2_field_t){ .u3TRCCSL = 5}; // TRC clock = SSCG0 RUN プロファイル設定 (クロック発振許可設定) //-----------------------------------------------------------------// Enable clocks SYSC1_PROTKEYR = SYSC1.unRUNCKER1.stcField = SYSC1_PROTKEYR = - SYSC レジスタのプロテクト解除 // unlock SYSC1 (stc_sysc1_runcker1_field_t) { = SYSC1.unRUNCKER2.stcField SYSC_KEY_UNLOCK; SYSC_KEY_UNLOCK; .u1ENCLKCD3B1 = 0, // Disable CD3B1 .u1ENCLKCD3B0 = 0, // Disable CD3B0 .u1ENCLKCD3A1 = 0, // Disable CD3A1 .u1ENCLKCD3A0 = 0, // Disable CD3A0 .u1ENCLKCD3 = 0, // Disable CD3 .u1ENCLKCD2B1 = 0, // Disable CD2B1 .u1ENCLKCD2B0 = 0, // Disable CD2B0 .u1ENCLKCD2A1 = 0, // Disable CD2A1 .u1ENCLKCD2A0 = 0, // Disable CD2A0 .u1ENCLKCD2 = 0, // Disable CD2 .u1ENCLKCD1B1 = 0, // Disable CD1B1 .u1ENCLKCD1B0 = 0, // Disable CD1B0 .u1ENCLKCD1A1 = 0, // Disable CD1A1 .u1ENCLKCD1A0 = 0, // Disable CD1A0 .u1ENCLKCD1 = 0, // Disable CD1 .u1ENCLKHSSPI = 0}; // Disable HSSPI .u1ENCLKCD5B1 = 0, // Disable CD5B1 .u1ENCLKCD5B0 = 0, // Disable CD5B0 .u1ENCLKCD5A1 = 0, // Disable CD5A1 .u1ENCLKCD5A0 = 0, // Disable CD5A0 .u1ENCLKCD5 = 0, // Disable CD5 .u1ENCLKCD4B1 = 0, // Disable CD4B1 .u1ENCLKCD4B0 = 0, // Disable CD4B0 .u1ENCLKCD4A1 = 0, // Disable CD4A1 .u1ENCLKCD4A0 = 0, // Disable CD4A0 .u1ENCLKCD4 = 0}; // Disable CD4 - SYSC レジスタのプロテクト解除 // unlock SYSC1 (stc_sysc1_runcker2_field_t) { - 各種内部動作クロック発振禁止 - 各種内部動作クロック発振禁止 RUN プロファイル設定 (クロック分周設定) //-----------------------------------------------------------------// Set clock dividers (valid setting for all main-PLL frequencies) SYSC0_PROTKEYR SYSC0_1.unRUNCKDIVR.stcField = = SYSC_KEY_UNLOCK; - SYSC レジスタのプロテクト解除 // unlock SYSC0 (stc_sysc0_1_runckdivr_field_t) { .u4MCUCPDIV = 0, .u5MCUCHDIV = // MCUconfig APB clock divider = 1 3 };// MCUconfig AHB clock divider = 4 // Set clock dividers (valid setting for all main-PLL frequencies) SYSC1_PROTKEYR SYSC1.unRUNCKDIVR0.stcField 20 CONFIDENTIAL = = SYSC_KEY_UNLOCK; - クロックドメイン MCUC の分周設定 - SYSC レジスタのプロテクト解除 // unlock SYSC1 (stc_sysc1_runckdivr0_field_t) { .u3HPMDIV - 下記クロックの分周設定 = 3, // HPM clock divider = 4 -HPM .u5TRCDIV = 3, // TRC Clock divider = 4 -TRC .u2DBGDIV = 0, // DBG Clock divider = 1 -DBG .u2ATBDIV = 1, // ATB Clock divider = 2 .u5SYSDIV = 0 };// System Clock divider = 1 -ATB -System clock S6J3110_AN708-00014-2v0-J, July 31, 2015 v1.1 A P P L I C A T I O N SYSC1_PROTKEYR SYSC1.unRUNCKDIVR1.stcField = = SYSC1_PROTKEYR SYSC1.unRUNCKDIVR2.stcField = SYSC_KEY_UNLOCK; = SYSC_KEY_UNLOCK; .u4HAPP1B1DIV = 0, .u4HAPP1B0DIV = 0, // HAPP1B0 Clock divider = 1 -HAPP1B1DIV / HAPP1B0DIV .u4HAPP0A1DIV = 0, // HAPP0A1 Clock divider = 1 -HAPP0A1DIV / HAPP0A0DIV .u4HAPP0A0DIV = 0, // HAPP0A0 Clock divider = 1 -SYSC1 .u4SYSC1DIV = 0, // SYSC1 Clock divider = 1 -外部バス .u3EXTBUSDIV = 7 };// EXTBUS Clock divider = 128 - SYSC レジスタのプロテクト解除 .u4LAPP1DIV = 3, // LAPP1 clock divider = 4 - 下記クロックの分周設定 .u4LAPP0DIV = 3, // LAPP0 Clock divider = 4 -LAPP1 / LAPP0 .u4LCP1DIV = 3, // LCP1 Clock divider = 4 -LCP1 / LCP0 // LCP0 Clock divider = 4 -LCP .u4LCP0DIV = 3, .u2LCPDIV = 1}; // LCP Clock divider = 2 = 3, - SYSC レジスタのプロテクト解除 // unlock SYSC1 (stc_sysc1_runckdivr3_field_t) { - 下記クロックの分周設定 // HAPP1B1 clock divider = 1 // unlock SYSC1 (stc_sysc1_runckdivr2_field_t) { = - SYSC レジスタのプロテクト解除 // unlock SYSC1 (stc_sysc1_runckdivr1_field_t) { = SYSC1_PROTKEYR SYSC1.unRUNCKDIVR3.stcField SYSC_KEY_UNLOCK; N O T E .u5LAPP1ADIV // LAPP1A clock divider = 4 - 下記クロックの分周設定 .u5LAPP0ADIV = 3, // LAPP0A Clock divider = 4 -LAPP1A / LAPP0A .u5LCP1ADIV = 3, // LCP1A Clock divider = 4 -LCP1A / LCP0A .u5LCP0ADIV = 3 };// LCP0A Clock divider = 4 RUN プロファイルフラグクリア及びプロファイル更新の開始 //------------------------------------------------------------------ SYSC レジスタのプロテクト解除 // Clear RUN Profile Done flag (SYSC_SYSSTSR_RUNDN) SYSC0_PROTKEYR = SYSC0_SYSICLR_RUNDFCLR0 SYSC_KEY_UNLOCK; = - RUN プロファイル更新完了フラグをクリア // unlock SYSC0 1; // RUN Profile update enable SYSC1_PROTKEYR - SYSC レジスタのプロテクト解除 = SYSC1_RUNENR_RUNEN1 SYSC_KEY_UNLOCK; = // unlock SYSC1 - RUN プロファイル更新許可設定 SYSC_TRIGGER_APPLY_RUN_PROFILE; // Write the trigger value to apply the RUN profile SYSC0_PROTKEYR SYSC0_TRGRUNCNTR = = SYSC_KEY_UNLOCK; - SYSC レジスタのプロテクト解除 // unlock SYSC0 SYSC_TRIGGER_APPLY_RUN_PROFILE; - トリガレジスタへの書き込み // trigger RUN-->RUN transition →RUN プロファイル更新開始 RUN プロファイル更新完了の確認 // Wait until the RUN profile is applied - RUN プロファイル更新完了までウェイト while (SYSC0_SYSSTSR_RUNDF0 == 0); July 31, 2015, S6J3110_AN708-00014-2v0-J CONFIDENTIAL 21 V1.1 A P P L I C A T I O N N O T E Start clock gear operation //-----------------------------------------------------------------// Clock gear (Trigger) - SYSC レジスタのプロテクト解除 SYSC0_PROTKEYR = SYSC_KEY_UNLOCK; // unlock SYSC1 - PLL0 クロックギアアップ開始 SYSC_PLL0CGCNTR_PLLCGSTR = 1; // Start gear operation while ((SYSC_PLL0CGCNTR_PLLCGSTS) != 2); // Gear up status : // 00-stop gear at min frequency or clock gear not used - PLL0 クロックギアアップステータスの確認 // 01-gear up operation // 10-stop gear at max frequency // 11-gear down operation SYSC0_PROTKEYR SYSC_SSCG0CGCNTR_SSCGCGSTR = SYSC_KEY_UNLOCK; = 1; while ((SYSC_SSCG0CGCNTR_SSCGCGSTS) != 2); // unlock SYSC1 // Start gear operation - SYSC レジスタのプロテクト解除 - SSCG0 クロックギアアップ開始 // Gear up status : // 00-stop gear at min frequency or clock gear not used - SSCG0 クロックギアアップステータスの確認 // 01-gear up operation // 10-stop gear at max frequency // 11-gear down operation } RUN 動作 22 CONFIDENTIAL S6J3110_AN708-00014-2v0-J, July 31, 2015 v1.1 A P P L I C A T I O N 4. N O T E 参考文書 [1]. 32-bit Microcontroller Spansion Traveo Family S6J3110 series HARDWARE MANUAL [2]. 32-bit Microcontroller Spansion Traveo Family S6J3120 series HARDWARE MANUAL [3]. 32-bit Microcontroller Spansion Traveo Family S6J3110 series Data Sheet [4]. 32-bit Microcontroller Spansion Traveo Family S6J3120 series Data Sheet July 31, 2015, S6J3110_AN708-00014-2v0-J CONFIDENTIAL 23 V1.1 A P P L I C A T I O N N O T E 5. 主な変更内容 ページ 場所 - - P2 対象製品 変更箇所 Revision 1.0 Initial release Revision 2.0 24 CONFIDENTIAL S6J3120 Series を追加 S6J3110_AN708-00014-2v0-J, July 31, 2015 v1.1 A P P L I C A T I O N N O T E 免責事項 本資料に記載された製品は、通常の産業用, 一般事務用, パーソナル用, 家庭用などの一般的用途 (ただし、用途の限定はあ りません) に使用されることを意図して設計・製造されています。(1) 極めて高度な安全性が要求され、仮に当該安全性が 確保されない場合、社会的に重大な影響を与えかつ直接生命・身体に対する重大な危険性を伴う用途 (原子力施設における 核反応制御, 航空機自動飛行制御, 航空交通管制, 大量輸送システムにおける運行制御, 生命維持のための医療機器, 兵器シ ステムにおけるミサイル発射制御等をいう) 、ならびに(2) 極めて高い信頼性が要求される用途 (海底中継器, 宇宙衛星等を いう) に使用されるよう設計・製造されたものではありません。上記の製品の使用法によって惹起されたいかなる請求また は損害についても、Cypress は、お客様または第三者、あるいはその両方に対して責任を一切負いません。半導体デバイス はある確率で故障が発生します。当社半導体デバイスが故障しても、結果的に人身事故, 火災事故, 社会的な損害を生じさ せないよう、お客様において、装置の冗長設計, 延焼対策設計, 過電流防止対策設計, 誤動作防止設計などの安全設計をお願 いします。本資料に記載された製品が、外国為替及び外国貿易法、米国輸出管理関連法規などの規制に基づき規制されてい る製品または技術に該当する場合には、本製品の輸出に際して、同法に基づく許可が必要となります。 商標および注記 このドキュメントは、断りなく変更される場合があります。本資料には Cypress が開発中の Cypress 製品に関する情報が記 載されている場合があります。Cypress は、それらの製品に対し、予告なしに仕様を変更したり、開発を中止したりする権 利を有します。このドキュメントに含まれる情報は、現状のまま、保証なしに提供されるものであり、その正確性, 完全性, 実施可能性および特定の目的に対する適合性やその市場性および他者の権利を侵害しない事を保証するものでなく、また、 明示, 黙示または法定されているあらゆる保証をするものでもありません。Cypress は、このドキュメントに含まれる情報を 使用することにより発生したいかなる損害に対しても責任を一切負いません。 Copyright © 2015 Cypress Semiconductor Corp. All rights reserved. 商標:Cypress, Cypress ロゴ,Spansion®, Spansion ロゴ (図形マーク), MirrorBit®, MirrorBit® Eclipse™, ORNAND™ , Easy DesignSim™, Traveo™及びこれらの組合せは、米国・日本ほか諸外国における Cypress Semiconductor Corp.の商標です。第三 者の社名・製品名等の記載はここでは情報提供を目的として表記したものであり、各権利者の商標もしくは登録商標となっ ている場合があります。 July 31, 2015, S6J3110_AN708-00014-2v0-J CONFIDENTIAL 25 V1.1