SCCB (Serial Camera Control Bus) のインターフェース回路を実装することにした。
第1段階は、SCCBプロトコルを調べることだ。SCCBプロトコルはI2Cバスに似ている。I2Cバスについては、”
やまねこのマイコン実験室、I2Cバスを使ってみよう”や”
I2C通信の使い方”に詳しく書かれている。
それによるとI2Cは、SCL, SDAともにオープンドレインで、スレーブ側からのビジー通知はスレーブがSCLをローにドライブすることによってマスタに通知するそうだ。SCCBはその使い方はできないので、SCCBはI2Cのサブセットということができると思う。
SCCBプロトコル仕様はここにある。この仕様はほとんど3線式SCCBについて書かれているが、2線式はI2Cバスの仕様に沿う形で良いようだ。どうもいつもマニュアルが不完全だ。。。
仕様をタイミングチャートにしてみた。下図に示す。

FPGAのSCCBインターフェース回路がマスタで、CMOSカメラ側がスレーブになる。上の例はSCCBレジスタ12番地に80、つまりレジスタのオールリセットを行うコマンドだ。
最初にスタートビットがある。それは、I2Cと一緒でSCLが1の時にSDAを0にドライブする。その時のタイミング制約がtSU:STAとtHD:STA。次に”01000010"と出力する。この場合、必ず、SDAはSCLが0の時に変化させる。SCLが1の時にSDAのデータが確定される。ちなみに最後の0は0がWrite、1がReadを表す。つまり16進で書くと、42がWrite、43がReadとなる。そのデータは
OV7640のマニュアルの10ページの最初の数行に書いてある。このID Address をアクセスすれば、OV7640、OV7725にアクセス出来るようだ。その時のタイミング制約がtSU:DAT、tDH:DATになる。
次に、マスタはSDAのドライブをOFFする。これはACKのはずなんだが、CMOSカメラ側がドライブするようだ。その次は、Sub-address でここにSCCBレジスタのアドレスを入れて、CMOSカメラに送る。このアドレスは”00010010”で16進で書くと12だ。次にWriteするデータ、”10000000”、16進で書くと80をマスタは出力する。
最後にストップのシーケンスがある。これはSCLが1の時にSDAを0から1に変化させる事によって、ストップとなる。その時のタイミング制約がtSU:STOとなる。次のSCCBのデータ転送が始まるまでの制約がtBUFになる。
だいたい、タイミングが分かったので、次はどのように実装するかを考える事にする。
- 2009年12月15日 06:02 |
- 画像処理
-
| トラックバック:0
-
| コメント:0