ホーム › フォーラム › Texas Instruments › マイコン › C2000 › システムクロックについて
このトピックには6件の返信が含まれ、2人の参加者がいます。6 年、 1 ヶ月前に doublesh6198 さんが最後の更新を行いました。
-
投稿者投稿
-
システムクロックについて
デバイス型番:TMS320F28377Sシステムクロックについて質問させて頂きます。
クロック入力として水晶発振子を検討しております。
データシートでは入力範囲が10MHz~20MHzとなっておりますが、
システムクロックが200MHzとなるのは水晶発振子の周波数が
20MHzの場合でしょうか?また、システムクロックの任意の倍率に設定可能でしょうか?
可能であれば、その設定方法を御教示お願い致します。C2000シリーズには、任意の倍率に設定可能なPLLが搭載されており、10MHzのクロック入力でも200MHzを生成可能です。
設定方法につきましては、Technical Reference Manual(SPRUHX5)の
2.7 Clocking
2.7.6 Clock Source and PLL Setup
に詳しく記載されておりますので、ご確認ください。C2000Wareのサンプルコードでは、PLL設定の関数が用意されております。
C2000Ware_1_00_05_00\device_support\f2837xs\common\source\F2837xS_SysCtrl.c
void InitSysPll(Uint16 clock_source, Uint16 imult, Uint16 fmult, Uint16 divsel)
この関数を使用する場合は、
clock_source = XTAL_OSC
imult = 40(0x28: IMULT_40)
fmult = 0(0x00: FMULT_0)
を設定いただくと、システムクロックに200MHzが生成されます。御回答ありがとうございます。
テクニカルマニュアルと合わせて確認させて頂きました。上記の設定例は
10MHzの水晶振動子を用いて
システムPLL出力として400MHzのクロックを生成した例で
宜しいでしょうか?
この後、2分周してシステムクロックとして200MHzとしている
との理解で宜しいでしょうか?また、imult・fmult・PLLSYSCLKDIVの設定値の範囲の制限は
ございませんでしょうか?
生成される各クロックが許容値範囲内に収まっていれば、
良いと考えたら宜しいのでしょうか?上記の設定例は
10MHzの水晶振動子を用いて
システムPLL出力として400MHzのクロックを生成した例で
宜しいでしょうか?
この後、2分周してシステムクロックとして200MHzとしている
との理解で宜しいでしょうか?ご認識の通り、システムPLLで10MHzを40倍して400MHzを生成し、2分周することで200MHzのシステムクロックとしています。
また、imult・fmult・PLLSYSCLKDIVの設定値の範囲の制限は
ございませんでしょうか?システムPLLの出力周波数には最大値が定義されています。値につきましては、データシート(JAJSEZ6F)の5.9.3.2.2 Internal Clock Frequenciesに記載されておりますのでご確認ください。
TMS320F28377Sでは、PLL出力周波数(f(PLLRAWCLK))は、最大400MHzとなります。
imult/fmult/PLLSYSCLKDIVの値ですが、そのままレジスタに反映される値となっており、それぞれTRMに定義されております。
imult : 2.15.10.6 SYSPLLMULT Register IMULTビット(0 – 127)
fmult : 2.15.10.6 SYSPLLMULT Register FMULTビット
00: Fractional Multiplier = 0
01: Fractional Multiplier = 0.25
10: Fractional Multiplier = 0.5
11: Fractional Multiplier = 0.75
PLLSYSCLKDIV:2.15.10.11 SYSCLKDIVSEL Register PLLSYSCLKDIVビット
1分周(設定値0)から126分周(設定値0x3F)まで設定可能生成される各クロックが許容値範囲内に収まっていれば、
良いと考えたら宜しいのでしょうか?はい、ご認識のとおりです。
御回答ありがとうございます。
システムクロックの生成について理解できました。最後に1点だけ確認しておきたいのですが、
imultを誤ってPLL出力最大周波数400MHzを超える
設定値にしてしまった場合、
PLL出力としては400MHzに留まるのでしょうか?最大周波数400MHzを超える設定をされた場合は、その設定に従った逓倍を実施します。
PLLで400MHz以内に収めるという処理はございません。PLLがロックしない(initSysPllで無限ループ)、システムクロックが規定(最大200MHz)外となりCPUが誤動作するなど不正動作の原因となりますので、PLL出力周波数には400MHz以内の設定をお願いいたします。
御回答ありがとうございます。
プログラミング時に注意して設定する様に致します。 -
投稿者投稿