こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

ラズパイをスレーブに設定してデータを受信したい

初めて質問させていただきます。失礼がありましたら申し訳ございません。
ラズパイに外部からクロック信号とデータ信号を入力(ラズパイをスレーブに)してデータを処理したいと考えています。信号は1MHzのSPI通信をさせたいと思っていますが、ラズパイをスレーブにする事例はあまり情報がなく困っております。適当な事例等ございましたら教えてください。通信方式が適当でなければ、あわせてご教授いただければ幸いです。よろしくお願いします。(プログラムはpythonで作成しています)

投稿日時 - 2020-05-27 14:37:50

QNo.9753806

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.5

>通信相手は癖のある装置でSPI通信と称してクロックとデータを送信してきます。送信データの型は決まっていてやり取りもできないため、ラズパイをスレーブにして受信し、データを処理しようと思いました。データを処理する目的は既存の計測システムに組み込むためです。

それならFTDIのft311Dが載ったUSB変換ボードをSPIslave設定にしてPCにつなぐだけ。CJMCU-311なら10ドル以下でも売ってる。

Windowsにデバイスドライバ入れといて接続すればVCPとして接続できて
ポートからTeratermでデータロギングできるのではなかったかな。
https://www.ammlab.org/labo/FT311D/index.html

投稿日時 - 2020-05-28 02:39:15

ANo.4

>USBで受信することはできないでしょうか?

定石的にはUSB-シリアル通信
http://akizukidenshi.com/catalog/g/gM-00720/
シリアル側はRS232C、RS422、TTLレベル その他色々

いにしえの昔からパソコンで計測制御するには常套手段
令和時代になっても未だRS232Cは現役 <所謂レガシーI/F

ラズパイのUSBにUSB-シリアル変換器は使用できるよ
普通に増設シリアルポートとして認識される

投稿日時 - 2020-05-27 22:50:47

お礼

アドバイスありがとうございました。USB-シリアル変換器は発注済です。試してみます。
通信相手は癖のある装置でSPI通信と称してクロックとデータを送信してきます。送信データの型は決まっていてやり取りもできないため、ラズパイをスレーブにして受信し、データを処理しようと思いました。データを処理する目的は既存の計測システムに組み込むためです。単なる受信ならロジアナでよいのですが、データをリアルタイムで処理するロジアナは高価ですので、まずはラズパイでと考えた次第です。いろいろな情報、ありがとうございました。

投稿日時 - 2020-05-27 23:52:36

ANo.3

そもそも何故SPIなの?
https://www.analog.com/jp/analog-dialogue/articles/introduction-to-spi-interface.html
https://www.ei.tohoku.ac.jp/xkozima/lab/raspTutorial3.html

最大の問題は通信距離 同一筐体内部の短距離用
https://www.analog.com/jp/education/landing-pages/003/bbs/bbs_18.html

何事にも例外はあるもんで
https://www.analog.com/jp/products/ltc6820.html
「最大100メートルのケーブル長をサポート」
短距離用じゃあなかったの?


定石的にはシリアル通信でしょうね
所謂、RS-232C、RS-422、RS-485

計測制御用途ならModbus
https://www.m-system.co.jp/mstoday/plan/mame/b_network/9911/index.html
ラズパイでもArduinoでも実装事例はググれば沢山出て来る(ほとんどは英文ですが)

投稿日時 - 2020-05-27 22:41:51

ANo.2

回答No.2です。USBだと更に難しくなるでしょう。
UART(非同期シリアル)か TCP-IP(LAN)を使うべきでしょう。

投稿日時 - 2020-05-27 21:14:32

ANo.1

不可能ではないですがいろいろ面倒だと思います。
https://github.com/offis/raspi-directhw
http://offis.github.io/raspi-directhw/group__spisl.html
を参照してみてください。
うまくいかないという記述もありますので期待しないように。
http://www.cenav.org/raspi5/
最新のラズパイ4ではスレーブ機能自体が使えないようです。
https://www.raspberrypi.org/forums/viewtopic.php?t=250788

>1MHzのSPI通信をさせたい
ソフトウェアでスレーブ機能を実現できますが、高速だと取りこぼしなどが生じる可能性が高いかと思います。
http://terminal28.blogspot.com/2015/12/bitbanging-spi-on-raspberry-pi-via-spi.html
高速化に対する解決法は2つ
(1)ラズパイ外側にSPI用にマイコンチップなどを付けバッファリングを任せる。
(2)ZinqberryのようなFPGAの載ったラズパイでスレーブ機能を実装する。
以上です。

投稿日時 - 2020-05-27 18:59:45

補足

早々のご回答、ありがとうございます。大変参考になりました。提案していただいた方法、検討させていただきます。追加の質問で申し訳ないのですが、SPIではなくUSBで受信することはできないでしょうか?データの最初4byteは事前にわかっていますのでこれをSOFとして受信することは可能でしょうか?(少し調べてみましたが、USB通信自体が初めてで的外れなことを言っているのかもしれません。)

投稿日時 - 2020-05-27 20:24:25

あなたにオススメの質問