- 締切済み
ラズパイをスレーブに設定してデータを受信したい
初めて質問させていただきます。失礼がありましたら申し訳ございません。 ラズパイに外部からクロック信号とデータ信号を入力(ラズパイをスレーブに)してデータを処理したいと考えています。信号は1MHzのSPI通信をさせたいと思っていますが、ラズパイをスレーブにする事例はあまり情報がなく困っております。適当な事例等ございましたら教えてください。通信方式が適当でなければ、あわせてご教授いただければ幸いです。よろしくお願いします。(プログラムはpythonで作成しています)
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- TIGANS
- ベストアンサー率35% (245/681)
>通信相手は癖のある装置でSPI通信と称してクロックとデータを送信してきます。送信データの型は決まっていてやり取りもできないため、ラズパイをスレーブにして受信し、データを処理しようと思いました。データを処理する目的は既存の計測システムに組み込むためです。 それならFTDIのft311Dが載ったUSB変換ボードをSPIslave設定にしてPCにつなぐだけ。CJMCU-311なら10ドル以下でも売ってる。 Windowsにデバイスドライバ入れといて接続すればVCPとして接続できて ポートからTeratermでデータロギングできるのではなかったかな。 https://www.ammlab.org/labo/FT311D/index.html
- lumiheart
- ベストアンサー率47% (1142/2410)
>USBで受信することはできないでしょうか? 定石的にはUSB-シリアル通信 http://akizukidenshi.com/catalog/g/gM-00720/ シリアル側はRS232C、RS422、TTLレベル その他色々 いにしえの昔からパソコンで計測制御するには常套手段 令和時代になっても未だRS232Cは現役 <所謂レガシーI/F ラズパイのUSBにUSB-シリアル変換器は使用できるよ 普通に増設シリアルポートとして認識される
- lumiheart
- ベストアンサー率47% (1142/2410)
そもそも何故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でも実装事例はググれば沢山出て来る(ほとんどは英文ですが)
- TIGANS
- ベストアンサー率35% (245/681)
回答No.2です。USBだと更に難しくなるでしょう。 UART(非同期シリアル)か TCP-IP(LAN)を使うべきでしょう。
- TIGANS
- ベストアンサー率35% (245/681)
不可能ではないですがいろいろ面倒だと思います。 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の載ったラズパイでスレーブ機能を実装する。 以上です。
補足
早々のご回答、ありがとうございます。大変参考になりました。提案していただいた方法、検討させていただきます。追加の質問で申し訳ないのですが、SPIではなくUSBで受信することはできないでしょうか?データの最初4byteは事前にわかっていますのでこれをSOFとして受信することは可能でしょうか?(少し調べてみましたが、USB通信自体が初めてで的外れなことを言っているのかもしれません。)
お礼
アドバイスありがとうございました。USB-シリアル変換器は発注済です。試してみます。 通信相手は癖のある装置でSPI通信と称してクロックとデータを送信してきます。送信データの型は決まっていてやり取りもできないため、ラズパイをスレーブにして受信し、データを処理しようと思いました。データを処理する目的は既存の計測システムに組み込むためです。単なる受信ならロジアナでよいのですが、データをリアルタイムで処理するロジアナは高価ですので、まずはラズパイでと考えた次第です。いろいろな情報、ありがとうございました。