- NXP MCU S32K344 LPSPIモジュール(コントローラ)とHolt HI-35930(ペリフェラル)間の通信に問題が発生しています。
このコードは、それぞれ8ビットのワードである2つのフレームを書き込みます。LPSPI経由でARINC通信デバイスHI-35930へ送信する。設定がすべて正しいことを確認しました。cpol = 0、cpha = 0、LSBF = MSB、BYSW=no、RXMSK、TXMSK =0、TCR[FRMSZ]=7。
このコードは、TRC[CONT] および TRC[CONTC] ビットを使用して PCS を制御します。PCSは2フレームのシーケンス全体にわたって主張されたままです(図を参照)。時計も同様に、2つのフレームにわたって脈動する。SOUT信号には期待されるデータが含まれており、フレーム1はオペコード0x80、フレーム2はダミーデータ0x00です。
問題はSINにある。データがありません。(オペコード0x80はレジスタを読み取るためのもので、少なくとも1ビットがハイになっていることを期待していました。)
RXCOUNTは各フレームで増加し、最大で2になります。
-同じ設定を使用して、同じオペコードとデータを1つの16ビットフレームに連結し、フレームが1つしかないためTRC[CONT]とTRC[CONTC]を0に設定します。TRC[FRMSZ]=15。送信は正常に機能し、SINは実際のデータを返します。
何が問題だと思いますか?
黄色 - PCS信号
ピンク - クロック信号
ブルー - MCUにとって罪
グリーン - MCUのSOUT
MOSIとMISOのデータは空です。正しいSPIバスのハードウェア回路図設計はありますか?
こんにちは、 @ekmas-19 さん。
あなたは、送信されたデータは2バイト(0x80と0x00)であると説明しました。しかし、オシロスコープには、8ビットのフレームが2つではなく、わずかな間隔で区切られた32ビットのワードが2つはっきりと表示されている。これを詳しく説明してもらえますか?
フレーム間の間隔については、これは想定される動作です。CONT = 1 は、フレーム間で CS/PCS をアサートするだけであり、SCK には影響しません。クロックはCONT = 0の場合とまったく同じように動作します。
よろしくお願いいたします。
ダニエル