Camera mipi通信协议
和你一起终身学习,这里是程序员Android
经典好文推荐,通过阅读本文,您将收获以下知识点:
一、mipi协议介绍
MIPI
(移动行业处理器接口),是Mobile Industry Processor Interface
的缩写。MIPI
移动行业处理器接口)是MIPI
联盟发起的为移动应用处理器制定的开放标准。分别定义了一系列的手机内部接口标准,比如摄像头接口CSI
、显示接口DSI
,其中CSI(Camera Serial Interface)
是由MIPI
联盟下Camera
工作组指定的接口标准。CSI-2
是MIPI CSI第二版
,主要由应用层、协议层、物理层组成,最大支持4通道
数据传输、单线传输速度高达1Gb/s
。
二、mipi CSI-2 的分层结构
CSI-2
可分为5层,分别为:应用层、组包/解包层、底层协议层(Low Level Protocol)、通道管理层和物理层 。
分层结构中涉及到的名词解释:
名称 | 解释 |
---|---|
应用层 | 即是处理原始图像数据的各种算法模块 |
组包/解包层 | 负责将数据按照一定的次序,切割成 8 比特数据。 |
底层协议层 | 为新生成的数据加上包头包尾,形成符合协议要求的数据流。 |
通道管理层 | 将生成的数据流按照一定次序和要求,进行读写管理,输出数据流。 |
物理层 | 生成 MIPI 最后的信号波形。 |
像素数据 | 经过图像模块处理过的数据流,或者原始图像的数据路。 |
传输数据 | 经过MIPI模块切割或者加上包头包尾的数据。 |
控制信号 | 模块间的控制数据流 |
发送端 | 包括了 MIPI 数字部分,转接板等实现MIPI 信源传输的部分。 |
接收端 | 包括了转接板和商用接收端模块,负责解析收到的 MIPI 信源。 |
详细的来说,链路的工作顺序如下:
首先原始的图像数据会在应用层做相应的图像处理,包括白平衡、噪声去除、色彩还原等。
处理过后的数据进入组包层做数据分割和重组,再传给协议层。协议层根据数据类型产生包头,根据数据内容产生构成包尾的校验序列,之后将包头、数据本身、包尾组合起来发送给通道管理模块。
通道管理模块按照通道的选通情况,合理分配数据到每个通道,之后数据经过数模转换进入物理层传输,接收端在收到物理层的数据后,再按照之前的逆序解包出原始的图像数据。
三、mipi CSI-2 的物理连接
除地线外,MIPI CSI-2
一般会有1对I2C通信
引脚,1对MIPI差分时钟
引脚和1~4对MIPI差分数据信号
引脚。
CSI2涉及到的各个引脚解释:
名称 | 解释 |
---|---|
DATA 1+ / DATA 1- MIPI | 协议组包生成的差分模拟数据信号第二组 |
DATA 2+ / DATA 2- MIPI | 协议组包生成的差分模拟数据信号第一组 |
CLOCK+ / CLOCK- MIPI | 协议组包生成的差分模拟时钟信号 |
SDA I2C | 数据信号线 |
SCL I2C | 时钟信号线 |
在典型的应用中发送端在完成对图像的各种处理后,按照协议对数据进行打包,然后通过差分信号线向接收端传输信号,差分信号线一般有一对时钟差分线和多对数据差分线,数据差分信号线的数量与需要传输的数据量的要求有关,数据量越大多对数据线能更容易满足链路的需求。一般情况下两百万到五百万像素的手机使用两对差分数据线,即两个数据通道 。而当摄像头像素进一步提高到八百万甚至一千三百万时一般会使用四个数据通道,即四对差分数据线。
与外部进行控制信号交互时,采用的是I2C
接口,在MIPI
的发送端使用的是I2C
, 从端的 IP,MIPI CSI-2
接口的控制寄存器连接I2C
的从端,这样外部接收装置可以通过I2C
去配置MIPI
发送端的内部寄存器,以此改变MIPI CSI-2
接口内部状态机的持续时间和最后输出数据时的通道数,又或者在调试过程中读出这些寄存器,去做相应的检查,以判断发送端的工作状态,再通过接收端的现象来分析发送端是否工作在正常的状态。
四、MIPI CSI2的工作模式
MIPI
信号的传输有两种工作模式:高速模式和低功耗模式:
1、HS 高速传输模式:
高速数据传输,信号为差分信号,电平范围为100mv-300mv
,传输速度范围是80-1000Mbps
。在该模式下传输时,当差分线正端收到1.2V
信号,负端收到0V
信号时,这时接收端识别为1
,反之为0
。
2、LP 低功耗模式:
用于传输控制指令,异步传输,信号线为单端,电平范围是0-1.2V
,没有用时钟线,时钟是通过两个数据线异或而来的,速度只有10Mbps
。在该模式下传输时,当正端接收到300mV
,负端接收到100mV
时接收端识别为1
,反之则识别为0
。
五、mipi传输时序
其中MIPI
的传输时序如下,对应得时间需要符合规范要求,否则可能会出现MIPI
信号无法识别的问题,通常可以通过修改settle time(40-85)
和trail time(24~39)
来调整:Clock
和data
中体现差分,即低位先出,故如此表示,差分信号P高N低表1,P低N高表0。
现在对mipi大概有点小小的概念了。再给你看看她的照片,保证你喜欢。MIPI 输出长什么样?
mipi 的美颜照片
帧头标识、帧尾标识(分别由vsync上升下降沿生成)
行头标识、行尾标识(分别由hsync上升下降沿生成)
有效数据长包。包含行标识,所以可以省略line_sync短包
相对于并口传输,即是将vsync
、hsync
与数据共通道复用传输。
总之一句话,能用软件解决的一定不要动硬件,能动手的一定不要动嘴。人生哲理。
什么?不要看PS过的照片!好吧,下面发个素颜照。
是不是美如画。
而mipi
的信号符合其通信协议,规定其起始电压在1.1~1.3
V,等等,如下图(我比较懒,不服来辩)。这是其电气要求。
然后软件方面,如下图:
MIPI 数据长包内容
名词 | 解释 |
---|---|
字节(byte) | 基本传输单元,每个byte中有8位(bit) |
Sync dyte | 来同步数据开始,告知接下来为有效数据 |
DATA TYPE | 该包传输的是什么格式的数据YUV422(1E)/RAW8(2A)/RAW10(2B) |
WC(16bits) | PAYLOAD中的byte数量(即输出窗口的1行中有多少个字节,也即列数。注意raw10为列数的1.25倍,raw12为列数的1.5倍) |
ECC | 校验datatype和wc是否出错 |
Payload | image data |
CSC | PAYLOAD数据传输校验 |
六、MIPI CSI2的数据包格式
MIPI CSI2
是一个面向字节的,基于包的协议;它支持任意大小的数据通过短包和长包格式传输。各个包之间由EOT-LPS-SOT
序列隔开,MIPI CSI2
的数据包如图所示。
LLP
包有两种:长包和短包。每个包的传输以SoT(start of transmission)
开始,EoT(end of transmission)
结束,中间间隙是LPS(Low Power State低功耗状态)
。
6.1 MIPI CSI2的长包格式
MIPI CSI2
的长包主要有包头、数据包和包尾三部分构成。而包头又可细分为:数据标识(data identifier)
、数据包大小(word count)
和错误校验码(ECC)
构成。MIPI CSI2
的长包数据格式如图所示。
其中,
数据标识大小为1字节,包含虚拟数据通道号[7:6]和数据类型[5:0]。
数据包大小为2字节,其内容为传送数据的长度,以“字”为单位。
错误校验码大小为1字节,负责对数据包的传输错误进行检查及纠错。
数据包可以传送数据的大小为0~65535字节。
包尾大小为2字节,是数据负荷的检查和。
6.2 MIPI CSI2的短包格式
与长包相比,短包没有数据包和包尾。数据标识DI中的数据类型在0x00到0x0F之间。WC字段是短包的数据域,这个数据可由用户定义。ECC是校验码,能对1bit错误进行纠错,2bit错误进行检查,如图所示。
友情推荐:
至此,本篇已结束。转载网络的文章,小编觉得很优秀,欢迎点击阅读原文,支持原创作者,如有侵权,恳请联系小编删除,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!
点个在看,方便您使用时快速查找!