MIPI-CSI摄像头
MIPI-CSI摄像头介绍
MIPI接口简介
MIPI (Mobile Industry Processor Interface):ARM, Nokia, ST ,TI等公司在2003年成立的一个联盟所定的接口。目的是把手机等移动设备内部的接口如:摄像头、显示屏接口、射频/基带接口等标准化,从而减少手机等移动设备设计的复杂程度和增加设计灵活性。
工作组(Work Group):MIPI联盟下有许多的工作组,不同的工作组负责定义对应设备的标准。其中包括有:Camera工作组、Display工作组、高速多端链接工作组等十几个工作组。
MIPI CSI-2接口是由MIPI联盟下的Camera工作组指定的CSI(Camera Serial Interface)的第2版接口标准。硬件层面:最大支持4个虚拟通道(Lane)传输数据,1个Lane在硬件上体现就是一对差分信号线(见下方原理图),每个Lane的最大通讯速率为2.0Gbps。软件层面:MIPI CSI-2协议栈主要由应用层、协议层、物理层组成,其中协议层又可以分为:像素/字节组包/解包层、底层协议层、通道管理层。
硬件接线
查看设备信息
可以通过dmesg命令,检查MIPI-CSI2接口模块是否正常工作
dmesg | grep "csi2-.phy"
摄像头正常挂载的情况如下所示。可以看到:在dphy0接口上有一个sensor型号为:imx415的摄像头,MIPI-CSI2地址为:3-0036。
当没能出现目标camera节点时,就需要检查FPC排线是否正常连接。
寻找可用的设备节点
rockchip平台,一个MIPI-CSI接口会对应20个video节点,如下图所示。
注意:但CSI0并不一定是对应着video0~19,这个要根据设备树的实际情况对应生成。
而且MIPI-CSI camera对应的节点,会在修改内核设备树的时候固定下来(即:内核配好了MIPI-CSI Camera个数,无论MIPI-CSI摄像头是否有接上,它的video节点情况都是不会改变的)。所以要是把4路MIPI-CSI的接口都配置上的话,那么将会有80个(0~79)video节点。
因此,用户需要找到这些节点所对应的描述信息是什么。Linux的v4l2框架会把这些节点的描述信息统一放在/sys/class/video4linux/目录下,如下图所示。
通过cat命令,可以用查看这个name的内容是什么。rockchip芯片定义:如果这个name是mainpath或者selfpath。则这个“video44”就是可用节点。
在终端任意目录执行下面这条命令,可以快速扫描所有的节点的“name”描述。
grep "mainpath" /sys/class/video4linux/video*/name
快速上手
MIPI摄像头测试实例
MIPI Camera API的测试案例代码逻辑流程如下所示: