问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

MIPI CSI-2协议详解(上)

创作时间:
作者:
@小白创作中心

MIPI CSI-2协议详解(上)

引用
CSDN
1.
https://blog.csdn.net/u010556156/article/details/145993889

什么是CSI?

CSI(Camera Serial Interface)是MIPI联盟早期制定的摄像头接口标准,主要用于连接摄像头和处理器。CSI-2是CSI的第二代版本,在原有基础上进行了全面优化:

(1)分层架构:CSI-2明确将协议分为应用层、协议层和物理层,并新增了“虚拟通道”功能,可支持多个摄像头通过同一物理链路传输数据。

(2)数据包机制:CSI-2定义了长包(Long Packet)和短包(Short Packet)两种格式。长包用于传输图像数据,短包用于同步信号(如帧开始、行结束等控制指令),而CSI仅支持单一数据格式。

CSI-2 Layer

类似于大家熟知的以太网协议,都是一层一层打包。分为三层:应用层(Application)、协议层(Protocol Layer)和物理层(PHY Layer)。下图中的Transmitter一般指摄像头模块,Receiver一般指处理摄像头数据的芯片(例如手机SoC)。


Figure 1. CSI-2 Layer

物理层

物理层是MIPI联盟定义的PHY规范。定义了传输媒介(如电导体)、输入/输出电路,以及时钟机制,用于从串行数据流中准确捕获“0”和“1”。

(1) 它规定了传输的线路、电路参数、时钟同步机制等,保证数据不会乱;

(2) 定义了信号的“开始”和“结束”规则,确保数据有序传输。

协议层

在发射端,协议层的作用就是给数据加上Header和数据校验信息。

在接收端,协议层就是解析头部,然后交给对应的逻辑处理,同时进行错误检测,确保数据完整性和正确性。

(1)Pixel/Byte Packing/Unpacking Layer(像素/字节打包 & 解包层)

TX:这一层的作用就是将不同像素格式pixels(支持6bits-24bits)打包成字节(8bits),传到下一层Low Level Protocal.

RX:将从Low Level Protocol接收到字节解包成pixels,传到上一层Application。

(2)Low Level Protocol(低级协议层,LLP)

保证数据在SoT到EoT之间是按字节和按位同步。传输的最小单位为1Byte。

管理大小端Endian。

(3)Lane Management(通道管理层)

在这一层,CSI-2是可扩展的(Lane-scalable),可以根据带宽需要选择传输通道的数目(1~4)。

TX:如果选择了多通道,在发射端需要将数据分配到各个通道进行并行传输。

RX:从多个通道接收数据,还原成原始数据流。

应用层

应用层主要负责higher-level的数据编码和数据解析,用于处理数据流中的信息。

CCI

CCI(Camera Control Interface)是一个双线、双向、半双工的串行接口。

CCI用于控制CSI-2发送端(摄像头)。

在CSI-2中,接收端(处理器)是CCI Master,发送端(摄像头)是CCI Slave。

CCI相当于摄像头的控制器,用来让手机SoC控制摄像头的参数,比如分辨率、帧率、曝光等。

CCI基于I2C(Fast Mode 400KHz,7bit地址寻址),但是不支持Multi-Master Mode。例如,一个手机有前后两个摄像头,一个CCI可以连接这两个摄像头(CCI slave),但是只有一个Master(手机处理器)。

通俗理解,CSI-2用来传照片,CCI用来调整相机参数

Multi-Lane Distribution and Merging

Multi-Lane Distribution时,可能会发生需要传输的总字节数不能被Lane数量整除。所有通道是同时发送,所以会存在部分通道提前结束的情况。每个 D-PHY 数据 Lane 独立工作,不受其他 Lane 影响。


Figure 2. Two Lane Multi-Lane Example

Low Level Protocol

LLP有两种数据包:长包(Long Packet)和短包(Short Packet)。

每个数据包开始,设备先从LP模式切换到HS模式,然后发送ST。结束时发现ET序列,回到LP模式。


Figure 3. Low Level Protocol

Long Packet长包


Figure 4. Long Packet Structure

从上图可以得知:

(1)一个Long Packet由PH(Packet Header)、Data Payload和PF(Packet Footer)组成;

(2)PH进一步由DI、WC和ECC组成。

DI:定义虚拟通道(Virtual Channel, VC)和数据类型(Date Type, DT)。

WC(Word Count):字数计数。解析完PH后,接收端会读取Word Count x 8bit的数据。在读取数据时,不会检查同步码(Sync Code)。即内容可以任意值。

ECC:8bit纠错码。用于检测和修正包头中的错误。能够纠正1-bit错误,检测2-bit错误。

PF包含16bit校验码,用于检查数据包是否正确传输。

Date Type(DT):0x10~0x37代表不同的数据格式,具体如下表所示:

上表中,前2行表示的短包数据类型,后面6行表示的是长包数据类型。

短包数据类型格式展开如下表所示:

数据传输顺序

每个字节按照最低有效位(LSB)优先传输

多字节数据按照最低有效字节优先传输

包解析流程

(1)读取SoT,进行数据包解析;

(2)解析Packet Header,获得DI、Word Count和ECC;

(3)根据Word Count,读取Data Payload;

(4)读取Packet Footer并检查checksum是否正确;

(5)解析完后,等待EoT。然后继续等待下一个SoT处理下一个数据包。

Short Packet短包

Short Packe仅包含PH包头,没有包尾,没有Data Payload。包头中的WC字段会被“短包数据字段“替换。包头依然包含了8bit ECC,可以纠正1bit错误,检测2bit错误,确保数据的正确性。

从下图可以发现短包信息量相比长包很小,但是很关键,短包的作用如下:

(1) 帧同步数据(Frame Synchronization Data Type):代表帧号(Frame Number);

(2) 行同步数据(Line Synchronization Data Type):代表行号(Line Number);

(3) 通用短包数据(Generic Short Packet Data Type):用户自定义,可以存放任意内容。


Figure 5. Short Packet Structure

Data ID由VC和DT两部分组成,如下图所示。VC位于高2bit,DT为低6bit。


Figure 5. Data Identifier Byte

VC的作用是在同一个数据流中提供多个独立数据通道,支持不同的数据流交错传输。接收端会检测VC号,并将交错的视频流正确拆分到对应的通道。由于VC 2bit,所以最多支持4个独立数据流,即有效的虚拟通道编号为0到3。

外设中的VC标识符应支持可编程配置,这样Host Processor就可以控制数据流的解复用方式。


Figure 6. Logical Channel Block Diagram

通用短包数据格式

传递额外的控制或者时间信息:

(1) 控制相机快门的开启、关闭;

(2) 触发闪光灯;

(3) 其他特定应用需要的同步信号。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号