zoukankan      html  css  js  c++  java
  • 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

     

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

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

        exit:LP00→LP10→LP11

     

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

     

    我们的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

    一般排查流程如下:

     

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

     

    3.2. 帧类型

        • 短帧:4 bytes (固定)

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

    3.2.1 短帧结构

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

     

      • 帧头部(4个字节)

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

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

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

      • 帧大小

        • 长度固定为4个字节

    3.2.2 长帧结构

     

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

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

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

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

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

        • 长度=WC*字节

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

      • 帧大小:

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

    3.2.3 MIPI帧数据类型DI

     

    soc到外设发送的包类型

     

    外设到soc的数据包类型

     

    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。

     

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

        8位彩色,有256种深度。

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

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

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

  • 相关阅读:
    mysql--SQL编程(关于mysql中的日期) 学习笔记2
    mysql--SQL编程(基础知识) 学习笔记1
    Geocoding java调用百度地图API v2.0 图文 实例( 解决102错误)
    java unicode转码为中文 实例
    spring hiberante 集成出现异常 java.lang.ClassNotFoundException: org.hibernate.engine.SessionFactoryImplementor
    [Spring学习笔记 7 ] Spring中的数据库支持 RowMapper,JdbcDaoSupport 和 事务处理Transaction
    [Spring学习笔记 6 ] Spring JDBC 详解
    ubuntu 连接windows远程桌面 &&rdesktop 退出全屏模式
    maven Missing artifact com.sun:tools:jar:1.5.0
    mysql 常用命令,连接数据库,查看建表语句,批量导入数据,批量更新数据,连接查询
  • 原文地址:https://www.cnblogs.com/fuzidage/p/14107768.html
Copyright © 2011-2022 走看看