SSブログ

OV7670(FIFO無)のフレームレートを変更するにはどうすればいいの? [Arduino]

衝動買いをしてしまった OV7670(FIFO無)。


OV7670.png


FIFOメモリが無いので、カメラが垂れ流す映像データの隙間で処理をしないといけません。しかし、貧弱なArduinoのマイコンでは高速で処理するには難しく、カメラが吐き出すデータの間隔を広げて処理時間を稼ぐしかありません。

そのために出来ることは2つ。


1) フレームレート(fps)を遅くすること
2) 画像の解像度を低くすること


今回はフレームレート(fps)を遅くするにはどうすればよいか調べてみました。

フレームレート(frame per second)は1秒間にくる画像の数のことです。例えばテレビは1秒間に30枚の画像を処理するので30fpsになります。今回はカメラが送る画像を、例えば1秒間に10枚など、少なくすればデータの間隔が広がり処理時間を稼げることになります。

ということでOV7670の制御方法を調べてみたのですが、レジスタの使い方がイマイチ分かりません。Google 先生に訪ねてみると、参考になるサイトを教えてくれました!


Hacking the OV7670 camera module (SCCB cheat sheet inside)
http://embeddedprogrammer.blogspot.nl/2012/07/hacking-ov7670-camera-module-sccb-cheat.html


フレームレート(fps)を調整するにはPCLKの数値を変更すればよさそうです。上記サイトによるとPCLKが24MHzの場合は30fpsになり12MHzの場合は15fpsとなるようです。(因果関係はよく分かってません・・・タイミングチャートを紐解けば理解できると思いますが)

PCLKは下記のレジスタで制御できるようです。(Internal Clock の説明がデータシートに何もないので確証はありません)


OV7670_PCLK_DBLV.png


これらから OV7670 の入力クロックが 8MHz の時に、24MHz を得るには下記のようにレジスタを設定すればよいことになります。(上記サイトにも記述がありますが、入力クロック 8MHz は規格外です)


・CLKRC Bit[6] を "0" に設定
・CLKRC Bit[0-5] を "1" にして分周を ”2” に設定
・DBLV Bit[7-6] を "b10" にしてPLLを入力クロックの6倍に設定
・8MHz x 6 / (Bit[0-5] + 1) =48MHz / (b000001 + 1) = 24MHz


実際にできるかどうか分かりませんが、Bit[0-5] を "b001011 [d11]" に設定すれば PCLK を 4MHz まで落とせて 5fps まで落とせるかも知れません。

次は解像度を変更する方法について確認したいと思います。
(^_^)/~






OV7670 Camera Module 〈 Arduino関連 〉

OV7670 Camera Module 〈 Arduino関連 〉

  • 出版社/メーカー: elecfreaks
  • メディア:






Beginning Arduino ov7670 Camera Development (English Edition)

Beginning Arduino ov7670 Camera Development (English Edition)

  • 出版社/メーカー:
  • 発売日: 2015/07/03
  • メディア: Kindle版




nice!(30)  コメント(2)  トラックバック(0) 
共通テーマ:趣味・カルチャー

nice! 30

コメント 2

ワンモア

こんばんは~コメントありがとうございます。
おそ松くん、おそ松さんと言うそうですね。
うちの娘もハマっています(笑)
by ワンモア (2015-12-25 00:16) 

ys_oota

ワンモアさん、コメントありがとうございます。何がよいのかよく分かりませんが、グッズにすごい大金をつぎ込んでます。いい商売ですよね~。
by ys_oota (2015-12-25 01:38) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。