mipi-rx之软件篇

mipi-rx之软件篇

原文链接: https://www.cnblogs.com/fuzidage/p/14107768.html

1.MIPI CSI2的发送和接收

img

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

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

? exit:LP00→LP10→LP11

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

img

2.5 时钟模式

  • 连续时钟模式:数据包传输间隔,clk lane 保持在高速模式;
  • 非连续时钟模式:数据包传输间隔,clk lane 进入 LP-11 状态,退出hi speed mode;

2.6 时序要求
在调试 DSI 或者 CSI 的时候, HS mode 下的几个时序非常重要:T_LPX,T_HS-SETTLE ≈ T_HS-PREPARE + T_HS-ZERO,T_HS-TRAIL,一般遵循的原则为:Host 端的 T_HS-SETTLE > Slave 端的 T_HS-SETTLE。

img

当要进行数据传输的时候,data lane 将会通过信号(SoT)退出停止状态,进入高速模式。过程如下:

TX Side RX Side
退出停止状态 ( LP-11 ) 检测停止状态
进入 HS-Rqst 状态 ( LP-01 ),并处于该状态的时间间隔为 TLPX 检测到 lane 从 LP-11 转变为 LP-01
进入 Bridge 状态 ( LP-00 ),并处于该状态的时间间隔为 THS-PREPARE 检测到 lane 从 LP-01 转变为 LP-00,间隔 TD-TERM-EN 时间之后将使能传输
同时退出低功耗模式,进入高速模式
处于 HS-0 状态,时长为 THS-ZERO 使能 HS-RX 并等待 THS-SETTLE,以忽略转换状态
开始从数据流中等待同步序列
时钟上升边缘插入 HS 同步序列 ‘00011101’
识别到同步序列 ‘00011101’
高速模式开始传输有效数据
接收到有效数据

2.8 End-of-Transmission ( EoT )过程

在数据完成传输时,通过结束传输(EoT)过程,数据通道退出高速模式并进入停止状态,这个过程状态变化如下:

TX Side RX Side
传输数据 接收到数据
在完成最后一个字节数据的传输之后,保持该状态的时间间隔为 THS-TRAIL
关闭 HS-TX,启用 LP-TX,并在 THS-EXIT一段时间内处于停止状态 ( LP-11 ) 检测到 lane 状态进入停止状态 ( LP-11 ),关闭传输功能
忽略 THS-SKIP一段时间内的 lane 变化,以忽略转换状态
检测有效数据的最后一次转换,确定最后一次有效数据并忽略包尾序列

接收器是如何判断数据将要开始传输了呢/em>

当出现LP11→LP01→LP00时,接收器将会判断,将会有数据达到,同时,使用示波器查看mipi波形,将会发现在PL00(THS-PREPARE)时会有一个小脉冲(峰刺),一般的,在这个小脉冲之后,接收器将会打开比较器(由于在THS-PREPARE会有这个小脉冲的存在,所以在接收器中,会通过设置接收器的settle time,避开这个小脉冲,在这个脉冲之后再打开比较器),准备接收数据。而HS-00011101则表示有效数据开始,同时数据的开头,将会有数据表明将要数据的数据量,所以mipi接收器将会按其数据量接收,直到接收完成。
每根 lane(data lane/clk lane)从 LP 模式切换到 HS 模式都会有 LP11→LP01→LP00 这样的一个时序,同时还要检查 HS-00011101 ,HS-00011101 主要是用于同步,只有前面正确采集到 00011101 ,才能保证 clk 和 data 相位一一对应。

mipi csi调试:
测量 sensor 有相应的 mipi 信号输出,但是主控并没有接收到数据,通过查看主控的 mipi 寄存器发现,mipi接收器还处于 LP 模式,这种情况一般是mipi没有检测到sensor发送的从 LP 进入 HS 的时序。此时可测量sensor 开始输出图像数据时,clk lane 是否有 LP11→LP01→LP00 这样的一个时序。同时,应该先开 mipi,sensor 再开始 mipi 数据传输
由于THS-PREPARE会有一个小脉冲的存在,所以,主控在接收mipi数据的时候,需要通过设置主控的settle time,这个时间需要在这个小脉冲之后,这样接收才不会有问题
当出现 sensor 有数据输出,但是主控没有接收成功,这个情况一般是 mipi 的时序问题,sensor 端的时序没有和主控端的配合好,这个时候,可以尝试的减小sensor端的THS-PREPARE,增大THS-ZERO和THS-TRAIL
由于一些主控的需求,在一帧数据完成之后,需要一定的时间才可以进行相应的ISP处理,当一帧传输完毕之后的LP11时间达不到主控ISP的时间要求导致ISP报错,可通过调节THS-TRAIL时间,以此得到ISP对帧间的时序长度要求

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的数据包结构:

img

? 包结构(4个字节)

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

? ?   WC (长度固定为2个字节)

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

? 包大小

? ?   长度固定为4个字节

3.2.2 pack footer(PF)的结构:

img

? 包头部(4个字节)(PH)

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

? ?   数据计数WC (2个字节 )(PH和PF之間的資料個數)

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

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

? ?  长度=WC*字节

? 包尾:校验和(2个字节)(PF)

长包 = 短包(包头) + 数据 + 包尾

? 包大小:

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

3.2.4 H-blanking & V-blanking

传输多个pack和传输一个pack时对应的图像如下, VVALID/HVALID/DVALID可以先把它想成是影像的同步訊號VSync/HSync/DE,而Data就是影像資料,以方便理解。

从图中可以看到,当水平同步讯号HVALID为Low的这段区间,剛好就是每行的Blanking间隔, 也就是H-blanking。

img

frame的封包示意图:

img

Data Identifier (DI) 为虚拟通道(VC, 2 bit)和资料类型(DT, 6 bit)组成。

3.2.5.1 VC(virtual channel)

可以看出MIPI最多可以輸入4组影像来源,其ID为0~3,且內容可以是任意的內容,下图就表示用virtual chn来传输不同格式的数据。

img

3.2.5.1 DT(data type)

Data Type目前定义多种资料形态,范围从0x000x3F,其中0x000x0F为短封包类型,0x10~0x3F为長封包类型,如下表:

img

soc到外设发送的包类型

img

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多一位,原因是人眼对绿色比较敏感。

格式 描述
RGB565 1. 每个像素用16位表示,RGB分量分别使用5位、6位、5位。2. 内存中排列(高字节->低字节):R R R R R G G G G G G B B B B B
RGB555 1. 每个像素用16位表示,RGB分量都使用5位(剩下1位不用)2. 内存中排列(高字节->低字节):X R R R R G G G G G B B B B B(X表示不用,可以忽略)
RGB24(RGB888) 1. 每个像素用24位表示,RGB分量各使用8位。在内存中RGB各分量的排列顺序为:BGR BGR BGR …2. 内存中排列(高字节->低字节):B B B B B B B B G G G G G G G G R R R R R R R R
ARGB32(ARGB8888) 1. 每个像素用32位表示,RGB分量各使用8位(剩下的8位用于表示Alpha通道值)2. 内存中排列(高字节->低字节):B B B B B B B B G G G G G G G G R R R R R R R R A A A A A A A A
    • ? YUV****格式:

YUV是一种色彩编码方法,是一种彩色编码系统,相对于RGB色彩空间,YUV传输带宽占用更低,传输数据不易出错。

Y’UV、YUV、YCbCr、YPbPr 几个概念其实是一回事儿。由于历史关系,Y’UV、YUV 主要是用在彩色电视中,用于模拟信号表示。YCbCr 是用在数字视频、图像的压缩和传输,如 MPEG、JPEG。今天大家所讲的 YUV 其实就是指 YCbCr。Y 表示亮度(luma),CbCr 表示色度(chroma)。

人眼的视觉特点是对亮度更敏感,对位置、色彩相对来说不敏感。所以在视频编码系统中为了降低带宽,可以保存更多的亮度信息(luma),保存较少的色差信息(chroma)。

luminance 亮度,luma 是在视频编码系统中指亮度值;

chrominance 色度,chroma 是在视频编码系统中指色度值。

Y’UV 设计的初衷是为了使彩色电视能够兼容黑白电视。对于黑白电视信号,没有色度信息也就是(UV),那么在彩色电视显示的时候只显示亮度信息。

YUV是一个比较笼统地说法,针对它的具体排列方式,可以分为很多种具体的格式。色度(UV)定义了颜色的两个方面─色调与饱和度,分别用CB和CR表示。其中,Cr反映了RGB输入信号红色部分与RGB信号亮度值之间的差异。而Cb反映的是RGB输入信号蓝色部分与RGB信号亮度值之间的差异。

YUV采样格式:(subsamping)

原则:在数字图像中,

(1) 每一个图形像素都要包含 luma(亮度)值;

(2)几个图形像素共用一个 Cb + Cr 值,一般是 2、4、8 个像素。

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

?YUV 444 采样

全采样,对每个像素点的的YUV分量都进行采样,这样的三个分量信息量完整

假设4*4像素,采样格式如下:

[y u v] [y u v] [y u v] [y u v]
[y u v] [y u v] [y u v] [y u v]
[y u v] [y u v] [y u v] [y u v]
[y u v] [y u v] [y u v] [y u v]

那么19201080文件的大小:19201080*3(B),那么一个像素对应3个字节

?YUV 422 采样

?部分采样,可节省1/3存储空间和1/3的数据传输量。UV分量是Y分量采样的一半,Y分量和UV 分量按照2 : 1的比例采样。如果水平方向有10个像素点,那么采样了10个Y分量,而只采样了5个UV分量。其中,每采样过一个像素点,都会采样其Y分量,而U、V分量就会间隔一个采集一个

假设4*4像素,采样格式如下:

[y u] [y v] [y u] [y v]
[y v] [y u] [y v] [y u]
[y u] [y v] [y u] [y v]
[y v] [y u] [y v] [y u]

19201080文件的大小:19201080+192010800.5+192010800.5(B),那么UV的数量减少了一半,相对于YUV444空间节省了1/3

?YUV 420 采样

?部分采样,可节省1/2存储空间和1/2的数据传输量。YUV 420采样,并不是指只采样U分量而不采样V分量。而是指,在每一行扫描时,只扫描一种色度分量(U或者V)和Y分量按照2 : 1的方式采样。比如,第一行扫描时,YU 按照 2 : 1的方式采样,那么第二行扫描时,YV分量按照 2:1的方式采样。对于每个色度分量来说,它的水平方向和竖直方向的采样和Y分量相比都是2:1 。其实yuv420的取名方式不是很高明,更确切的命名为yuv420yuv402,也就是第一行只有U,而第二行只有V

假设4*4像素,采样格式如下:

[y u] [y] [y u] [y]
[y v] [y] [y v] [y]
[y u] [y] [y u] [y]
[y v] [y] [y v] [y]

19201080文件的大小:19201080+192010800.25+192010800.25(B)相对于YUV444空间节省1/2,因此也是比较主流的采样方式。

YUV存储格式

    • ? RAW data****格式:

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

img
5. mipi CSI传输格式:

raw 8:

img

raw 12:

img
6. 彩色深度(色彩位数)

? 8位彩色,有256种深度。

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

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

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

7. 图像解析度/分辨率(Resolution)
1280 * 720 = 921600 1M 100万像素 720P H65 sensor
1920 * 1080 = 2073600 2M 200万像素 1080P Imx307/imx327 sensor
2560 * 1440 = 36864002560 * 1600 = 40960002592 * 1944 = 5038848 4M/5M 400万像素500万像素 2K Imx335/sc4210 sensor
3840 * 2160 = 8294400 8M 800万像素 4K Imx334 sensor

END

来源:jdyyoung

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年9月13日
下一篇 2021年9月13日

相关推荐