ホーム › フォーラム › Texas Instruments › マイコン › C2000 › F2837xD SPI通信について このトピックには1件の返信が含まれ、2人の参加者がいます。4 年、 7 ヶ月前に Yojiro さんが最後の更新を行いました。 2件の投稿を表示中 - 1 - 2件目 (全2件中) 投稿者 投稿 2020年3月30日 7:43 PM #10552 返信 ttkkttkk参加者 F2837xD SPI通信について デバイス型番:F2837xD 度々お世話になっております。 SPI通信についての質問です FPGA側がマスタ、DSP側がスレーブで DSP側が受信割込み完了後、受信データを解析し 送信処理を行うようなプログラムを製作しております 初期設定にてSPICCRのSPILBKビットをゼロ(ループバック禁止)にしているにも関わらず、 受信波形をそのまま送信している現象が何回か発生しています。 この現象について何か考えられる原因はございませんでしょうか? 2020年3月31日 10:05 AM #10555 返信 Yojiro従業員 ttkkttkkさん お問い合わせありがとうございます。 ご指摘の動作(受信波形をそのまま送信している現象)につきましては、SPI通信の仕様通りの動作と考えます。 SPIのデータの流れですが、Technical Reference Manual (SPRUHM8)の”Figure 18-4″および”Figure 18-6″、「18.3.3 Slave Mode」をご確認ください。 まず、スレーブモードにおけるSPIの送信データですが、Shift Register(SPIDAT)に格納されているデータがSPICLKに合わせてSPISOMIへシフトアウトします。SPIDATへは、SPISIMOからSPICLKに合わせてシフトインされます。 CPUからSPIDATまたはSPITXBUFへの書き込みを行わない場合は、SPIDATは常にSPISIMOの入力を転送いたします。SPIDATまたはSPITXBUFへ書き込みがありますと、SPISIMOからシフトインされたデータは、書き込まれたデータで上書きされます。 つまり、スレーブ側で送信するデータがない場合、明示的にSPIDATまたはSPITXBUFへダミーデータの書き込みを行わないと、受信波形をそのままSOMIへ出力いたします。 SPI通信は、デイジーチェーンを想定して設計されておりますので、このようなデータの流れになります。 SPICCRのSPILBKビットにつきましては、セルフテストのための設定で、このループバックとはSPISOMIとSPISIMOを折り返すことで、送信したデータをそのまま受信させ、SPI通信機能に問題がないことを確認する設定になります。通常時はループバックはDisableでご利用いただきます。 ご確認のほど、よろしくお願いいたします。 ===== この回答でご解決いただけましたら、右上の「最もいい回答」ボタンのクリックをお願いいたします。 投稿者 投稿 2件の投稿を表示中 - 1 - 2件目 (全2件中)