0

ある proc (マスター) から別の proc (スレーブ) に文字列を送信し、スレーブから文字列を読み取りたいと思います。

現在、lpcをマスターとして、arduinoをスレーブとして使用して、arduinoとLPC1788を混同しています。LPC が正しく送信した文字列は、ISR で arduino によって受信されます。ループ関数では、すべての文字が受信されたかどうかを確認してから、文字列を送り返そうとします。LPC 側では、何らかの理由で ISR が機能していません。SRを次のように設定しました

SR = (1<<TNF) | (1<<RNE);

そのため、LPC から文字列を送信した後に遅延を設定し、arduino からの読み取りを開始しました。

文字列を送信するためにLAで見たものは次のとおりです。

ここに画像の説明を入力

しかし、Arduinoからの文字列の読み取りは奇妙に見えます(文字列は「Pong\n」である必要があります。受け取ったのは常にPであるとは限りません...さまざまです) ここに画像の説明を入力

問題の大部分は、SPI バッファの送信と読み取りの同期内にあると思います。LPC で機能的な ISR を使用せずにそれを達成するにはどうすればよいですか?

4

1 に答える 1

0

SPI 仕様では、CS (SSEL) ラインはフレーム中にアクティブで、その間に非アクティブになる必要があると規定されています。NXP はこれを 1 つのフレームである単語として解釈しました。これは、SSP ブロックによって生成された CS (従来の SPI も同様) が、最大 16 ビットの 1 つのトランザクション中にのみアクティブになることを意味します。

送信される単語/フレームの間には常にギャップがあることにも注意してください。したがって、FIFO をいっぱいにしたり、DMA を使用したりした場合でも、16 のクロック パルス、短い遅延、さらに 16 のパルスが表示されます。

GPIO ピンを SSEL として使用する場合、周辺機器がアイドル状態になるまで SSEL のアサートまたはディアサートを待つ必要があることに注意してください。

于 2013-10-16T11:23:01.410 に答える