CMOSイメージセンサ

MT9D111 のお勉強1
MT9D111の勉強をすることにした。その覚書を書いておく。
特徴、レジスタと変数について書いた。
MT9D111のお勉強2
3.4.Special Function Registers (SFR) and MCU SRAM
・JPEG Indirect Registers
MT9D111のお勉強3
・Firmware Driver Variables(68ページ)
・MCU Register List and Memory Map
・Output Format and Timing(110ページ)
MT9D111のお勉強4
・Sensor Core (116ページ)
MT9D111のお勉強5
・Changes to Gain Settings
・PLL Generated Master Clock
MT9D111のお勉強6
Start-Up and Usage (148ページ)

2 Mega pixel Camera Module MT9D111 JPEG Out + HQ lens
I2Cのプルアップ抵抗がついてなかったので、FPGAのIOピンのプルアップオプションをONにした。

MT9D111のフレーム レートを 15 fps から 30 fps にした
CMOSカメラモジュールのMT9D111 のCLKINに 36 MHz を入れると、PIXCLK に 18 MHz が出てきていた。
カメラでは8ビットの 2 バイトで1つのピクセルを表すので、つまり、ピクセルクロックとしては 18 MHz の半分の 9 MHz となり、約 15 fps ということになる。(SVGA でのピクセルクロックは 40 MHz)アプティナのカメラの出力フォーマットはVGA信号よりも情報が詰まっているので、これで計算が合うのだ。
このフレームレートを 15 fps から 30 fps にしたいと常々思っていた。MT9D111 のマニュアルにも「30 fps in preview mode (800 x 600)」 と書いてあるし、やってみた。

Pcam 5Cカメラが届きました
Pcam 5Cカメラは、Zybo Z7: Zynq-7000 ARM/FPGA SoC Development Board のコネクタに接続して使用します。

秋月電子カメラモジュール OV5642を使う1
今までMT9D111 を使ってきたが、日昇テクノロジーのMT9D111 は在庫切れでディコンになってしまったようだ。
その代わりを探していたが、秋月電子を見ているとOV5642があったので、これを試してみたいと思った。たぶん、OV5642 は以前ひでみさんが試していたことがあったと思う。それに、エンヤさんの記事がインターフェースの 2014年11月号に載っているので、それを参考にしたいと思う。
秋月電子カメラモジュール OV5642を使う2(OV5642の設定の検討)
Ultra96 用PMOD 拡張ボードの発注ができたので、OV5642 に戻ってUltra96 や ZYBO-Z7-20 で使えるようにしたい。MT9D111 がディスコンになってしまったので、容易に購入できる秋月電子で売っているOV5642 に乗り換えたいからだ。
問題は、今まで使っていた800 x 600 ピクセルの画像サイズはデフォルトではないので、大きな画像サイズを切り取るしか無いかな?ということだ。もしくは、VGAかXGA に乗り換えるか?大きな画像サイズを切り取るにしてもOV5642 のレジスタ設定で出来るようだ。
秋月電子カメラモジュール OV5642を使う3(OV5642インターフェースIPの検討)
前回は、OV5642の設定レジスタの設定値を検討した。今回は、OV5642の信号を取り込 むOV5642インターフェースIP を検討する。
秋月電子カメラモジュール OV5642を使う4(AXI-Stream Data FIFO のシミュレーション)
前回は、OV5642の信号を取り込むOV5642インターフェースIP を検討した。その結果、AXI-Stream Data FIFO とOV5642 の画像データを受け取るVivado HLS のIP の組み合わせで行くことにした。今回は、AXI-Stream Data FIFO が使い物になるかどうか?HDL シミュレーションをしてみよう。
秋月電子カメラモジュール OV5642を使う5(OV5642インターフェースIP)
前回は、、AXI-Stream Data FIFO が使い物になるかどうか?ということで、HDL シミュレーションを行ったところ、うまく行きそうにないということがわかった。(AXI4-Stream の動作としては問題ない)今回は、OV5642のインターフェースIP を作っていこう。
秋月電子カメラモジュール OV5642を使う6(OV5642の設定レジスタの設定値)
OV5642のインターフェースIP を作ろうとし作ったのだが、設定レジスタの設定により、作成済みのMT9D111 のインターフェースIP と違いが無くなったためMT9D111 のインターフェースIP を使用することにした。今回は、OV5642を使用するための設定レジスタの設定値を決定する。ただしまだ半分くらいだ。
秋月電子カメラモジュール OV5642を使う7(OV5642の設定レジスタの設定値2)
前回は、OV5642を使用するための設定レジスタの設定値を半分程度決定した。今回は、 OV5642を使用するための設定レジスタの設定値を決定して、Python でC コードに変換してみよう。
秋月電子カメラモジュール OV5642を使う8(OV5642用Vivadoプロジェクト)
前回は、OV5642を使用するための設定レジスタの設定値を決定して、Python でC コードに変換した。今回は、Ultra96 用の cam_test_182 のVivado プロジェクトを少し改変して、OV5642用のVivado プロジェクトを作ろう。
秋月電子カメラモジュール OV5642を使う9(デバイスツリー・オーバレイ用ファイルの整備)
前回は、Ultra96 用の cam_test_182 のVivado プロジェクトを少し改変して、OV5642用のVivado プロジェクトを作った。今回は、Debian 上でソフトウェアを起動するために、デバイスツリー・オーバレイ関連のファイルを整備する。
秋月電子カメラモジュール OV5642を使う10(アプリを用意して実機テスト)
前回は、Ultra96 のDebian 上でソフトウェアを起動するために、デバイスツリー・オーバレイ関連のファイルを整備した。今回は、アプリケーション・ソフトを作成して、OV5642 を動作させてみよう。HREF、VSYNCの波形が出力されなかった。
秋月電子カメラモジュール OV5642を使う11(VGA解像度でテスト)
前回は、アプリケーション・ソフトを作成して、OV5642 を動作させようとしたが、HREF、VSYNC の波形が全く出ていなかった。今回は、インターフェース2014年11月号の設定値つまりVGA 解像度で、HREF、VSYNC が出てくるかどうか?を確かめてみよう。VGAだったらHREF、VSYNCは出力されていた。
秋月電子カメラモジュール OV5642を使う12(カメラ画像が表示できた)
前回は、インターフェース2014年11月号の設定値つまりVGA 解像度で、HREF、VSYNC が出てくるのを確認することができた。今回は、SVGA 解像度のレジスタ設定をいじってカメラ画像を表示させてみよう。カ メラ画像は見えたが、色がおかしかった。
秋月電子カメラモジュール OV5642を使う13(カメラ画像が表示できた2)
前回は、SVGA 解像度のレジスタ設定をいじってカメラ画像を表示させることができたが、色がおかしかった。今回は、教えてもらったレジスタ設定を試して、色も問題なくなった。本当に教え てくれた岩田さんに感謝する。
秋月電子カメラモジュール OV5642を使う14(画像が縦長で横に反転)
前回は、教えてもらったレジスタ設定を行って、カメラ画像を綺麗な色に表示できた。今回は、数 字を映してみると左右に反転して表示されている状況を確認して、カメラからレベル変換IC を通った後の波形を確認した。
秋月電子カメラモジュール OV5642を使う15(完成)
OV5642 のレジスタ設定では、標準で 0x3818 番地のレジスタ設定が 0xC1 になっていて、横方向がMirror になっている。MT9D111 に比べて撮像素子を 180 度回してマウントしてあるようなので、それを上下に Filp してMirror 無しにしたいのだが、どうしてもレジスタ設定でそうすることができない。よって、Filp は諦めて、Mirror 無しにして、ソフトウェアで読み方を修正することにした。こうすると行は反対になっているが、列のアドレスは単調増加なので、ハードウェアで読む場合に800ピクセルを バーストできる。画像全部は連続してバーストできないが、800 ピクセルごとにアドレスを再設定する、スキャッター・ギャザーDMA を実装すれば比較的簡単にAXI4-Stream にできるだろう。綺麗な色で、正常なサイズのカメラ画像のBMPファイルが作成できた。


inserted by FC2 system