RX63N RSPIの転送ができない(PDG2.09.000)

こんにちは。

PDG2.09.000を使用し、
RSPI0(マスタ)とRSPI1(スレーブ)のSPI(4線式)通信をしようとしています。
「RX63N/RX631グループ Peripheral Driver Generator リファレンスマニュアル」を
参照しながらプログラムを作成したのですが、転送完了の通知関数へ飛んできません。
(エラー通知関数にも飛んできていません)
何が原因か悩んでいます。
御教授いただきたく、宜しくお願い致します。


シンプルにRSPI0の転送のみを実行しようとしましたが、同様の結果でした。

以下、PDGの設定とプログラムになります。

【PDGの設定】
・RSPI0をSPI動作マスタモードで設定
・転送方法に"転送完了、エラー検出を関数呼び出しで通知する"を設定
・通知関数名にSpi0IntFuncを指定
・コマンド数:1、フレーム数:4
・コマンド0のビット長:8
・PA5をRSPCKA端子
・PA6をMOSIA端子
・PA7をMISOA端子
・PC4をSSLA0端子

 

#define BUFF_SIZE       (4)

const uint32_t send_buf[BUFF_SIZE] =
{
    0x11, 0x22, 0x33, 0x44
};  /* send data from RSPI0 to RSPI1 */

uint32_t dummy_rcv[BUFF_SIZE];

 

void main(void)
{
    R_PG_Clock_Set();                   /* Setting Clock */
    R_PG_RSPI_Set_C0();                 /* Setting RSPI0 */
    R_PG_RSPI_SetCommand_C0();          /* Setting command */

    R_PG_RSPI_StartTransfer_C0((uint32_t *)send_buf, dummy_rcv, 1);

    while(1);
}


void Spi0IntFunc(void)
{
  処理
}

 


(参考)

試しに転送方法に"転送完了まで待つ"を指定した場合、
エミュレータで確認すると、R_PG_RSPI_TransferAllData_C0関数内で
IR40(SPTI0)のフラグ確認でずっとループしているように見えました。
"転送完了まで待つ"の場合、以下を実行し、コマンドシーケンス完了までウェイトするようですが、
初めの送信割り込み要求が発生していないのでしょうか?

R_PG_RSPI_TransferAllData_C0((uint32_t *)send_buf, dummy_rcv, 1);

  • まずは、StartTransferの場合ですが、mainを終了しないようにしてみてはいかが。
    無限ループで、GetStatusを呼ぶのはどうでしょう。
    あとはSPIクロックが出ているかモニタしてみるとか。
  • In reply to Higetaka:

    Higetakaさん

    コメントありがとうございます。
    すいません。
    投稿に while(1);を書き忘れていました。
    動作確認しているプログラムには書いています。
    (投稿も修正しておきます)

    試してみましたところ、
    ずっとidle状態であり、SPIクロックも出ていませんでした。
    引き続き調査します。
    また何か気付いた点等ございましたら、
    コメントいただければ幸いです。
  • In reply to triangle:

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

    本件、もう解決されましたでしょうか? 気になったものですから、残念ながらRX63Nでは無いのですが、その弟分であるRX631(がじぇるねのGR-CITRUS)で、少し試してみました。今回、triangleさんが投稿されていたソースを少し改造してマイコンのループバック機能で動かしてみたところ、特に問題無く期待したように実行されてしまいました。PDG2は2.09.000です。以下にプロジェクトのファイル一式のzipファイルや画面コピーを添付しておきます。

    なお、GR-CITRUSはE1エミュレータと繋ぐには難がありますので、RXシリアルデバッガというものでデバッグしました。(というか動いてしまったのでデバッグするまでには至らなかったのですが。) その為、RXシリアルデバッグの為に追加されているソース、RXシリアルデバッグの為に配置を変更/追加したセクション、RXシリアルデバッグの為にPLLクロックへの切り替えを小細工している箇所、 などあります。ただ、そのことにより動いてしまった、ということは無いと思っています。[2017/05/20 14:48修正(以下同様)]

    プロジェクトのファイル一式を固めたzipファイル
    RX631_RSPI_PG_20170520.zip    ← 誤) 発振子周波数 16MHz
    RX631_RSPI_PG_20170520_2.zip ← 正) 発振子周波数 12MHz
    RX631_RSPI_PG_20170524.zip   ⇒ 2017/05/24 私の次の投稿で書いた“外部ソース(ビルド対象外)”というカテゴリを(カテゴリだけを)プロジェクトに追加

    [画面コピー色々]

    ソース(zipファイルに含まれています)


    main()の先頭でブレークした状態(rcv_buf_d[]とrcv_buf_r[]は0になっている)


    main()の最後のwhile(1)でブレークした状態(rcv_buf_d[]とrcv_buf_r[]にループバック値が入っている)


    PDG2の設定(とりあえずzipファイルにpd2ファイルも含めてあります)





    [追記]

    余談になってしまいますが、PDG2のインストーラはpd2ファイルとPDG2.exeとのファイルの関連付けをしてくれないようです。でも、手動で関連付けておくと幾らかは便利になるような気がします。

  • In reply to NoMaY:

    NoMaYさん

    コメントありがとうございます。
    すみません。
    こちら投稿したつもりだったのですが、
    UPできていなかったようです。

    E1エミュレータをHSBRX63NP(R5F563NFDDFP)ボードに接続したものの、
    デバッグ・ツールが"RXシミュレータ"のままであった、
    という大変お粗末な結果でした。
    お騒がせしまして申し訳ございません。

    デバッグ・ツールを"RX E1(Serial)"に設定しましたところ、
    意図した動作を確認できました。
  • お騒がせしました。
    作成したソフト、および説明書は、以下のURLからご覧いただけます。
    参考になればと思います。
     ↓
    japan.renesasrulz.com/.../rx63n-rspi-spi
  • In reply to triangle:

    triangleさん、こんにちは。NoMaYです。

    一件落着、ですね。それで、すみません、私の我侭なのですが、少し余談を追加させて下さい。

    [余談]

    以下のFAQにはPDG2が生成したソースが呼び出しているライブラリ(RPDL)のデバッグ方法について書かれているのですが、ライブラリのソースをCS+に登録する方法としては、このFAQに書かれているようにソースを1つずつCS+に登録する方法の他に、以下の画面コピーのようにフォルダ丸ごとドラッグ&ドロップでCS+に登録する方法もあります。

    FAQ 1010977 : Peripheral Driver Generator V.2が生成する関数が呼び出している、ライブラリ(Renesas Peripheral Driver Generator Library)の内部処理をCS+またはHigh-performance Embedded Workshop でデバッグすることはできませんか?

    CS+の右ボタンメニューから“外部ソース(ビルド対象外)”という新しいカテゴリを追加する


    Windowsエクスプローラで表示させたライブラリのソースのフォルダ“RX63N”を、先程追加した“外部ソース(ビルド対象外)”へ、ドラッグ&ドロップする





    CS+のプロパティで、先程ドラッグ&ドロップした“RX63N”について、[ビルドの対象とする]を[いいえ]に変更する


    これでデバッグ時にライブラリのソースへステップインしたりすることが出来るようになります


    この後(先でも構いませんが)、先程のFAQに書かれているようにCS+に登録されているバイナリ形式ライブラリファイル名を通常版のライブラリ名からデバッグ版のライブラリ名に変更します。

    なお、必ずしも“外部ソース(ビルド対象外)”という新しいカテゴリを追加する必要はないのですが、こうしておけば他の人にもライブラリのソースはプロジェクトのフォルダの外にあることが分かり易いかもと思い、今回は、こうしてみました。

    [リンク]

    ルネサスFAQ検索: PDG2
    support.renesas.com/hc/ja/search?utf8=%E2%9C%93&commit=%E6%A4%9C%E7%B4%A2&query=PDG2

    ルネサス設計支援情報検索: PDG2
    www.renesas.com/ja-jp/search/keyword-search.html#genre=designsupport&q=PDG2

    Rulz検索: PDG2
    japan.renesasrulz.com/search?group=31&q=PDG2

    [追記]

    私の1つ前の投稿に添付してあったプロジェクトのファイル一式のzipファイルに“外部ソース(ビルド対象外)”というカテゴリを(カテゴリだけを)プロジェクトに追加しました。

  • In reply to NoMaY:

    NoMaYさん

    コメントありがとうございます。
    このような方法もあったのですね。
    勉強になりました。
    次に作成するもので試してみたいと思います。