大家好,又见面了,我是你们的朋友全栈君。
【版权申明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)
软件工程师角度看MIPI协议
一、MIPI的由来:
在手机行业的初期, 优胜劣汰适者生存的手机行业竞争激烈. 在这个过程中涌现出了许许多多不同的创新的点子, 例如摄像头的接口, 由于每个厂商不存在统一的规范, 不同的摄像头模组厂商可能会使用的不同的接口, 在做适配的时候极其不方便以及个别接口非常不好用(接口技术碎片化导致集成困难). 为适应现代手机的高性能高速数据传输, 从而提高竞争力和规范性, MIPI联盟应运而生.
(是的, 你没看错, 在MIPI的最开始, 确实是针对手机定制的一套标准. 如今用在了许多嵌入式的产品上.)
MIPI联盟是由ARM、诺基亚、意法半导体和德州仪器发起成立的, 作为移动行业领导者的合作组织. MIPI联盟鼓励所有手机行业内的公司加入, 包括: 手机设备制造商、半导体厂商、软件厂商、系统供应商、外围设备制造商、知识产权提供商、其他公司…
MIPI联盟,即移动产业处理器接口(Mobile Industry Processor Interface 简称MIPI)联盟。
MIPI(Mobile Industry Processor Interface,即移动行业处理器接口),是MIPI联盟发起的为移动应用处理器制定的开放标准和规范。
为了避免在座的各位陷入和我刚开始接触mipi时候疑惑不解的地方, 这里我在强调一下, MIPI协议是为了统一移动行业(即手机)而省的, 而我们工作中接触到的MIPI-CSI/MIPI-DSI只是mipi协议的一部分…
二、接下来就是技术篇了:
1. MIPI协议-CSI2:
CSI(Camera Serial Interface)是由MIPI(Mobile Industry Processor Interface)联盟下的Camera工作组制定的接口标准, 该协议为低成本智能手机细分市场提供了一套灵活的、高性价比的解决方案.
CSI接口具有接口少、抗EMI强、速度快、功耗低等优点. CSI-2是MIPI CSI第二版,CSI-2由应用层、协议层、物理层组成, 最大支持4通道数据传输, 单线传输速度高达1Gb/s.
1.1 传统摄像头接口
传统摄像头到处理芯片(SOC)的连接接口, 需要至少9根线的数据时钟线(Clock+ 8bit RGB Data)以及一组I2C控制总线. 且受限于时钟速度, 传输的视频分辨率也受到限制, 这些缺陷就使得传统摄像头连接接口注定被淘汰.
1.2 Camera Serial Interface(CSI) 2
如上图所示, 而采用了Camera Serial Interface(CSI)接口的摄像头, 可以精简到一组差分时钟和一组差分数据线. 如果分辨率提高, 还可以灵活的增加差分数据对来支持, 由此减少了负载, 加快了数据传输.
上图是一个标准的MIPI CSI-2的系统框图连接,包含了CSI-2和CCI发送者和接收者接口,描述了CSI-2发送者和接收者之间的连接关系,是一个典型的摄像头模型和接收者模型。控制接口CCI(CameraControl Interface)CCI是一个支持400K数据率的双向控制接口,与I2C接口标准兼容,实现 SOC (CCIMaster)到 CSI-2 TX 端(CCI Slave)的控制。
控制接口CCI是与I2C标准兼容的双向控制接口, 是I2C协议的子集, 你可以把它当成是I2C.
CSI-2规范定义了发送者和接收者之间传输和控制接口的标准。数据传输接口(指CSI-2)是单向差分串行接口,传输数据和时钟信号.
下图是CSI-2的应用中概念上的层级结构。从图中可以看到,CSI-2主要包含了,应用层(Application Layer), 协议层(Protocol Layer)和物理层(PHY Layer)。
各层描述如下:
应用层(ApplicationLayer): 主要描述了上层数据流中的数据编码和解析。CSI-2 规范中规定了像素数据到字节的映射。
协议层(Protocol Layer): 包含了几个不同的子层,每个子层都有各自的明确职责。主要包括,像素/字节打包/解包层(Pixel/Byte Packing/UnpackingLayer),Low Level Protocol Layer(LLP),通道管理(LaneManagement)层。CSI-2协议层允许多数据流 (CSI-2 TX)共用一个主机处理器端 CSI-2 接收信号接口 (CSI-2 RX)。协议层就可以描述有多少数据流被标记并组合在一起,指定了多数据流怎样被标记和交叉存取,因此每个数据流可以在SOC处理器CSI-2接收器中被正确的重建,才能把各个数据流正确地恢复出来。。
像素/字节打包/解包层(Pixel/Byte Packing/UnpackingLayer): CSI-2支持多种像素格式图像应用,包括从6位到24位每个像素的数据格式。在发射端,数据由本层被发送到LLP层(Low Level Protocol)前,本层将应用层传来的数据由像素打包成字节数据;在接收端,执行相反过程,将LLP层发来的数据解包,由字节转成像素,然后才发送到应用层。8位每像素的数据在本层被传输时不会被改变。
LLP(Low LevelProtocol)层: LLP层包括,为串行数据在传输开始(SoT)到传输结束(EoT)之间传输事件,和传输数据到下一层,建立位级和字节级同步的方法。LLP最小数据粒度是一字节。LLP层也包括,每字节中各位数值分布解释,即“端”(Endian)分布。
通道管理(LaneManagement)层: 为性能不断提升,CSI-2是通道可扩展的。数据通道数目可以是1,2,3,4,这个依赖于应用中的带宽需求。接口发送端分配(“distributor”功能)输出数据流到一个或更多通道。在接收端,接口从通道收集字节并将之合并(“merger”功能)成为重新组合的数据流,恢复原始数据流序列。
数据在协议层是以数据包的形式存在。在接口发送端,添加包头和可选择的错误校验信息,一起以数据包的形式通过LLP层来传输数据。在接收端,LLP层将包头剥离,由接收者按照相应逻辑解析数据包,得到有效数据。错误校验信息可以用来检测收到的数据完整性。
物理层(PHYLayer): 定义了传输介质 (electrical conductors,导体),输入/输出电路信号的电气特性(electricalparameters)和时钟机制(时序)。即如何从串行位流(Bit Stream)中获取“0”和“1”信号。规范中的这一部分记录了传输介质的特性,并依据时钟和数据通道之间发信号和产生时钟的关系规定了电学参数。
信号传输开始SOT (Startof Transmission)和传输结束EOT (End of Transmission)信号的握手机制被规范化,同样被规范化的还有其他在传输和接收物理层之间能够传输的“带外”信息(“out of band”)。位级(Bit级)和字节级(Byte级)数据的同步机制等都是在物理层来实现的。
2. MIPI协议-DSI:
1、名词解释
• DCS (DisplayCommandSet):DCS是一个标准化的命令集,用于命令模式的显示模组。
• DSI, CSI (DisplaySerialInterface, CameraSerialInterface
• DSI 定义了一个位于处理器和显示模组之间的高速串行接口。
• CSI 定义了一个位于处理器和摄像模组之间的高速串行接口。
• D-PHY:提供DSI和CSI的物理层定义
2、DSI分层结构
DSI分四层,对应D-PHY、DSI、DCS规范、分层结构图如下:
• PHY 定义了传输媒介,输入/输出电路和和时钟和信号机制。
• Lane Management层:发送和收集数据流到每条lane。
• Low Level Protocol层:定义了如何组帧和解析以及错误检测等。
• Application层:描述高层编码和解析数据流。
3、Command和Video模式
• DSI兼容的外设支持Command或Video操作模式,用哪个模式由外设的构架决定
• Command模式是指采用发送命令和数据到具有显示缓存的控制器。主机通过命令间接的控制外设。Command模式采用双向接口
• Video模式是指从主机传输到外设采用时实象素流。这种模式只能以高速传输。为减少复杂性和节约成本,只采用Video模式的系统可能只有一个单向数据路径
文档参考: (文档比较旧, 但是协议大体上不会变, 可以放心食用.)
附下载链接
MIPI_CSI-2_specification_v01-01-00_r0-05.pdf
MIPI_DCS_Specification_V1.02.00.pdf
MIPI_D-PHY_Specification_v01-00-00.pdf
mipi-DSI-specification-v1-1.pdf
文章参考: (个人觉得写得好的, 而且参考比重比较大的)
嵌入式工程师必备:MIPI CSI-2 接口协议.
MIPI DSI 接口协议介绍.
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/136436.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...