8.8.3. MIPI CSI传输协议解析

8.8.3.1. MIPI概述

传输模式

LP(Low-Power)模式: 用于传输控制信号,最高速率10MHZ

HS(High-Speed)模式: 用于高速传输素据,速率范围[80M-1.5Gbps] per lane

传输的最小单元为1字节,采用小端的方式即LSB first, MSB last

Lane States

LP mode有四种状态: LP00, LP01, LP10, LP11

HS mode有两种状态: HS-0, HS-1

MIPI CLK 传输时序

mipi csi clk存在两种工作模式,一种是连续时钟模式,传输过程中不会切换LP状态,另一种是非连续时钟信号模式,每传输一帧图像,帧blanking时会切换为LP状态

时序图如下

../../_images/clk_transfer_timing.png

从时序图可以看到,clk lane会有一个LP11—>LP01—>LP00的时序,从而进入HS模式

如果camera sensor支持非连续时钟模式,建议配置为非连续时钟模式

MIPI DATA 传输时序

在数据线上由3种可能的操作模式: Escap mode, High-Speed(Burst) mode, Control mode

  • Escap mode

进入时序: LP11–>LP10–>LP00–>LP01–>LP00

退出时序: LP10–>LP11

  • High-Speed mode

进入时序:LP11–>P01–>LP00–>SoT(0001_1101)

退出时序:EoT–>P11

../../_images/data_transfer_timing.png
  • Turnaround

进入时序:LP11–>LP10–>LP00–>LP10–>LP00

退出时序:LP00–>LP10–>LP11

  • MIPI典型时钟值

../../_images/mipi_clk_type.jpg ../../_images/mipi_data_type.jpg

注解

UI即MIPI的CLK lane的高速时钟周期的二分之一,因为MIPI采用DDR时钟

8.8.3.2. Multi-Lane Distribution and Merging

../../_images/multi_lane_dis.png ../../_images/two_lan_transfer.png ../../_images/four_lane_trans.png

8.8.3.3. Low Level Protocol

在mipi底层传输协议中,由短包和长包组成,这两种数据包都是由SoT开始EoT结束

../../_images/low_level_protocol.png

8.8.3.3.1. 底层数据包格式

长包数据格式

长包数据格式如下

../../_images/long_package_struct.png
  • Data ID: 定义了虚拟通道以及数据类型

  • WC: 定义了8-bit的data payload字节数

  • ECC: package header的ECC校验,包括Data ID和WC数据域

  • Data Payload: 数据域

  • CS: checksum(16-bit)

短包数据格式

../../_images/short_package_struct.png

8.8.3.3.2. Data ID

Data ID数据包格式如下

../../_images/data_id_struct.png

8.8.3.3.2.1. Virtual Channel

虚拟通道标识符的目的是为在数据流交错的不同数据流中提供单独的通道

../../_images/vc_channel.png

即:MIPI接受端可以通过VC标识符将交错的几路视频数据进行拆分

../../_images/vc_package.png

8.8.3.3.2.2. Data Type

../../_images/data_type_class.png
  • Synchronization Short Packet Data Types

../../_images/data_type_codes.png
  • Generic Short Packet Data Types

../../_images/generic_short_dt.png
  • Generic Long Packet Data Types

../../_images/generic_long_di.png
  • YUV Image Data Types

../../_images/yuv_dt.png
  • RGB Image Data Types

../../_images/rgb_dt.png
  • RAW Image Data Types

../../_images/raw_dt.png
  • User Defined Data Formats

用户自定义数据则可以传输任意数据,例如JPEG或者MPEG4,或者其他类型的通信数据.

../../_images/user_dt.png

8.8.3.3.3. ECC

../../_images/ECC_Example.png

8.8.3.3.4. CS

ECC对Package header进行校验,而Checksum则对数据域(data payload)进行校验,使用16-bit CRC算法

../../_images/package_cs.png

8.8.3.3.5. Sync Short package

帧同步信号以及行同步信号内由短包进行发送,在短包的data type域中定义

0x00---->0x02---->0x03........0x02----->0x03------>0x01
FS        LS       LE          LS        LE         FE
../../_images/frame_trans.png

hsync以及vsync示意

../../_images/line_frame_blanking.png ../../_images/hsync_example.png ../../_images/vsync_example.png

frame示意图

../../_images/general_frame.png ../../_images/digital_interlaced_frame.png

8.8.3.3.6. Data Type Interleaving

CSI-2支持在同一视频数据中交错传输不同图像格式,也就是MIPI-CSI支持传输不同分辨率不同数据格式的图像.

有两种方式传输交错的视频数据1. 使用Data Type 2.使用Vrtual Channel

../../_images/interleaved_trans.png ../../_images/interleaved_trans_vc.png ../../_images/packet_interleaved.png

8.8.3.4. Data Formats

8.8.3.4.1. YUV Image data

  • Legacy YUV420 8-bit

../../_images/legacy_yuv420_8.png ../../_images/legacy_yuv420_frame.png
  • YUV420 8-bit

../../_images/yuv420-8.png ../../_images/yuv420_8_frame.png
  • YUV420 10-bit

../../_images/yuv420_10.png ../../_images/yuv420_10_frame.png
  • YUV422 8-bit

../../_images/yuv422_8.png ../../_images/yuv422_8_frame.png
  • YUV422 10-bit

../../_images/yuv422_10.png ../../_images/yuv422_10_frame.png

8.8.3.4.2. RGB Image data

  • RGB888

../../_images/rgb_888.png ../../_images/rgb_888_frame.png
  • RGB666

../../_images/rgb_666.png ../../_images/rgb_666_frame.png
  • RGB565

../../_images/rgb_565.png ../../_images/rgb_565_frame.png
  • RGB555

../../_images/rgb_555.png
  • RGB444

../../_images/rgb_444.png

8.8.3.4.3. RAW Image data

  • RAW6

../../_images/raw_6.png ../../_images/raw_6_frame.png
  • RAW7

../../_images/raw_7.png ../../_images/raw_7_frame.png
  • RAW8

../../_images/raw_8.png ../../_images/raw_8_frame.png
  • RAW10

../../_images/raw_10.png ../../_images/raw_10_frame.png
  • RAW12

../../_images/raw_12.png ../../_images/raw_12_frame.png
  • RAW14

../../_images/raw_10.png ../../_images/raw_14_frame.png