HAL を使用して SPI+DMA 経由でマスターからスレーブに 10 バイトを転送しています。その時点で受信者が何バイトあるかを確認するにはどうすればよいですか。10 バイトすべてが受信されていない場合は、プロセスを再度停止します。マスターは 10 バイトを送信した後、スレーブから応答を取得する必要がありますが、スレーブが完全なバイトを受信していない場合は待機し、システムは無期限になります.......
何か案が??
「HAL を使用した SPI+DMA を介して、マスターからスレーブに 10 バイトを転送しています。」DMA を使用するため、転送サイズを DMA レシーバー API に設定し、DMA 割り込みを有効にするだけです。DMA が 10 バイトを受信すると、送信側が 10 バイト未満を転送する場合を除いて、DMA 受信側完了割り込みが到着します。
「10バイトを送信した後、マスターはスレーブから応答を取得する必要がありますが、スレーブが完全なバイトを受信していない場合、待機し、システムは無期限になります....」スレーブでタイムアウトメカニズムを使用することにより、この問題を解決できます。側。