お世話になっております。
RX113のRSPIで、富士通のFRAMをスレーブデバイスとして接続し、通信を行っております。
無事にFRAMにステータスリードのコマンドを送信して、下図の通りバス上では正しいレスポンス(0x10)が返ってきました。
しかし、読み取ったSPDRの値はなぜか(0xFF)という値でした。
送受信のソースは次の通りです。
//// FRAM ステータスレジスタ 読み込み// Y_RSPI0_Start(); PORTC.PODR.BIT.B4 = 0; // チップセレクト -> FRAM
while(RSPI0.SPSR.BIT.SPTEF == 0); // RDSR コマンド送信 ( 送信バイト数:1、データ:0x05 )
RSPI0.SPDR.WORD.H = 0x0005; // データの送信 while(RSPI0.SPSR.BIT.IDLNF == 1); // 送信完了待ち RSPI0.SPDR.WORD.H = 0x0000; // レスポンス受信用のクロック送出 while(RSPI0.SPSR.BIT.IDLNF == 1); // 送信完了待ち
while(RSPI0.SPSR.BIT.SPRF == 0); // 受信バッファフルの確認 FRAM_READ_STR = RSPI0.SPDR.WORD.H;
PORTC.PODR.BIT.B4 = 1; // チップセレクト 解除 Y_RSPI0_Stop();
バス上の信号(0x10)が何故0xFFになるのか、何処に原因があるのかわかりません。
リードするタイミングでしょうか。お手数をおかけしますが、ご教示願います。
※ コードの作成では、過去スレッドのつくしさんの回答を参考にさせていただきました。