ホーム フォーラム Texas Instruments マイコン C2000 F2837xD SPI通信について

このトピックには1件の返信が含まれ、2人の参加者がいます。4 年、 7 ヶ月前Yojiro Yojiro さんが最後の更新を行いました。

2件の投稿を表示中 - 1 - 2件目 (全2件中)
  • 投稿者
    投稿
  • #10552 返信

    ttkkttkk
    参加者

    F2837xD SPI通信について

    デバイス型番:F2837xD

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

    SPI通信についての質問です
    FPGA側がマスタ、DSP側がスレーブで
    DSP側が受信割込み完了後、受信データを解析し
    送信処理を行うようなプログラムを製作しております

    初期設定にてSPICCRのSPILBKビットをゼロ(ループバック禁止)にしているにも関わらず、
    受信波形をそのまま送信している現象が何回か発生しています。

    この現象について何か考えられる原因はございませんでしょうか?

    #10555 返信
    Yojiro
    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件中)