カメラインタフェース改造
これまで、カメラの画像データ出力フォーマットを
RGBにしていました。
RGBから輝度信号へと変換する処理をデジタル回路で
実現するのは簡単ですが、利用カメラに与える設定値
でYUVにできるので、それを利用することに。
ARMから出力するパラメータは、FPGAのバッファを介して
SCCBで、カメラに設定します。
カメラのフレームレートはデフォルトで30ですが
半分の15に落として使います。マシン移動に使え
ればよいので、フレームレートが15であれば60ms
になります。
フレームレートを半分にするには、ダミーラインを
入れればよいので、510ラインを入れます。
510 = 256 + 254 = 0x100 + 0xFE
から、次の設定を加えます。
/* DM_LNL */
send_cam(0x92,0xFE);
/* DM_LNH */
send_cam(0x93,0x01);
フレームレートを半分にしたので、ピクセルクロックも
24MHzの1/16にします。
/* CLKRC
divide /16
*/
send_cam(0x11,0x8F);
YUV形式で画像データを出力するため、レジスタ
TSLB、COM7の設定値を変更します。
/* COM1 */
send_cam(0x3b,0x0a); /* disable night mode */
/* TSLB
3 bit => select YUV format
*/
send_cam(0x3a,0x05);
/* COM7
2 bit , 0 bit => select YUV format
*/
send_cam(0x12,0x00);
YUV形式では、1ピクセルにY(輝度)信号は
必ず出力されるので、偶数ピクセルだけを取得
して処理します。
VSが垂直同期信号で、この後にHREF、PCLKに
同期した画像データが出てきます。PCLKはVGA
であれば、1ラインは640x2回PCLKが出力され
ます。
MCR_VCマシンを制御するには、1ライン=640ピクセル
とする必要がないので、QQVGA(160x120)とします。
QQVGAは、1ライン=160ピクセルとなるので、PCLKは
320回出力になります。QQVGAの画像全部を利用する
必要はないので、上から60ラインを使います。
利用するFPGAは、DualPortMemoryが内蔵されているので
DualPortMemoryは1ブロックあたり、2048バイトの容量
を持ちます。1ライン=160ピクセルとすると、5ライン
では、全体で800バイトです。従って、DualPortMemoryを
1ブロック利用すると、制御に必要な画像データを保存
できます。
VSを利用し、HREFとPCLKのANDをトリガーとして、メモリ
に画像データを保存するシーケンサでインタフェースを
実現します。
目次
前
次