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回でよいのだろうと考えました。

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

 

  • わわい様
    お世話になっております。ご回答ありがとうございます。

    SPI通信の前処理(割り込み無し)を作成してみました。
    コードは次の通りです。
    これで試したところ、RSPCKAは出てきました。
    しかし、肝心のデータ(MOSI)は出てきません。

    void Y_RSPI0_Start(void)
    {
    // ポーリング用のSPI通信前処理( 割り込み無し )

    volatile uint8_t dummy;

    /* Clear error sources */
    dummy = RSPI0.SPSR.BYTE; // 読み込んでから書くための処理
    RSPI0.SPSR.BYTE = 0xA0U;

    /* Disable idle interrupt */
    RSPI0.SPCR2.BIT.SPIIE = 0U;

    /* SPEビットの許可 */
    RSPI0.SPCR.BIT.SPE = 1;
    }

    データ送信のコードは次の通りです。

    //
    // FRAM WRENコマンドの送信
    //

    Y_RSPI0_Start();

    PORTC.PODR.BIT.B4 = 0; // チップセレクト -> FRAM
    while(RSPI0.SPSR.BIT.SPTEF == 0);
    RSPI0.SPDR.WORD.H = 0x0600; // データの送信

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

    Y_RSPI0_Stop(); // SPIの終了処理

     

    ロジアナの画像:MOSIの信号が出ていません。

  • SA様、わわい様、Higetaka様 および本スレッドをご覧になられた皆様

    お世話になっております。
    お蔭様で、データが送信できない問題は解決いたしました。
    ありがとうございました。
  • パールマン様

    わたと申します。

    現在RX111で本件と同様な問題がでておりまして、
    原因がつかめていない状態です。

    もしも差支えなければ、
    どのような対処で問題が解決したのか内容を記載していただけませんでしょうか。
    よろしくお願いいたします。