こんにちは。
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);
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 ← 誤) 発振子周波数 16MHzRX631_RSPI_PG_20170520_2.zip ← 正) 発振子周波数 12MHzRX631_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とのファイルの関連付けをしてくれないようです。でも、手動で関連付けておくと幾らかは便利になるような気がします。