実験ボードに載せたOmnivisionのCMOSカメラ OV9650ですが、I2Cでのレジスタ読み出しの段階で苦戦中です。最初のつまずきの原因は勝手な思い込み。レジスタ番号を指定して、その値を読み出せばいいので、てっきり次のように書き込みに続いて読み出しをするシーケンスでいいハズと思って、これまでに書いたコードを流用していたのですが、ちっとも読み出せませんでした。
![](https://blogimg.goo.ne.jp/user_image/07/c0/e6360f66dd084d8cb8f426500081a4a3.jpg)
よくよくデータシートというかOminivisionのSCCBの仕様書を読んでみると、レジスタ番号を指定したら、いったんStopを送出する必要があることが判明。Tech Toysのサンプルプログラムを確認したら、ちゃんとそのようなシーケンスになっていました。
この問題を修正したところ、ちゃんと読みだせるようになったように思えたのですが、連続していくつかのレジスタを読みだそうとすると途中で必ずデータが読み出せなくなってしまいます。うーん、何が悪いのか。。?
![](https://blogimg.goo.ne.jp/user_image/07/c0/e6360f66dd084d8cb8f426500081a4a3.jpg)
よくよくデータシートというかOminivisionのSCCBの仕様書を読んでみると、レジスタ番号を指定したら、いったんStopを送出する必要があることが判明。Tech Toysのサンプルプログラムを確認したら、ちゃんとそのようなシーケンスになっていました。
この問題を修正したところ、ちゃんと読みだせるようになったように思えたのですが、連続していくつかのレジスタを読みだそうとすると途中で必ずデータが読み出せなくなってしまいます。うーん、何が悪いのか。。?