こんにちは。
RX65NのターゲットボードでSPI通信を利用して16ビットのデータを受信したいのですがうまくいがず、見当もつかない状態です。
CSがLowになったら受信開始し、クロックを生成するようにしたいです。
Maine関数に
uint8_t tx_data =0xFF;
uint8_t rx_data;
R_Config_RSPI2_Create();
R_Config_RSPI2_Start();
R_Config_RSPI2_Send_Receive(tx_data, 1 ,rx_data);
と書いて動かない状態です。
どなたかアドバイスお願いいたします。
R_Config_RSPI2_Send_Receive関数の引数はポインタですよ。R_Config_RSPI2_Send_Receive(&tx_data, 1 ,&rx_data);としなければなりません。
Yamamoto様
コメントありがとうございます!
ご指摘の箇所と送受信のデータを8ビットにしてしまっていたので、
uint16_t tx_data =0xFFFF;
uint16_t rx_data;
としたところ、エラーはなくなりました。
しかし、変わらず受信できない状態です。
オシロで見てみるとどうもSSLC0端子が開始時にLowになっていないみたいでした。
SSLC0端子をLow出力するレジスタ設定がわからず…どのようにしたらいいでしょうか?
そもそもこのマイコンはSPIの通信マスタですか?それともスレーブですか?コンポーネント設定のスクリーンショットからするとスレーブモードのように見えます。でもチップセレクトを設定したいということはマスタとして使いたいということとなりますね。マスタとして使うならコンポーネント追加時にマスタを選択してやる必要がありますよ。
大変ありがとうございます!
ご指摘の通りスレーブモードにしていたことが要因でした。
マスタ・スレーブの理解が不足しておりました。勉強になります。
マスタモードで設定しなおしたことで波形が無事出力されるようになりました。
個人的な意見ですが、スマートコンフィギュレーたのコンポーネント生成でSPIがマスタ・スレーブ共通だとちょっと分かりずらいと思います。I2Cはコンポーネントレベルでマスタとスレーブが分けてあるのに。癖があるツールだなって個人的な感想。