RSPI通信による1バイトデータの送信について

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

RSPI通信のソフトウェアを組んでいたのですが、どうもうまく動かず、根本に立ち返って検証を試みております。

MPUは、RX113

SPIのベースビットレートは、5Mbit/s。

クロック同期式(3線式)としております。

1バイトのコマンドデータを富士通のFRAMに送出するコードを次のように記述して試してみました。

 

※ 上記「1バイトのコマンドデータ」は、FRAMのライトイネーブルコマンドです。

  R_RSPI0_Start();
  PORTC.PODR.BIT.B4 = 0;         // チップセレクト -> FRAM
  while(RSPI0.SPSR.BIT.SPTEF == 0);
  RSPI0.SPDR.WORD.H = 0x0006;     // データの送信
  RSPI0.SPCR.BIT.SPTIE = 0;        // 送信バッファエンプティ割り込み許可ビット -> 0
  RSPI0.SPCR2.BIT.SPIIE = 1;       // RSPIアイドル割り込み許可ビット -> 1
  while(RSPI0.SPSR.BIT.IDLNF == 1);   // 送信完了待ち
  PORTC.PODR.BIT.B4 = 1;         // チップセレクト 解除

  R_RSPI0_Stop();             // SPIの終了処理(割り込み禁止)

おそらく何処かに誤りがあると思うのですが、ロジアナで観測するところ、MOSIの端子からデータが出力されません。

ビットレートを落としても状況は変わりませんでした。

ハードウェアマニュアルを読みますと、「SPDRへ送信データをライト」は、フレーム数分アクセスするようにと書かれていましたが、今回の使い方では転送フレーム数は1フレームなので、書き込みのアクセスは1回でよいのだろうと考えました。

大変お手数をおかけしますが、データが出力されない原因など、ご教示お願いします。

 

Parents
  • こんにちは
    RX113 ハードウェアマニュアル 1137ページに初期設定フローが載っています。
    ここに記載されているレジスタの設定はどうなってますか?
    SPSCR、SPDCR等、動作に必要なレジスタが記載されています。
    これらにレジスタの設定がどうなっているか確認が必要だ思います。
  • お世話になっております。
    フレーム数:SPDCR は、1
    シーケンス長:SPSCR は、1
    となっています。

    現状ではMOSIからの信号どころか、クロックが出ている様子もなく、どうなっているのか皆目判らないという状況です。

    疑っているところは、SPDRレジスタへのアクセスはワードアクセスで、ハードウェアマニュアルに記されている通りに上位側の16ビットにデータをいれているものの、バッファにデータが埋まっていないから送出されていないのではないかというところです。
Reply
  • お世話になっております。
    フレーム数:SPDCR は、1
    シーケンス長:SPSCR は、1
    となっています。

    現状ではMOSIからの信号どころか、クロックが出ている様子もなく、どうなっているのか皆目判らないという状況です。

    疑っているところは、SPDRレジスタへのアクセスはワードアクセスで、ハードウェアマニュアルに記されている通りに上位側の16ビットにデータをいれているものの、バッファにデータが埋まっていないから送出されていないのではないかというところです。
Children
No Data