ラズベリーパイカメラをFPGAにつなぐ
ラズベリーパイカメラをFPGAにつなぐ方法を考えています。
ラズベリーパイのカメラは、SCCBでいろいろなレジスタを設定しないと、クロックやデータを送ってきません。しかし、SCCBのレジスタの一覧やアクセス方法は公開されていません。
ラズパイカメラは、15ピンのフレキケーブルでつなぎますが、これはMIPI D-PHYのCSI接続といいます。CSIでは、クロックやデータはカメラ側から出力されてきます。そのため、電源をつなげば画像が出てくる・・と最初は甘く思ったのですが、SCCBというプロトコルを使っていろいろと内蔵レジスタを設定してあげないと何も出てこないようです。
最初はレジスタ44と88に何かを書いてあげれば出てくると気楽に考えていたのですが、そうはいきませんでした。まず、SCCBはI2Cとは異なるプロトコルなので何が正しいのかさえよくわかりません。ACKも帰ってこないようです。
そこで、まずはカメラをラズベリーパイをつないでSCCBの信号をオシロでキャプチャするところから始めました。
見てのとおり、SCCBはI2Cに似てはいますが、データの長さが32bitだったりするなど、かなりの相違があります。
アルバイトさんが、ラズベリーパイの出力する波形をオシロで解析して、どのレジスタにどんな値を書き込むかを調べてくれました。
同じパターンの波形を送ってはみたのですが、クロックもデータも送られてきません。
ラズパイカメラには、CLKやGPIOという端子もありますが、正常に動作しているときには、CLK端子が0→1になったあとGPIOを0→1になっているようなので、これらの端子も何らかの制御に関わっているのだとは思います。
また、MIPI D-PHYではD0のPとNは双方向の信号です。低速な通信モードでは双方向で使うらしいのでが、ラズパイとつないだときには双方向として使われている感じではなさそうでした。
引き続き解析を行っていきます。
| 固定リンク
コメント