技术交流: 请加微信video_D
(1)由于camera驱动调试涉及面比较多,这里会分多章节介绍
(2)另外由于不同客户对camera需求的不同,侧重点不一样,图像效果/成本/多通路/车规等等,所以图像输入的方案也是多样的
(3)这一章节主要介绍设备端camera模组以及接口
一般的摄像头模组(camera module)都是由镜头(lens)、图像传感器(image
sensor)、基板、排线等组成,如下图所示:
而带AF功能的模组,多使用VCM方式,比上述结构过了一个线圈,利用洛伦兹力将镜片垂直移动,
从而达到对焦的功能。
我们常常说的 sensor 其实指的是包在模组里面的那块 sensor soc,而模组一般是由 专门的模组厂购买 sensor soc 之后根据客户需求自行选取不同的材料制作出不同规格和质量的模组。
比如ov5640 模组指的是内部使用 ov5640 的 soc 的模组,而生产模组的厂家则可能是不同的,如市面上常见的舜宇、光阵、信利等都有使用同一款 soc 的模组
摄像头模组中 sensor 和镜头一般占成本的 90%以上,画质也是由这两者决定,所以 摄像头模组选型最主要是选择合适的 sensor 和镜头。
一般步骤:
1 .根据模组的期望价格,主板接口,以及客户需要的拍照和录像分辨率,选择合适 的 sensor。Sensor 价格通常占模组价格的 40~60%左右。在保证分辨率/帧率够用的情况下, 尽量选择感光性能更好或 pixel 面积更大的 sensor。
2 .根据产品模具尺寸、sensor 面积、摄像头用途,选择尺寸、视场角合适的镜头。 对于普通摄像头,镜头成像圆直径需大于 sensor 对角线长度,以保证 sensor 所有像素都能正常感光。对于鱼眼摄像头,sensor Y 方向的成像高度需略大于镜头成像圆直径, 以保证镜头成像范围不受损失,sensor 像素也得到充分利用。
全志平台常用到的 CMOS sensor 接口有 CSI(CMOS sensor interface),也称作 DVP digital video port,并口,常用于低分辨率 sensor。常用的还有 MIPI(Mobile Industry Processor Interface),顾名思义常用于手机 sensor。MIPI 可用于连接多种设备,例如连 接摄像头的接口叫 MIPI-CSI(Camera Serial Interface),连接屏幕的接口叫 MIPI-DSI (Display Serial Interface)。其它接口还有 sub-LVDS(常用于安防、工业、消费相机)、 Hispi(Aptina 开发的 sensor 接口)、SLVS-EC(Sony 高分辨率高帧率相机 sensor 接口) 等。
现在主流的camera接口有以下几种(仅针对全志平台)
(1)低速并行接口: dvp、bt656、bt1120
(2)串行高速差分接口: mipi、lvds、hispi
(3)模拟接口: CVBS
具体全志不同平台支持的接口也不一样,可以在官网上对各系列芯片查看 A/T/V/H....
大概是A/H系列是低速并行接口,T/V系列是高速差分接口,但也不一定
由以下部分组成,数据线(data line,一般 8~12 位),根据高位对齐的原则(这个不一定的);行同步(HSYNC), 场同步(VSYNC)和像素时钟(Pixel Clock)PCLK。
在并行传输方式中PCLK是用于主控采集data的信号,其摆幅必须足够让主控分辨 出其高低,主控PCLK极性需要和sensor 输出的极性相同,否则抓取的数据可能是错误 的。
HSYNC/VSYNC 为行场同步信号,主控需要根据其极性来抓取不同时刻的 data, 极性设置错误会导致抓取不到数据或者是抓取到错误的数据。
一般驱动里面会类似这样定义极性:
#define VREF_POL V4L2_MBUS_VSYNC_ACTIVE_HIGH
#define HREF_POL V4L2_MBUS_HSYNC_ACTIVE_HIGH
#define CLK_POL V4L2_MBUS_PCLK_SAMPLE_RISING
目前 AW 各个平台主控的 CSI 接口同时也支持 BT656 格式的信号输入,这个时候 仅需要 PCLK+8bit DATA 传输数据即可,
Mipi 传输方式下外部仅能看到 clk 和 data 信号,行场同步信号则是编码到 data 中, 由主控接收后自行判断。极性的定义不起任何作用
这个接口现在是最普及成熟的,也是得益于手机模组的发展,主要针对高分辨率 、高帧率的图像
涉及相关参数:
(1)lane数
一对差分线两根线称之为一lane,常见的是4lane数据线+1lane时钟线;
如果有PCB布线空间限制 or 多路视频输入要求也可以改成2lane数据线 or 1lane数据线
(2)时钟速率
由于是串行数据传输,所以时钟速率都是几百兆或上GHZ,这个就对PCB走线,主控接口等等有较高要求了;
一般图像一些异常都可能是由这里导致的
其实现在模拟接口现在有很多种,什么HD-TVI/CVBS/HD等等,但在AW平台感觉主要还是通过第三方芯片将模拟数据转成
dvp或者CSI