RX651 で RSPI + DTC による全二重クロック同期式通信

お世話になっております。

 

マイコン:RX651

環境:CS+

 

FIT モジュールを用いて、 RSPI + DTC で、次のような通信を実装しようとしています。

・ 全二重、クロック同期式、スレーブ動作

・ 16bit ずつ

 

以下は上手くできました。

・ SCI + DTC (ただし SCI なので 8bit ずつ)

・ RSPI (16bit ずつソフトウェア転送)

しかし、 RSPI と DTC (or DMAC) を組み合わせた場合、 DTC が起動せず、直ちにオーバランエラーが発生します。

(コードは、 FIT の RSPI, DTC アプリケーションノートを参考にしました。)

RSPI のアプリケーションノートに依れば可能らしいのですが、 DTC (or DMAC) と RSPI を組み合わせたサンプルコードは見付けられませんでした。

 

お知恵を拝借できれば幸いです。

Parents
  • ji1101さん、こんにちは。NoMaYです。

    その後、どうでしょうか?ルネサスさんのサポートからサンプルコードは届いたでしょうか?実は、別スレッド『DTCを用いたRSPI通信時の割り込みについて』に(FITではなく)コード生成機能でマスタモード+ループバックモード+RSPI+送信DTC or 受信DTCを試したプログラムを投稿したことがあるのですが、試しに、そのプログラムから送受信ともDTCのプログラムを作成してみました。スレーブモードではなくマスタモードであるという点はありますが、マイコンとしては(つまりFITではないが少なくともコード生成機能では)期待した通りに動作しました。

    以下の画面コピーの通り、送受信とも、DTCEは1→0になっていますし、転送カウンタも3→0になっており、かつ、ループバックで送受信したデータも期待通りになっていました。参考程度ですが(FITではなくコード生成機能なので参考にもならないかも、とも思いますが)、以下にプロジェクトのファイル一式 (RX65N TBボード、CS+プロジェクト(rcpeファイル同梱))を添付しました。

    issue_20190725.zip

  • NoMaY さん、お世話になっております。
    長らく気にかけて頂き、恐縮です。

    本日午後、ルネサスサポートさんからの返信はございましたが、サンプルコードは用意がありません、とのことでした。
    未検証のコード改造案を提示されましたが、既に検証して失敗していたものと等価で、あまり参考にはなりませんでした。

    サポートさんからの返信を待っている間に DTC FIT モジュールではなく、 DMAC FIT モジュールを利用したところ、アッサリと送受信できてしまいまして、本来の目的自体は達せられた状況です。
    つまり、 RSPI から(送受信とも)転送の起動要因は出ているわけで、なぜ DTC だと受信側の転送が為されないのかはよく分かりませんでした。

    モヤモヤとした感じが残ってはおりますけれども、 SPDR のアクセス幅不整合を教えて頂き、 DMAC の利用ではありますが、目的を達することができました。

    ありがとうございました。
Reply
  • NoMaY さん、お世話になっております。
    長らく気にかけて頂き、恐縮です。

    本日午後、ルネサスサポートさんからの返信はございましたが、サンプルコードは用意がありません、とのことでした。
    未検証のコード改造案を提示されましたが、既に検証して失敗していたものと等価で、あまり参考にはなりませんでした。

    サポートさんからの返信を待っている間に DTC FIT モジュールではなく、 DMAC FIT モジュールを利用したところ、アッサリと送受信できてしまいまして、本来の目的自体は達せられた状況です。
    つまり、 RSPI から(送受信とも)転送の起動要因は出ているわけで、なぜ DTC だと受信側の転送が為されないのかはよく分かりませんでした。

    モヤモヤとした感じが残ってはおりますけれども、 SPDR のアクセス幅不整合を教えて頂き、 DMAC の利用ではありますが、目的を達することができました。

    ありがとうございました。
Children
No Data