mipi-rx之软件篇

1.MIPI CSI2的分层结构(放到v4l2比较合适)

应用层    

即是处理原始图像数据的各种算法模块

组包/解包层 

   负责将数据按照一定的次序,切割成 8 比特数据。

底层协议层    

为新生成的数据加上包头包尾,形成符合协议要求的数据流。

通道管理层  

 将生成的数据流按照一定次序和要求,进行读写管理,输出数据流。

物理层    

生成 MIPI 最后的信号波形。

工作顺序如下: 

1.原始图像数据会在应用层做相应的图像处理,包括白平衡、噪声去除、色彩还原等。 

2.进入组包层做数据分割和重组,再传给协议层。

3.协议层根据数据类型产生包头,包尾, 之后将包头、数据本身、包尾组合起来发送给通道管理模块。 

4.通道管理层按照通道的选通情况,合理分配数据到每个通道,

5.之后数据经过数模转换进入物理层传输,接收端在收到物理层的数据后,再按照之前的逆序解包出原始的图像数据。

 

D-PHYDSI和CSI的物理层定义

D-PHY 是 MIPI 聯盟發布的高速物理層標準,規定了接口層的物理特性和傳輸協議。 DPHY 採用了 200mV 源同步的低压差分信號技術,每個 Lane 的數據綠率範圍支持到2500Mbps。 D-PHY 可以工作在低功耗 (Low Power, LP) 和高速 (High Speed, HS) 兩種模式下。

2.1、传输模式

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

HS(High-Speed)模式:用于高速传输数据,速率范围 [80 Mbps, 1Gbps] per Lane

传输的最小单元为 1 个字节,采用小端的方式,也就是 LSB first,MSB last。

2.2、Lane States

*  LP mode 有 4 种状态: LP00、LP01(0)、LP10(1)、LP11 (Dp、Dn)

* HS mode 有 2 种状态: HS-0、HS-1

HS 发送器发送的数据 LP 接收器看到的都是 LP00,

2.3、Lane Levels

* LP: 0 ~ 1.2V

* HS: 100 ~ 300mV,HS common level = 200mV,swing = 200 mv

2.4、操作模式 

  • 数据Lane的3种操作模式  

  •   Escape mode,
  •   High-Speed(Burst) mode
  •   Control mode

    • ①Escape mode request

LP-11→LP-10→LP-00→LP-01→LP-00

   exit:LP-10 -> LP-11

当进入 Escape mode 需要发送 8-bit entry command 表明请求的动作,比如要进行低速数据传输则需要发送 cmd: 0x87,进入超低功耗模式则发送 cmd: 0x78。

    • ②High-Speed mode request :

LP-11→LP-01→LP-00->SOT(0001_1101)

   exit: EOF -> LP-11

 mipi-rx之软件篇

    • ③Turnaround request (LP-11→LP-10→LP-00→LP-10→LP-00)

这是开启 BTA 的时序,一般用于从 slave 返回数据如 ACK: 0x84。

    exit:LP00→LP10→LP11

 

 最常用的就是“低功耗进入高速模式”如下图:

 mipi-rx之软件篇

我们的D0-D4都是一个差分信号,它从lowpower state进入到HS后,从hi speed mode 中sync出我们的data。

sensor控制的信号由绿色框圈出来,主要是以下三个讯号:

HS-Prepare:表示从low power mode进入到hi speed mode需要prepare一段时间

Hs-zero: 表示从low power mode进入到hi speed mode需要keep LP-00状态一段时间

Hs-trail:表示送完1 st data后需要keep一段时间后才允许进入low power mode,进行下一轮数据传输。

soc端的控制的信号由黄色框圈出来:

Hs-settle:表示soc要等一段时间才去开始去parse “sync code”, 当抓到sync code后表示sensor已经进入了hi speed mode, 这个时候就可以sync data了。

注意:

1.每次EOT(end of trans)结束讯号后,都会进入low power mode,而不是sensor 工作后就一直处于hi speed mode。也就是每传一个package,都会走一遍上述的过程。

2.hs-settle为mclk/8 *n(这个n表示配置几个clk,对应code的话配置这个mipi_dev_attr_s->dphy)

当hs-settle的时间太长会压到data中的“sync code”,那么就会出现sync code parse不到,出现ecc  err. 又或者从data中parse到一个假的“sync code”,那么最后就会出现数据不太对,出现ecc err.

Ecc还有一种出现可能就是lane mapping 出错,当我们传输数据出现ecc err, 有可能就是传输short pack时,4 byte的short pack拼接的不对(详见CSI的数据包结构),导致出现ecc error.

3.如果hs-trail持续的太短(拉高的太快),有可能会压到最后面的data,所以会出现crc/wc(word count ) err.另外,如果hs -settle太大,也有可能hs-trail也会是错误的数据,所以出现wc, crc err,因此不一定是hs-trail的问题,得先确保前面的ecc/decode无误后再来调整hs-trail

一般排查流程如下:

 mipi-rx之软件篇

3.CSI-2(定义mipi-rx的数据包规则)

CSI-2 是針對攝像頭的數據協議, 規定了主機與外設通信的數據包格式。CSI-2 可以支持不同像素格式的圖像應用, 數據傳輸的最小粒度是字節。 為增加 CSI-2 的性能,可以選擇數據 Lane 的數量, CSI-2 協議規訂了發送端將像素數據打包成字節的機制, 並指明多個數據 Lane 分配和管理的方式。字節數據以數據包的形式組織,數據包在SoT 與 EoT 之間傳輸。 接收端根據協議解析相應的數據包, 恢復出原始的像素數據。

CSI-2 的數據包分為長包和短包兩種,包含有校驗碼,能進行誤碼糾正和錯誤檢測。長包和短包都是在 SoT 和 EoT 之間傳輸,在數據傳送的間隙, D-PHY 處於 LP 模式。 CSI-2數據包的傳輸機制如圖所示。 PH 和 PF 分別表示 Packet Header 和 Packet Footer。

3.1.一个frame的数据包结构

 mipi-rx之软件篇

3.2. 帧类型

    • 短帧:4 bytes (固定)

    • 长帧:6~65541 bytes (可变) 

3.2.1 短帧结构

一个short packet(pack head(PH))和pack footer(PF)的结构:

 mipi-rx之软件篇

  • 帧头部(4个字节)

    • 数据标识(DI) 1个字节

    • 帧数据- 2个字节 (长度固定为2个字节)

    • 错误检测(ECC) 1个字节

  • 帧大小

    • 长度固定为4个字节

3.2.2 长帧结构

 mipi-rx之软件篇

  • 帧头部(4个字节)(PH)

    • 数据标识(DI) 1个字节

    • 数据计数- 2个字节 (数据填充的个数)

    • 错误检测(ECC) 1个字节

  •数据填充(0~65535 字节)

    • 长度=WC*字节

  • 帧尾:校验和(2个字节)(PF)

  • 帧大小:

    • 4 + (0~65535) + 2 = 6 ~ 65541 字节

3.2.3 MIPI帧数据类型DI

 mipi-rx之软件篇

soc到外设发送的包类型

 mipi-rx之软件篇

外设到soc的数据包类型

 mipi-rx之软件篇

4. mipi支持的图像格式

MIPI Rx 共支持五種pixel資料格式的傳輸, 包含 YUV422-8bit、 YUV422-10bit、 RAW8、RAW10 和 RAW12。

  •     RGB格式:

    传统的红绿蓝格式,比如RGB565,RGB888,其16-bit数据格式为5-bit R + 6-bit G + 5-bit B。G多一位,原因是人眼对绿色比较敏感。

  •     YUV格式:

    luma (Y) + chroma (UV) 格式。YUV是指亮度参量和色度参量分开表示的像素格式,而这样分开的好处就是不但可以避免相互干扰,还可以降低色度的采样率而不会对图像质量影响太大。YUV是一个比较笼统地说法,针对它的具体排列方式,可以分为很多种具体的格式。

色度(UV)定义了颜色的两个方面─色调与饱和度,分别用CB和CR表示。其中,Cr反映了RGB输入信号红色部分与RGB信号亮度值之间的差异。而Cb反映的是RGB输入信号蓝色部分与RGB信号亮度值之间的差异。

主要的采样格式有YCbCr 4:2:0、YCbCr 4:2:2、YCbCr 4:1:1和 YCbCr 4:4:4。

  •     RAW data格式:

    RAW图像就是CMOS或者CCD图像感应器将捕捉到的光源信号转化为数字信号的原始数据。RAW文件是一种记录了数码相机传感器的原始信息,同时记录了由相机拍摄所产生的一些元数据(Metadata,如ISO的设置、快门速度、光圈值、白平衡等)的文件。RAW是未经处理、也未经压缩的格式,可以把RAW概念化为“原始图像编码数据”或更形象的称为“数字底片”。Raw data(Raw RGB)经过彩色插值就变成RGB。

 mipi-rx之软件篇

 5. 彩色深度(色彩位数)

    8位彩色,有256种深度。

    16位彩色:65,536种颜色。

    24位彩色:每种原色都有256个层次,它们的组合便有256*256*256种颜色。

    32位彩色:除了24位彩色的颜色外,额外的8位是储存重叠图层的图形资料(alpha透明度)。