FlexIO SPI MASTER チャネルを同期モードで設定しようとしましたが、正しく動作しません。
私はSpi_Transfer_S32K396 (LPSPI マスター + FLEXIO スレーブ) の例から始めました。S32K396_BGA_DC1 の現在のバージョンで動作するようにピン配置をわずかに変更しました (デフォルトの例は動作しません。ピン配置が PHY コネクタと競合しています)。これは機能します。
次に、要件に合わせてワード長を変更し、 sout が sin にループバックされた LPSPI マスターのみを使用しました。それも効きます。
次に、FLEXIO インターフェースをマスターとして再構成し、LPSPI2 で使用されるのと同じ同期 API を使用して呼び出します。何かが行われているように見えますが、受信バッファにはゼロのみが返されます。これは、同期モードで FLEXIO SPI インターフェースを使用しようとしている他のコードでも確認されています。
次に、DMA に関連するすべてを無効にしました。Rm モジュールを削除し、Mcl で DMA サポートを無効にしました。Spi で DMA サポートを無効にします。しかし、その後転送がハングし、受信シフト レジスタから準備完了の通知がまったく受信されなくなります。
IsShifterFlagRaised = Flexio_Mcl_Ip_GetShifterStatus(Base, RxShifterIndex);常に false を返します (RTD FlexIO SPI ドライバ内)。
FLEXIO SPI がこのようにハングする原因は何でしょうか?私の理解では、受信シフト レジスタは同じクロックでクロックされるため、問題なく動作するはずです。
flexio レジスターを見ると、非常に混乱します。CSタイマー(1)の構成は非常に奇妙に見えます。たぶんこれが問題です。さらに調査します。
注: 最終目標は、SPI よりも少し複雑な別のプロトコル用のカスタム FlexIO ドライバーを作成することです。SPI 実装を足がかりとして使用して、FlexIO をより深く理解します。
CSタイマーの設定は正しいようです。タイマーの関係について私のほうで誤解していました。SOそれは問題ではありません。
新しい.mexでやり直しましたファイルであり、それはある程度機能します。
問題は2つありました。SPI の例では、DMA が無効になっている場合、Mcl の初期化に失敗し、PRE/POST ビルド構成タイプに関して Mcl 構成に何らかの問題が発生していました。
現在唯一の問題は、受信データの未使用ビットにゴミが含まれていることです。少し予想外ですが、ブロックするものではありません。