SDK パッケージ内の Lpspi_Flexio_Ip_Transfer_S32K312 サンプル プログラムを実行すると、スレーブはマスターからデータを受信できますが、マスターはスレーブからデータを受信できないことがわかります。配線はマスターのCSとCKがスレーブのCSとCKに、SINがSINに、SOUTがSOUTにコネクテッドされています。同時に、作成された送信バッファ内のデータは、10 より大きい場合、デバッグ時に自動的に 6 ずつ増加し、10 は 16 に、20 は 32 になることもわかりました。これら2つの問題をどのように解決すればよいでしょうか?
自分で SPI コードを書くプログラムを作成したとき、2 つのデバイス間の通信を可能にするために、LPSPI0 をマスター、LPSPI1 をスレーブとして設定することを計画しました。同時に、LPSPI0 を SPI 外部デバイス 0 と通信するように設定し、LPSPI1 を SPI 外部デバイス 1 と通信するように設定したいと考えました。パラメータ設定とコードの記述を完了した後、2 つのデバイス間の通信を確立できないことがわかりました。ただし、マスターとスレーブの両方を SPI 外部デバイス 0 と通信するように構成し、それぞれの SIN ピンと SOUT ピンをループバックすると、自分でデータを送受信できるようになります。どうすればいいですか?
こんにちは@xuanming
提供された情報によると、接続が間違っているようです。SIN を SIN に、SOUT を SOUT に接続するとおっしゃっていますが、これは SPI 通信の正しい構成ではありません。正しくは次のようになります。
サンプル コードを使用しているため、正しい接続は description.txt ファイルのセクション 2.1.2 に記載されています。接続が予想される設定と一致していることを確認するために、そのセクションを確認することをお勧めします。
BR、ヴェインB
返信が遅くなり申し訳ございません。ご提案いただいた方法を試してみましたが、問題は解決しません。デバッグモードに入っても、TxSlaveBufferの値はデフォルトで6ずつ増加し、ホストのRxMasterBufferは空のままです。
こんにちは@xuanming
あなたのコメントに少し混乱しました。TxSlaveBuffer の値は、元々定義された値から 6 増加するとおっしゃいました。この動作は、スレーブによって送信されたデータに対応するため、値が明示的に変更された場合にのみ発生します。以前共有されたコードに何か変更を加えたかどうか確認できますか?
さらに、RTD 2.0.0 バージョンはかなり古く、いくつかの問題がある可能性があります。バグ修正や改善が含まれているため、最新のソフトウェア リリースを使用することを強くお勧めします。新しいバージョンを使用してプロジェクトを作成してください。
次のスレッドでは同僚が例を提供しており、RTD には S32K344 に基づくサンプル プロジェクトも含まれており、非常に役立つ可能性があります。