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と申します。

    私は マスタモード かつ (FITではなく)コード生成機能 でしか RSPI+DTC/DMA を触ったことがないですが、SPDRレジスタのアクセス幅設定が、RSPI側での設定とDTC/DMA側での設定で、違う設定になっていて誤動作している可能性はないかな?と気になりました。或いは、DTC/DMA側の設定が、32ビット幅でもなく、16ビット幅でもなく、8ビット幅アクセスの設定になっていたり、とかです。

    と、ここまで書いて気になって、FITのRSPIモジュールのドキュメントのR_RSPI_Open()の説明を見るとSPDRレジスタのアクセス幅を設定するパラメータがありませんね。R_RSPI_WriteRead()の説明を見るとspcmd_command_wordのRSPI_SPCMD_BIT_LENGTH_XXから自動設定されるのかな?とも一度は思いましたが、SPDRレジスタのアクセス幅は、もっと根っこの方の設定のような気がして、ドキュメントを検索してみました。

    そうしたら、以下の記載が見付かりました。このアクセス幅が原因だったりしないでしょうか?

    RX ファミリRSPI モジュールFirmware Integration Technology
    www.renesas.com/jp/ja/search/keyword-search.html#genre=document&q=r01an1827
    r01an1827jj0200-rx.pdf
    表 1-1 RSPI API関数一覧

    注1:RSPI制御の高速化のために、SPDRレジスタを32ビットアクセスします。

    画面コピー

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

    私は マスタモード かつ (FITではなく)コード生成機能 でしか RSPI+DTC/DMA を触ったことがないですが、SPDRレジスタのアクセス幅設定が、RSPI側での設定とDTC/DMA側での設定で、違う設定になっていて誤動作している可能性はないかな?と気になりました。或いは、DTC/DMA側の設定が、32ビット幅でもなく、16ビット幅でもなく、8ビット幅アクセスの設定になっていたり、とかです。

    と、ここまで書いて気になって、FITのRSPIモジュールのドキュメントのR_RSPI_Open()の説明を見るとSPDRレジスタのアクセス幅を設定するパラメータがありませんね。R_RSPI_WriteRead()の説明を見るとspcmd_command_wordのRSPI_SPCMD_BIT_LENGTH_XXから自動設定されるのかな?とも一度は思いましたが、SPDRレジスタのアクセス幅は、もっと根っこの方の設定のような気がして、ドキュメントを検索してみました。

    そうしたら、以下の記載が見付かりました。このアクセス幅が原因だったりしないでしょうか?

    RX ファミリRSPI モジュールFirmware Integration Technology
    www.renesas.com/jp/ja/search/keyword-search.html#genre=document&q=r01an1827
    r01an1827jj0200-rx.pdf
    表 1-1 RSPI API関数一覧

    注1:RSPI制御の高速化のために、SPDRレジスタを32ビットアクセスします。

    画面コピー

Children
No Data