SmartConfigurator SCI(SCIF)クロック同期式モード(1.12.0) モジュールのSCMRの初期値について

RX66Tで開発中に気が付いたのですが

SmartConfigurator SCI(SCIF)クロック同期式モード(1.12.0) モジュールで添付した設定の場合

SCI11.SCMR.BYTE = _00_SCI_SERIAL_MODE | _00_SCI_DATA_INVERT_NONE | _08_SCI_DATA_MSB_FIRST | _62_SCI_SCMR_DEFAULT;

となりの初期値は0x6Dとなるのですが、この値だとデータビット長は9ビットの設定となっています

(設定画面上ではデータビット長8ビット固定、RX66Tの仕様上でも8ビット固定)

FIFOでアクセスする場合はそれでもデータビット長8ビットとして動作する様ですが

DMACを使ってアクセスすると動作がおかしくなるようです

修正自体はR_Config_SCI11_Create_UserInit()でSCMRレジスタを再設定だと思うのですが

この認識であっているのか教えていただけないでしょうか?

  • iwayoshiさん、こんにちは。NoMaYと申します。

    まずハードウェアマニュアルと#defineを確認してみました。iwayoshiさんも書かれている通りハードウェアマニュアルによると、調歩同期式モード以外ではビット長の設定は無視されて8ビット固定になることになっているのですが、実際には、DMA使用時、何か影響がある、ということなのですね?

    以下の記述相当に変更したら、DMA使用時、動作しなかったのが動作するようになった、ということで良いでしょうか?

    SCI11.SCMR.BYTE = _00_SCI_SERIAL_MODE | _00_SCI_DATA_INVERT_NONE | _10_SCI_DATA_LENGTH_8_OR_7 | _08_SCI_DATA_MSB_FIRST | _62_SCI_SCMR_DEFAULT;

     
    以下、ハードウェアマニュアルとCS+での#defineの表示の画面コピーです。




    [追記]


     

  • NoMaYさん、おはようございます

    回答ありがとうございます

    認識があっているようで安心しました

    そんな感じであっていると思います(私の場合、該当レジスタに0xFAをセットして動くようになりました)

    あと、もうひとつ気が付いたのですが

    RX66T側の仕様だと思うのですが

    FIFOで送受信したあと、FIFOに受信データ数が0の状態でもSSRFIFOのRDFが1のままになり、

    その状態でDMACでアクセスすると余計なデータが最初に1バイト発生する様です

    とりあえずFIFO送受信後RDFフラグをクリアする様にしたら意図通り動作しました

    返信ありがとうございました