RasPiカメラ V2.1のCSI信号の詳細
Raspberry Pi カメラ 2.1のMIPI D-PHY CSIインタフェースの動作を解析しています。
前回のブログで「クロックは30Hz」と書きましたが、それは間違いでした。
RaspberryPiをつないで、raspivid -w 1920 -h 1080 -t 100000 -o hoge と打つと、カメラが動き出します。そのときの各端子の様子を高速オシロで見てみました。
CSIのクロックはオシロでみるとこのような1.2Vくらいの振幅の波形をしていますが、
LVCMOS12とかではありません。
電圧が低い部分に本当のクロックが隠れていました。
30HzでHLHL・・しているように見えますが、差動信号ですから両方が同時にHになるということはありませんよね。
同時にHになっているときはIDLE状態で、低い電圧のところに振幅100mVの真のクロックがいます。
クロックの周波数は455MHz、振幅は200mVくらいのようです。
一方、データバス(D0,D1)を見てみると、同じようにHLHLと50kHzくらいでトグルしています。
データもクロックと同様に電圧が高いところでは、差動の両方とも1.2Vくらいになるので、信号なしと考えるのが妥当です。同様に本当のデータは0V付近のところにあるようです。
差動プローブで測ってみると、本当の姿が見えてきます。Lになっていた部分が信号ありの状態で、Hになっていた部分が信号のない部分です。周期は18.86usでした。
データ線の様子を拡大すると、
455MHzくらいのDDRで動いているようです。約1nsで1bitを送っています。
元に戻って、1Hの中で信号のある期間を測ってみたら、9.03μ秒くらいでした。
9.03usに455MHz×2のデータレートだと8217bit入るので、1つの画素を8bitとすると1000ピクセルくらい入る計算になります。そして、Dバスは2レーンあるので、横2000ピクセルくらいのデータ量になると考えられます。
なお、1V(垂直期間)は17430μ秒だったので、925本程度の水平ラインが入ることができます。2000×926ですから、1920×1080pの30fpsなのかもしれません。
RasPiカメラ 2.1のCSIのタイミングをまとめると次の図のようになりました。
次はI2Cのシーケンスと、GPIOの操作方法を解析しようと思います。
| 固定リンク
コメント