0

私はいくつかの読書をしていて、マイクロコントローラーで動作する「マスター」SPIさえ取得しました。これが私の質問です。基本的に、マスターがスレーブへの書き込みを初期化したい場合、SSPBUFに書き込みます。スレーブが応答するものをどのように制御しますか? その場合、データシートはイベントの順序を明確にしていないようです。

IE マスターは 1 文字を SSPBUF に入れます。これにより、SPI モジュールがスレーブにデータを送信し始めます。シフト中に、スレーブはバイトを返します。

スレーブ側では、着信データがあることを伝える何かがあり、最初に SSPBUF に書き込み、次にデータを受け入れることができますか?

また

マスターが転送を開始する機会を得る前に、返送する最初の「戻り値」を SSPBUF に書き込む必要がありますか?

4

4 に答える 4

1

スレーブのチップセレクトを処理するGPIOラインで割り込みを使用したいとします。クロックが開始する前に、スレーブがこの割り込みを処理し、発信データレジスタをロードするのに十分な時間を確保してください。

一部のSPIモジュールでは、GPIOを使用できません。SPIモジュールにチップセレクトを処理する機能があるかどうかを確認するか、GPIOアクティビティに基づいてモジュールのみを有効にする必要があります。

于 2010-06-03T01:04:59.610 に答える
1

通常、私が過去に SPI で行ったことは、マスターからスレーブに 2 バイトを最小限の遅延で送信することです。マスターは次のように送信します: "X Y" ここで、"X" はスレーブから読み取りたい変数であり、"Y" は実際にはスレーブからの応答をクロックアウトするために使用される単なるダミー変数です。同時に、スレーブは「X」を受信すると割り込みを受け取り、出力バッファに入れる値を検索し、「Y」を受信すると、そのパケットへの応答がマスターにクロックアウトされます。

于 2010-06-03T00:51:16.380 に答える
0

マイクロコントローラーが何であれ、3 つは SPI データの受信に関連付けられた ISR である可能性が高く、受信したデータにアクセスしてローカル変数にコピーできるレジスターです。

于 2010-05-28T14:56:10.020 に答える