ラズパイのペリフェラルとしては一通りカメラを見てみました。
標準のライブラリの機能だけでデジカメとか作れそうな勢いですね。
でもそのためにはフォーカス制御の出来るカメラモジュールが欲しくなります。手軽に入るデバイスであるのかな?オートフォーカスってどうするんだろう?
ってことは置いておき、次はやはりGPIOでしょう。先日購入したセンサを活かすためにもGPIOを使ってみようと思います。
っていうか、一般にGPIOっていうと本当の意味のGPIOです。要は単なるInputピンかOutputピン。
それらGPIOとI2CやSPIは別物として扱うのが普通かなーって思いますが、ラズパイは物理的なピンがGPIOにもI2CやSPIにもなるってことで、ここではまとめてGPIOと言ってます。
要はこのピンヘッダに出ている信号ピンを使いたいってことです。
買った山ほどのセンサの中で何をどう使うかは後回しにして、まずはどうやって使うか?を調べてみることにします。
ラズパイのMPUとしてのGPIOは沢山あるようですが、40ピンのピンヘッダに出ている信号はその一部です。
ラズパイ基板でGPIOを使うということではこのピンヘッダに出ているGPIOピンだけを使うってのが現実的でしょう。
回路図を見てみますと、なんと丁寧に用途も書いてあります。
汎用に使えるGPIOピンですが、専用に使うこともできるってことですね。
それをみると
- I2C(SCL1/SDA1)が1系統
- SPIが2系統(CEだけ分離)
- UART 1系統
として使えそうです。
まだコメントの書いてあるピンもまだあって
GPIO_GCLKってのはクロック出力のピンでしょう。
あと、GPIO_GEN*って書いてあるピンのGENの意味はわかりません。
Generalってこと?汎用中の汎用?
だったら、何も書いてないGPIOピンとの違いは?って疑問がわきます。
で、回路図ですが、GPIO部だけはプロセッサ(BCM2837B)との接続が載ってます。
ここで大事なのはGPIO2とGPIO3は1.8kの抵抗でプルアップしているというとこ。
GPIOですが、SCL/SDAとI2C用途で使えるピンで、I2Cとして使う時のプルアップがすでに接続されているってことになります。
なので、I2Cとして使わずにGPIOとして使う場合にはこの抵抗が悪さしないように回路を考えないといけないってことになります。
まぁ余程ピンが足りないって事情でもない限り一般用途にはこのような兼用ピンを使用するのは避けた方がいいということでしょうかね。
で、他のピンはどう使うの?
ですが、BCM2837のデータシートは見つけられずBCM2835を見てるのでひょっとして違うのかもしれませんが、ここら辺は変わってないと信じましょう。
それを見てると、FSELっていう3bitのレジスタで各GPIOピンをInput/Output/ALT0~5の8種類の中から選べるようになってます。
全ピン一括でALT0とかって指定じゃないってのはいいですね。
で、そのALT*って何よ?ってことはこのデータシートのP.102をご覧ください。
https://www.raspberrypi.org/wp-content/uploads/2012/02/BCM2835-ARM-Peripherals.pdf
若しくは以下にも詳しく載ってます。
RPi BCM2835 GPIOs – eLinux.org
これを見ると、GPIO2/3をI2Cとして使ったり、後UARTとかSPIとかはALT0の設定で使うことを想定しているようですし、それ以外はALT0のファンクションではなくてGPIOとして使うのかなーとかわかります。
このまま使うのでは面白みにかけるので、ALTの変更とかどうやってするんだろう?とかってのも調べていかないといけませんね。
さて、ラズパイでの具体的な動作ですが、先日購入したセンサを一つづつ動作させるべく調べながら見ていこうと思ってます。
全部動かせるのか?
動かせたとしてどのくらい時間かかるかなー
コメント