RX66TでICLKを160MHzにしたいのですが,スマートコンフィグレータのコード生成で設定は可能なのか

初めまして,ジョンです。

対象:RX66T

目的:ICLK(システムクロック)を160MHzに設定したい(スマートコンフィグレータのコード生成機能を用いて)

※諸事情によりコード生成を用いる必要があります。事情は省略いたします。

方法:MEMWAITレジスタを1にする

問題:MEMWAITレジスタの設定項目が見つからない

質問:スマートコンフィグレータ内でICLKを160Hzに設定する方法

以上,ご教授お願いいたします。

  • ジョンさん、こんにちは。NoMaYと申します。

    以下により自動的に設定されるようです。

    src/smc_gen/r_bsp/mcu/rx66t/mcu_clocks.c

    /***********************************************************************************************************************
    * Function name: clock_source_select
    * Description  : Enables and disables clocks as chosen by the user. This function also implements the delays
    *                needed for the clocks to stabilize.
    * Arguments    : none
    * Return value : none
    ***********************************************************************************************************************/
    static void clock_source_select (void)
    {
        略

        /* RX66T has a MEMWAIT register which controls the cycle waiting for access to code flash memory.
           It is set as zero coming out of reset. We only want to set this if we are > 120 MHz. */
        if (BSP_ICLK_HZ > BSP_MCU_MEMWAIT_FREQ_THRESHOLD)
        {
            /* Set MEMWAIT */
            SYSTEM.MEMWAIT.BYTE = 0x01;

            /* Dummy read and compare. cf."5. I/O Registers", "(2) Notes on writing to I/O registers" in User's manual.
               This is done to ensure that the register has been written before the next register access. The RX has a
               pipeline architecture so the next instruction could be executed before the previous write had finished.
            */
            if(0x01 == SYSTEM.MEMWAIT.BYTE)
            {
                R_BSP_NOP();
            }
        }
    } /* End of function clock_source_select() */

     

  • NoMayさん,こんにちは

    返信ありがとうございます。

    以下により自動的に設定されるようです。

    つまり,スマートコンフィグレータでICLKを160MHzに設定は無理ということでしょうか。

    以上,よろしくお願いいたします。

  • ジョンさん、こんにちは。NoMaYです。

    いえ、可能ですよ、という意味です。RXスマートコンフィグレータのクロック設定画面でICLK=160MHzにすると、BSPモジュールのソースコード側で自動的にMEMWAIT=1に設定されますので、BSPモジュールの設定画面上にMEMWAITの設定項目が無くても、それで良いようになっていますよ、という意味です。

    もしかして、MEMWAIT=1にするとICLK=160MHzでもICLK=80MHzになる、というような誤解をされているのでしょうか?

  • NoMaYさんこんにちは

    返信ありがとうございます。

    可能ということについて,承知いたしました。

    いえ、可能ですよ、という意味です。RXスマートコンフィグレータのクロック設定画面でICLK=160MHzにすると、BSPモジュールのソースコード側で自動的にMEMWAIT=1に設定されますので、BSPモジュールの設定画面上にMEMWAITの設定項目が無くても、それで良いようになっていますよ、という意味です。

    知識が疎くて教えていただきたいのです。

    ICLKを約160MHzに変更したいのですが,ICLKが120MHz以下でしか設定ができなくて困っております。

    現在,メインクロックの外部発信入力を19.6MHzでPLL回路(分周比*1,逓倍比*12)※を介して,

    ICLKを160MHzにしようとしております。※どちらもドロップダウンリストの最大を選んでいます

    この方法では,上手くいかないのですが,どういった方法で160MHzに設定すればよろしいでしょうか

    以上,お手数をおかけしますが,よろしくお願いいたします。

  • ジョンさん、こんにちは。NoMaYです。

    > メインクロックの外部発信入力を19.6MHzでPLL回路(分周比*1,逓倍比*12)※を介して

    この場合、そのような以下の画面コピーの1枚目のような設定をするのでは無くて、2枚目のような設定をするのです。(PLL回路の周波数逓倍率の選択肢とPLL回路の出力周波数範囲の組み合わせの都合によるものです。)

    以下、RXスマートコンフィグレータ v2.13.0での画面コピーとRX66Tのユーザーズマニュアルからの画面コピーです。






     

  • NoMayさん こんにちは

    ご返信ありがとうございます。

    ご丁寧に説明して頂いたお陰で,解決することができました。

    大変ありがとうございました。