ホーム フォーラム Texas Instruments マイコン C2000 システムクロックについて

このトピックには6件の返信が含まれ、2人の参加者がいます。5 年、 11 ヶ月前 doublesh6198 さんが最後の更新を行いました。

7件の投稿を表示中 - 1 - 7件目 (全7件中)
  • 投稿者
    投稿
  • #3822 返信

    doublesh6198
    参加者

    システムクロックについて

    デバイス型番:TMS320F28377S

    システムクロックについて質問させて頂きます。

    クロック入力として水晶発振子を検討しております。
    データシートでは入力範囲が10MHz~20MHzとなっておりますが、
    システムクロックが200MHzとなるのは水晶発振子の周波数が
    20MHzの場合でしょうか?

    また、システムクロックの任意の倍率に設定可能でしょうか?
    可能であれば、その設定方法を御教示お願い致します。

    #3826 返信
    Yojiro
    Yojiro
    従業員

    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が生成されます。

    #3829 返信

    doublesh6198
    参加者

    御回答ありがとうございます。
    テクニカルマニュアルと合わせて確認させて頂きました。

    上記の設定例は
    10MHzの水晶振動子を用いて
    システムPLL出力として400MHzのクロックを生成した例で
    宜しいでしょうか?
    この後、2分周してシステムクロックとして200MHzとしている
    との理解で宜しいでしょうか?

    また、imult・fmult・PLLSYSCLKDIVの設定値の範囲の制限は
    ございませんでしょうか?
    生成される各クロックが許容値範囲内に収まっていれば、
    良いと考えたら宜しいのでしょうか?

    #3831 返信
    Yojiro
    Yojiro
    従業員

    上記の設定例は
    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)まで設定可能

    生成される各クロックが許容値範囲内に収まっていれば、
    良いと考えたら宜しいのでしょうか?

    はい、ご認識のとおりです。

     

    #3833 返信

    doublesh6198
    参加者

    御回答ありがとうございます。
    システムクロックの生成について理解できました。

    最後に1点だけ確認しておきたいのですが、
    imultを誤ってPLL出力最大周波数400MHzを超える
    設定値にしてしまった場合、
    PLL出力としては400MHzに留まるのでしょうか?

    #3834 返信
    Yojiro
    Yojiro
    従業員

    最大周波数400MHzを超える設定をされた場合は、その設定に従った逓倍を実施します。
    PLLで400MHz以内に収めるという処理はございません。

    PLLがロックしない(initSysPllで無限ループ)、システムクロックが規定(最大200MHz)外となりCPUが誤動作するなど不正動作の原因となりますので、PLL出力周波数には400MHz以内の設定をお願いいたします。

    #3835 返信

    doublesh6198
    参加者

    御回答ありがとうございます。
    プログラミング時に注意して設定する様に致します。

7件の投稿を表示中 - 1 - 7件目 (全7件中)