FC2カウンター FPGAの部屋 秋月電子カメラモジュールOV5642を使う12(カメラ画像が表示できた)
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

秋月電子カメラモジュールOV5642を使う12(カメラ画像が表示できた)

秋月電子カメラモジュールOV5642を使う11(VGA解像度でテスト)”の続き。

前回は、インターフェース2014年11月号の設定値つまりVGA 解像度で、HREF、VSYNC が出てくるのを確認することができた。今回は、SVGA 解像度のレジスタ設定をいじってカメラ画像を表示させてみよう。

インターフェース2014年11月号の特集を読んでどの辺りがおかしいか?を探ってみた。
0x389C 〜 0x380F の水平と垂直のトータル・サイズを増やしてみた。

cam_i2c_write(axi_iic, device_addr, 0x380c, 0x0d);
cam_i2c_write(axi_iic, device_addr, 0x380d, 0x00);
cam_i2c_write(axi_iic, device_addr, 0x380e, 0x04);
cam_i2c_write(axi_iic, device_addr, 0x380f, 0xe8);


そうすると、画像が表示されるようになった。
OV5642_54_181218.jpg

画像は表示されたがSVGA に比べてVGA くらいの画像しかないし、画像の上下が反転しているし、色味がおかしい。

最初に画像をFlip してMirror してみることにした。Flip しただけだとカメラ画像がひょうじされなくなったからだ。

cam_i2c_write(axi_iic, device_addr, 0x3818, 0xe0); // Flip, Mirror


すると、カメラ画像が反転して、縦はいっぱいに表示されたが、横が同じ幅だったので、縦に伸びてしまった。
OV5642_55_181218.jpg

結構レジスタ設定を決めるのが面倒なので、Android のOV5642のドライバを見つけたので、設定値を頂いてきて、Python で C コードに変換した。
OV5642_57_181219.png

Ultra96 のDebian の~/examples/cam_cap_ov5642/build_android に cam_cap_ov5642.cpp をコピーして、OV5642 の設定レジスタを設定するコードを Android のドライバから生成した C コードに置き換えた。
OV5642_58_181219.png

そして、コンパイルしてカメラ画像を取得した。
OV5642_56_181218.jpg

ちゃんとSVGA の画像になっていたが、色は同じようだった。また、インターフェース2014年11月号の設定では、4 ピクセルを 1 ピクセルに縮めているので、画角が広い。画角が広いほうが良いけど、どうしよう?
とりあえず、色味を合わせてみよう。
うまく行くのだったら、1280 x 720 ピクセルに設定して、真ん中を切り取って 800 x 600 ピクセルにしても良いかもしれない?

最後に、現在のHREF と VSYNC の波形を示す。
OV5642_59_181219.jpg
  1. 2018年12月19日 06:17 |
  2. CMOSイメージセンサ
  3. | トラックバック:0
  4. | コメント:2

コメント

ov5642で画面が紫色っぽくなる件

私も結構悩みましたが以下で解決したと記憶しています。
////RGB565
write_i2c(0x501e ,0x2a);//
write_i2c(0x5002 ,0xf8); ///////
write_i2c(0x501f ,0x01);
write_i2c(0x4300 ,0x61);///61rgb565////////////
http://www.csun.co.jp/SHOP/20120881201.html
ここにあるSTM32サンプルソースを参考にしました。
ちなみに私はVGAでやっています。
ご参考まで
  1. 2018/12/19(水) 14:01:26 |
  2. URL |
  3. 岩田 #-
  4. [ 編集 ]

ありがとうございました。
////RGB565
write_i2c(0x501e ,0x2a);//
write_i2c(0x5002 ,0xf8); ///////
write_i2c(0x501f ,0x01);
write_i2c(0x4300 ,0x61);///61rgb565////////////

やってみたのですが、
write_i2c(0x5002 ,0xf8); では真っ暗で
write_i2c(0x5002 ,0x78); でうまく行きました。
  1. 2018/12/19(水) 18:40:02 |
  2. URL |
  3. marsee #f1oWVgn2
  4. [ 編集 ]

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
http://marsee101.blog.fc2.com/tb.php/4389-8cf5d307
この記事にトラックバックする(FC2ブログユーザー)