carcon999のブログ

12年間Y!ブログの記載を移行しました。電子工作関連の記事が多いです。

OV9650のレジスタ読み込み

ちょっと苦労しましたが、やっとOV9650の Device Control Registerを読み出すことができました。
とりあえずカメラが生きていることを確認できました。(ちょっと汚いですが・・・)
Arduinoで、無駄に無線でRegisterデータを読み出しています。

イメージ 1

先週から、ずっと作業していたのですが、相手からACKがかえってこないので、RESET端子だと思いいろいろ試したが駄目で、資料を漁ると、10M~48MHzの外部クロックを供給しないと駄目なことが昨日分かった。(今考えれば、当たり前かもしれませんが、マイコンのように内部クロックを持っていると思っていました。)

3.3Vで動作する48MHzのクロックが手元にあったので、接続すると、動いているようだが、相変わらずACKは返却されない。

何だろう?

手持ちのオシロで、SDA,SCLをみると、うん・・・・デバイスアドレスの0x60にはとても見えない・・・ArduinoWireライブラリを使ってやっているのだが・・・
ということで、自前でSDAとSCLをHI/LOW/HI/LOWやってみたら、なんだあっさりと読み込めちゃいました。ソースは、aitendoさんで公開している9655用のライブラリを拝借して修正しました。
下記は、Arduinoから、TeraTermに256バイト分のレジスタマップを読み出したところです。

イメージ 2

アドレス0x1C, 0x1Dの、製造者番号0x7F, 0xA2も安定して読み込めています。
現在は、読み込みだけ。どちらかというと、SCCB(I2C)は、書き込みよりも読み込みの方が面倒なので大丈夫だと思う。やっと悩みが一つ消えた。(ふう。)
※やっぱり、2mmピッチは扱い難い・・・・