最新閲覧日:

電子工作向けのプログラミングの勉強をしておりますが、SPI通信で気になることがあって質問させていただきました。

ArduinoやRaspberry Pi向けのOSに含まれるSPI関連のAPIを使うと、数バイトを一度に送受信することができます。

ただ、ウィキペディア英語版(https://en.wikipedia.org/wiki/Serial_Peripheral_ …)によると、SPI通信時は、1クロックで1ビットのデータの送信と受信が同時に行われていると解釈できます。また、ざっと調べる限り、PICマイコンで送受信を同時に実装する場合、1バイト送信したら、1バイトの受信を待たないと正しく動作しないようです。

上記のようなAPIを利用した送受信が機能しているのであれば、一方がマルチバイトデータを送信しているときは、同時に相手側の機器からもダミーのバイトデータを送信していると解釈してもよいのでしょうか。あるいは、一通りの受信が終わるまで相手側は待機状態に入っている、もしくは、対象の機器の挙動にたいしてケース・バイ・ケースで対応する必要があるのでしょうか。

A 回答 (1件)

>SPI通信時は、1クロックで1ビットのデータの送信と受信が同時に行われていると解釈できます。


そうですね
>また、ざっと調べる限り、PICマイコンで送受信を同時に実装する場合、
>1バイト送信したら、1バイトの受信を待たないと正しく動作しないようです。
それはそのモジュールだかがそういう作りになってるだけです。

大概は8ビットを1文字として、意味ないヌルコードなら受け取っても捨てればいいし
それ以外のコードなら双方の約束に従って解釈し動作すればいい

>あるいは、一通りの受信が終わるまで相手側は待機状態に入っている、
>もしくは、対象の機器の挙動にたいしてケース・バイ・ケースで対応する必要があるのでしょうか。

SPI通信は「データ送受信」の信号形態を規定するものであり
データの中身とかは規定してません。
送受信双方の設計者が自由自在勝手気ままに決めればいいです。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。一方の機器の方法に合わせてフルスクラッチでプログラムするなどいろいろ思考してみたいと思います。

お礼日時:2017/03/16 19:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング

おすすめ情報