私は、lpspi2 (マスター) + flexio_spi_0 (スレーブ) を使用して、MBDT の例 s32k3xx_spi_async_interr_s32ct を s32k396_bga_dc1 + MB で動作させようとしていますが、非常に奇妙な結果が得られます。
lpspi2 は外部バッファを使用した非同期モードに設定されています。DMA がありません。
flexio_spi_0 は、DMA を使用した非同期モードでの IB 使用用に構成されています。
S32 DS の例 Spi_Transfer_S32K396 と組み合わせて、デフォルトの K344 プロファイルの SPI 構成を模倣しようとしています。
lpspi2は正常に動作します。sout を sin にループすると、予想どおりまったく同じ値がループバックされます。
しかし、スレーブ モードの flexio_spi_0 は非常に不安定に動作し、ランダムにのみ更新されます。入力と出力の両方の動作が異常です。更新の間、突然更新されるまで同じ値を繰り返し続けます。そして、時々はうまく動作することもあります。動作に一貫したパターンが見当たらず、この種の動作の原因となるアイデアが思い浮かびません。
LPSPI2 のピン配置を修正し、バッファ サイズを一致するように調整すると、S32DS の例 Spi_Transfer_S32K396 でも同じ構成が正常に動作します。
I/O 完了時のコールバックは、どちらでも定期的に呼び出されます。しかし、flexio_spi_0 との間のデータは、1 バイトのみを定期的に転送して実行すると、正常に動作しません。
使用している mex ファイルを添付しました。
ボードの配線は
| チャネル | CLK | DI | do | CS |
| LPSPI2 | P23-15 | P23-13 | P27-8 | P23-9 |
| フレキシオ_SPI_0 | P13-7 | P18-12 | P10-8 | P17-4 |
P23-15 <-> P13-7
P23-13 <-> P10-8
P27-8 <-> P18-12
P23-9 <-> P17-4
モデルの優先順位を調整して、スレーブ転送がマスター転送の前にトリガーされるようにすると、動作は多少改善されますが、信頼性は低くなります。
最終目標は、クロックされたシリアル デバイスから測定値を収集する、flexio_spi 上で自動的に定期的に繰り返されるマスター トランザクションを実行することです。各転送は 13 ビット未満なので、flexio ハードウェア モジュールによって提供されるもの以外のバッファーはまったく必要ありません。しかし、最初の目標は、データの流れを理解し、確実にすることです。