2016-04-15 20 views
-1

HALを使用してSPI + DMA経由でマスタからスレーブに10バイトを転送します。受信機がその瞬間にどれくらいのバイト数を持っているかを確認するにはどうすればよいのですか?そして、10バイトすべてが受信されていなければ、プロセスは再び停止します。 10バイトを送信した後のマスターはスレーブから回答を得なければならないが、スレーブがフルバイトを受信して​​いないとシステムが無限に進むと.......HAL SPI DMA動作中に受信したバイト数を確認します。

+0

SPIプロトコルでは、マスターは同時にパケットを送信しながら応答を受信します。また、SPIで1バイトを受信する場合は、1バイトを送信する必要があります。コマンドの送信が完了したがスレーブがより長い要求を送信する必要がある場合は、ダミーバイトを送信する必要があります。 – imbearr

答えて

0

"HALを使用してSPI + DMAでマスタからスレーブに10バイトを転送しています。" DMAを使用するので、転送サイズをDMA受信APIに設定し、DMA割り込みを有効にするだけです。 DMAが10バイトを受信すると、送信側の転送が10バイト未満であることを除いて、DMA受信側の完全な相互接続が到着します。

"10バイトを送信した後のマスターはスレーブから回答を得られるはずですが、スレーブがフルバイトを受信して​​いない場合、システムは不安定になります......." この問題は、スレーブ側のタイムアウトメカニズム。

関連する問題