CS+ For CC にて、PDG2を使った、SCIでの簡易SPIモードのスレーブの仕方

CS+ For CC にて、PDG2を使った、

SCIでの簡易SPIモードのスレーブの仕方を教えて下さい。

CPUはRX210です。

 

R_PG_SCI_Set_C5、R_PG_SCI_SPIMode_Transfer_C5にて、

受信バイト数をあらかじめ指定したバイト数での受信は出来たのですが、

マスター側が可変長でデータを送ってくる場合に、

SSの立ち上がりで受信完了の割込みが入るような、動作にするにはどうすればよいでしょうか?

 

  • > SSの立ち上がりで受信完了の割込みが入るような、動作にするにはどうすればよいでしょうか?

    なんらかのプロトコルを設けて通信を行っているのであれば受信した内容を解釈すれば可変長データの最後の判定もソフトでできると思いますが、SSの状態を監視されたいのであればSSの出力をIRQnに接続すれば良いのでは

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

    ドキュメントを確認してみましたが、R_SCI_XXXX()系の関数だけでは実現は不可能そうですね。

    前の人のアドバイスに追加なのですが、R_SCI_SPI_Transfer()を割り込みモード(DMA/DTCも可と思われますがPollingモードは避けた方が良さそうな予感がします(PDG2/source/RX/RX210/SCI/下のソースを見ないと正確には言えませんが))にて想定される最大受信長で呼び出しておいて、IRQn割り込み発生後にR_SCI_GetStatus()で受信済バイト長を取得してからR_SCI_Controle()で送受信をSTOPさせるようにしてみてはどうでしょうか?(ただ、試した訳ではありませんので、期待通りには動作しないかも知れませんが、その場合は、ごめんなさい。)

    あと、RX210のハードウェアマニュアルを見てみると、SSとIRQが同じ端子に割り当てられているものもありますね。そのような端子でRX210のマルチファンクションピンコントローラをうまく設定してやると、マイコン外部でSSとIRQを接続しなくても上に書いたようなことが実装出来るかもしれません。(これは以前にRX65Nでやったことがありますが、ただ、PDG2の関数だけで実現出来るか分からないです。以前にやった時は、RXスマートコンフィグレータ上でエラーになってしまっているのを、無理矢理コード生成させ、手書きしたコードを追加して、実現しました。)

    以下、PDG2のRX210のRPDLのドキュメントの画面コピーです。([追記]すみません、PDG2でコード生成させると、これらの関数の1階層上に皮の関数が被りますね。たぶん、対応は付くだろうと思いますが、対応が付かなければその旨仰って頂ければと思います。)

    www.renesas.com/jp/ja/search/keyword-search.html#q=r20ut0708
    RX210 Group Renesas Peripheral Driver Library User's Manual
    Aug.01.14 Rev.2.11 5.57 Mbytes R20UT0708EE0211 開発環境
    r20ut0708ee0211_rpdl_rx210.pdf

    R_SCI_SPI_Transfer()


    R_SCI_GetStatus()


    R_SCI_Controle()

  • コメントありがとうございます。

    今回、アナライザ的な使い方をしたくて、どんな内容のデータがくるのかわからないのです。
    やはり単純にSSをさらに外部割込みIRQに接続してやるしかなさそうですね。

    SSとIRQ共用ピンについては時間があればやってみます。
    ご教授ありがとうございました。