MIPI CSI-2 协议解析

本文详细介绍了MIPI CSI-2接口标准,涵盖应用层、协议层、物理层的关键概念,如CCI(Camera Control Interface)的数据传输协议,包括读写操作、多字节寄存器处理,以及物理层的Lane管理。内容还涉及到数据格式如YUV和RGB图像数据,以及低级协议的包格式、错误检测和同步短包。

CSI-2标准协议

前言

CSI(Camera Serial Interface)是由MIPI联盟下Camera工作组指定的接口标准。CSI-2是MIPI CSI第二版,主要由应用层、协议层、物理层组成,最大支持4通道数据传输、单线传输速度高达1Gb/s。

本文主要是个人学习MIPI CSI-2 Spec的翻译和总结,并简单罗列了CSI-2和DSI-2的差异。

一、Overview of CSI-2

  • CSI-2规范定义了发送器和接收器之间的标准数据传输和控制接口。数据传输接口(简称CSI-2)是带有单向差分串行接口的数据和时钟信号;该接口的物理层是MIPI联盟规范的D-PHY。图1说明了CSI-2发送器和接收器之间的连接,它们通常是camera模块和接收模块,手机引擎的一部分。
  • CCI控制接口(Camera Control Interface)是一个兼容I2C标准的双向控制接口。属于I2C协议的一个子集。
  • CSI-2无论是Data Lane还是Clock Lane都是非双向的(Unidirectional)。
    在这里插入图片描述

二、CSI-2 layer Definitions

CSI-2可分为5层,分别为:应用层、组包/解包层、底层协议层(Low Level Protocol)、通道管理层和物理层。
在这里插入图片描述

  • PHY Layer: 物理层PHY 定义了传输介质(电导体),输入/输出电路和时钟机制以便于从串行bit流中捕获“1”和“0”,记录传输介质电气参数特性和时钟与数据之间的时序关系,传输起始(SoT)和传输结束(EoT) 标志信号。
  • Protocol Layer: CSI-2协议可以使用SOC上的一个物理接口实现多条数据流的传输。协议层规定了如何对多条数据流进行标记和交织,从而使每条数据流能够正确地重建。
      像素字节转换层(Pixel/Byte Packing/Unpacking Layer): CSI-2能够支持多种多样的像素格式,对于发送方,在数据发送之前,需要根据像素格式,将像素数据转换为对应的字节流;对于接收方,在将数据提供给应用层之前,需要将字节流数据转换为像素数据。
      低级协议层(Low Level Protocol) LLP指的是SoT与EoT之间的数据包字节流协议,LLP的最小单元为字节。
      Lane管理器(Lane Management) CSI-2的lane是可扩展的以提高性能。数据通道可以是1、2、3或4,这取决于带宽的要求,接口的发射端分发(“分发器”函数)输出数据流到一个或多Lanes。在接收端从Lanes收集字节数并将它们合并成一个重组的数据流以恢复原始流序列
      协议层中的数据被组成数据包。接口的发射端将包头和可选的错误检查信息附加到要发送的数据流上,并在Low Power Protocal layer 进行传输。在接收端,消息头Low Power Protocal layer协议中被剥离并在接收器中通过相应的逻辑进行解释。错误检查信息用于测试输入数据的完整性。
  • 应用层(Application Layer) 该层主要用于不同场景对数据的处理过程,对于发送方,多为camera生成数据,对于接收方,多为SOC对数据进行处理。

三、 Camera Control Interface(CCI)

CCI是一种二线制、双向、半双工、串行接口,兼容I2C,可以支持400KHz的数据传输。其读写都遵循I2C协议。包括单数据读写以及连续数据读写。最大支持16bit寄存器寻址,能够支持8bit,16bit,32bit,64bit数据宽度。寄存器数据发送顺序是由高到低。

CSI-2的接收器需要配置成一个Master, 发送器配置为Slave 在CCI bus上。CCI能够处理总线上的多个从机,然而多主机机制CCI是不支持的,任何本节没有提到的I2C command都要被忽略,以防引起不必要的操作。注意,当提到CCI时,术语主和从不应该与D-PHY操作中使用的类似术语相混淆;他们没有关系。

3.1 数据传输协议(Data Transfer Protocol)

数据传输是按照i2c协议标准来传输的。START, RPEATED START 和 STOP条件也是I2C协议标准的数据传输方式。

3.1.1 消息类型(Message Type)

一个基本的CCI消息包括START条件、带有读写位的从设备地址、从设备的应答、指向从设备内部寄存器的子地址(索引)、从设备的应答信号、从设备的写操作数据字节、从设备的应答/反应答和STOP条件。在读取操作中,数据字节来自从机,应答/非应答来自主机。如图3所示。
在CCI中,从机地址位7-bit.
CCI支持8位数据的8位索引或8位数据的16位索引。该从属设备定义了所使用的消息类型。
在这里插入图片描述

3.1.2 读写操作(Read/Write Operations)

CCI兼容设备能够支持四种不同的读操作和两种不同的写操作;随机位置单次读、随机位置顺序读、当前位置单次读、当前位置顺序读、随机位置单次写、从随机位置开始顺序写。读/写操作将在下面的章节中介绍。
从设备的索引必须在每次读写操作后自动递增。这也将在下面的部分中进行解释。

3.1.2.1 随机位置单次读

在单次从随机位置读取时,主服务器对所需要的索引做一个虚拟的写操作,发出一个重复的启动条件,然后再用读操作来定位从服务器。确认从机地址后,从机开始向SDA行输出数据。如图4所示。主处理器通过设置一个否定的确认和停止条件来终止读操作。
在这里插入图片描述

3.1.2.2 当前位置单次读

通过对slave进行读操作,也可以从上次使用的索引中读取数据。通过设置数据从最后使用的索引到SDA行来响应。如图5所示。主处理器通过设置一个非应答和停止条件来终止读操作
在这里插入图片描述

3.1.2.3 随机位置连续读

如图6,主机向索引地址发送虚拟写操作,收到从机应答之后主机发起一笔Repeat Start条件,随后发送读地址读操作,等待从机应答后连续读取数据,当主机读取到最后一个字节数据后,发送非应答信号给从机,并发送停止条件。
在这里插入图片描述

3.1.2.4 当前位置连续读

当前位置顺序读与随机位置顺序读类似,唯一区别是当前位置顺序读没有虚拟写操作,如图7,主机通过发送非应答和停止位来终止读操作。
在这里插入图片描述

3.1.2.5 随机位置单次写

如图8,主机向从机发起一笔写操作,随后发起索引地址和数据,当收到从机应答时候。写操作由主机发送Stop来终止。
在这里插入图片描述

3.1.2.6 连续写

如图9,表示连续写操作时序,每接收到一个字节数据后,从机自动增加索引地址。主机发送Stop来停止连续写操作。
在这里插入图片描述

3.2 CCI 从机地址

对于只有原始Raw Bayer输出的Camera模块,7位从地址应该是011011Xb,其中X = 0或1。对于所有其他摄像机模块,7位从地址应该是011110Xb。

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值