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フラグをクリアする様にしたら意図通り動作しました
返信ありがとうございました