MIPI摄像头常见于手机、平板中,支持500万像素以上高清分辨率。它的全称为“Mobile Industry Processor Interface”,分为MIPI DSI 和MIPI CSI,分别对应于视频显示和视频输入标准。目前,MIPI摄像头在其他嵌入式产品中,比如行车记录仪、执法仪、高清微型相机、网络监控相机等得到广泛应用,因此我们以OMAP4处理器为例,谈谈MIPI摄像头如何与ARM处理器连接。
OMAP4支持MIPI CSI2版本,其中4460支持两路视频输入,为了进行接口和软件验证,我们先在OMAP4开发板 PandaboardES 上设计了摄像头模块,如下图:
摄像头模块是通过Pandabaord的J17引脚焊接上去的,为了更好地理解CSI2接口,我们先看看Pandabaord ES的J17定义了哪些引脚:
可以看到J17中包含了5组差分信号,即(CSI21_DX0,CSI21_DY0), (CSI21_DX1,CSI21_DY1), (CSI21_DX2,CSI21_DY2), (CSI21_DX3,CSI21_DY3), (CSI21_DX4,CSI21_DY4)。这五组信号来自于OMAP4的CSI2-A接口,如下图所示:
上图摘自于omap4的手册。可以看出,OMAP4430其实有两路CSI2接口,即CSI2A和CSI2B,说明其可以接两个摄像头,这已经是手机或者平板应用的基本要求了。CSI2A接口拥有五组差分接口(csi2a_dxi, csi2a_dyi, i=0~4), 分别对应J17引脚的(CSI21_DXi,CSI21_DYi, i=0~4)。一组差分信号称为Lane,每个Lane可以通过软件配置为Data Lane和Clock Lane,而且差分信号的极性也可以软件配置。当然最常规的用法是将(dx0,dy0)用于传输clock信息。CSI2A可以有4个Data Lane和1个Clock Lane,而CSI2B则只能有1个Data Lane和1个Clock Lane,Data Lane越多,其能传输的速度越高,也就是更传输更高分辨率的图片。Data Lane个数与传输速度的关系是这样的:
data lane个数 | 极限速度 | 对应图像传输帧率 |
One Data lane | 1000Mbps | 1280*720@30fps |
Two Data lane | 2x1000Mbps | 1280*720@60fps |
Three Data lane | 3x1000Mbps | 1280*720@90fps |
从这个表格中可以看到,MIPI采用差分线传输,速度还是很快的,比并行传输要快很多。在使用两组data lane的情况下,就可以做到720p@30fps了。如果要提高图像的分辨率,在使用同样多data lane的情况下,就要降低帧率了。
我们为pandaboard研发的摄像头模块采用ov5640传感器,它支持两组data lane,以下是它所支持的传输格式:
format | resolution | frame rate |
5 Mpixel | 2592x1944 | 15fps |
1280x960 | 1280x960 | 45fps |
1080p | 1920x1080 | 30fps |
720p | 1280x720 | 60fps |
VGA | 640x480 | 90fps |
QVGA | 320x240 | 120fps |
ov5640拥有2组 data lane,还有1组 clock lane,因此可以如下方式连接ov5640和omap4.
其中(MC_P,MC_N)为ov5640的用于传输时钟的引脚,(MD0_P,MD0_N), (MD1_P,MD1_N)为用于传输数据的引脚。除了要连接好ov5640的差分信号外,还要给ov5640输入时钟信号,这个时钟信号可以来自于晶振,也可以来自于omap4。我们选择一个用一个晶振产生24M的时钟信号,具体如何连接这里不再叙述。
接下来我们顺便讲讲OV5640的I2C控制信号。另外我们注意到OV5640有SIOC和SIOD。那么这I2C控制信号是干什么的?一个很明显的用途就是来设置OV5640的图像输出格式,比如是输出RGB格式还是YUV格式。这是通过寄存器来设置的。
其实OV5640作为视觉传感芯片,其有很多寄存器来控制图像的拍摄参数,比如增益控制、曝光控制等,这些参数一般设置为默认值即可,但如果用户想再特定环境下获得更好的图像质量,可以设定这些参数来达到最佳效果。比如在晚上开启夜视模式(把每帧曝光时间调长),或者在室内开启工频抑制,在日光灯下图像不闪烁(通过设置曝光时间为光周期信号整数倍),可以达到更加灵活的使用效果。运行于omap4的拍照软件可以运行一个类似于光照检测的算法来来设定这些参数,从而达到一个最佳效果,这个就得看软件算法的功力了。
另外,OV5640内部还有一个ISP(Image Signal Processor),能够做简单的一些图像处理算法,比如Gamma校正,图像缩放等,但相对于OMAP4430的强大的ISP而言,而其功能还是小巫见大巫了,所以推荐直接使用OMAP4430的ISP功能。