S6J3110 / S6J3120 Series クロックシステムの設定方法

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