跳转至

MIPI 使用指南

前言

产品版本

与本文档相对应的产品版本如下。

产品名称

产品版本

Hi3519D

V500

Hi3516D

V500

Hi3516C

V608

Hi3516C

V610

Hi3511C

V100

说明:

  • 未有特殊说明,Hi3516DV500与Hi3519DV500、Hi3516CV608与Hi3516CV610内容完全一致。
  • Hi3516CV610、Hi3511CV100不支持MIPI_TX。

读者对象

本文档(本指南)主要适用于以下工程师:

  • 技术支持工程师
  • 软件开发工程师

符号约定

在本文中可能出现下列标志,它们所代表的含义如下。

符号

说明

表示如不避免则将会导致死亡或严重伤害的具有高等级风险的危害。

表示如不避免则可能导致死亡或严重伤害的具有中等级风险的危害。

表示如不避免则可能导致轻微或中度伤害的具有低等级风险的危害。

用于传递设备或环境安全警示信息。如不避免则可能会导致设备损坏、数据丢失、设备性能降低或其它不可预知的结果。

“须知”不涉及人身伤害。

对正文中重点信息的补充说明。

“说明”不是安全警示信息,不涉及人身、设备及环境伤害信息。

修订记录

修订记录累积了每次文档更新的说明。最新版本的文档包含以前所有文档版本的更新内容。

文档版本

发布日期

修改说明

00B01

2026-06-30

第1次临时版本发布。

MIPI使用指南

概述

MIPI_RX通过低电压差分信号接收原始视频数据,将接收到的串行差分信号(serial differential signal)转化为DC(Digital Camera)时序后传递给下一级模块VICAP(Video Capture)

MIPI_RX支持MIPI D-PHY、LVDS(Low-Voltage Differential Signal)、HiSPI(High-Speed Serial Pixel Interface)等串行视频信号输入,同时兼容DC视频接口。

MIPI_TX 接口的应用层支持MIPI DSI、MIPI CSI-2协议的发送,物理层支持MIPI D-PHY-V1.2串行输出。

The Display Serial Interface(DSI)接口是移动行业处理器接口联盟(Mobile Industry Processor Interface alliance, MIPI联盟)定义的一种高速串行接口,主要用于处理器和显示模块之间的连接。Camera Serial Interface 2(CSI-2)是MIPI联盟定义的另一种高速接口,主要用于图像采集模块和处理器之间的连接。

说明:

Hi3516CV610、Hi3511CV100不支持MIPI_TX。

重要概念

  • MIPI

    MIPI的全称是Mobile Industry Processor Interface(移动行业处理器接口),本文描述的MIPI接口特指物理层使用D-PHY传输规范,协议层使用CSI-2的通信接口。

  • LVDS

    LVDS的全称是Low Voltage differential Signaling(低压差分信号),通过同步码区分消隐区和有效数据。

  • Lane

    用于连接发送端和接收端的一对高速差分线,即可以是时钟Lane,也可以是数据Lane。

  • 同步码

    MIPI接口使用CSI-2里面的短包进行同步,LVDS使用同步码区分有效数据和消隐区。LVDS有两种同步方式:

    • 使用SOF/EOF表示帧起始和结束,使用SOL/EOL表示行的起始和结束。同步方式如图1所示。

      图 1 SOF/EOF/SOL/EOL同步方式

    • 使用SAV(invalid) EAV(invalid)表示消隐区的无效数据开始和结束,使用SAV(valid) EAV(valid)表示有效像素数据的开始和结束。

      每个同步码由4个字段组成,每个字段的位宽与像素数据位宽保持一致。前3个字段为固定基准码字,第4个字段由sensor厂家确定。

      由于不同的sensor可能会有不同的同步码,所以需要根据sensor配置同步码。同步方式如图2所示。

      图 2 SAV/EAV同步方式

  • DOL

    DOL的全称是Digital Overlap,指SONY的WDR功能。

功能描述

MIPI_RX是一个支持多种差分视频输入接口的采集单元,通过combo-PHY接收MIPI/LVDS/sub-LVDS/HiSPI/DC接口的数据,通过不同的功能模式配置,MIPI_RX可以支持多种速度和分辨率的数据传输需求,支持多种外部输入设备。最大支持Lane个数如表1所示。

表 1 最大支持Lane的个数

解决方案

最大支持lane数

Hi3519DV500

MIPI_RX最大支持8Lane MIPI输入或8Lane LVDS输入。

Hi3516DV500

MIPI_RX最大支持4Lane MIPI输入或4Lane LVDS输入。

Hi3516CV610

MIPI_RX最大支持4Lane MIPI输入或4Lane LVDS输入。

Hi3511CV100

MIPI_RX最大支持4Lane MIPI输入。

MIPI_RX能同时对接多个sensor,最多对接sensor的数目如表2所示。

表 2 最大对接sensor或mipi csi发送器数目

解决方案

对接sensor或mipi csi发送器数目

Hi3519DV500

4

Hi3516DV500

2

Hi3516CV610

2

Hi3511CV100

1

MIPI_RX最大能同时对接不同数量的sensor或mipi csi发送器,每个sensor或mipi csi发送器需要的Lane也不尽相同。因此用户需要确定MIPI_RX的LANE分布模式。具体的Lane分布模式请参见表3。

表 3 MIPI_RX Lane分布模式

解决方案

Mode

DEV0

DEV1

DEV2

DEV3

Hi3519DV500

0

L0~L7

N

N

N

1

L0~L3

N

L4~L7

N

2

L0~L3

N

L4,L6

L5,L7

3

L0,L2

L1,L3

L4,L6

L5,L7

4

L0,L2

L1,L3

L4~L7

N

Hi3516DV500

0

L0-L3

N

N

N

1

L0, L2

L1, L3

N

N

Hi3516CV610

0

L0-L3

N

N

N

1

L0, L2

L1, L3

N

N

Hi3511CV100

0

L0~L3

N

N

N

MIPI_RX具体的Lane管脚连接请参见表4。

表 4 MIPI_RX Lane管脚关系图

解决方案

LANE

MIPI0

MIPI1

MIPI2

MIPI3

Hi3519DV500

Lane0

√

        

Lane1

√

√

     

Lane2

√

        

Lane3

√

√

     

Lane4

√

  

√

  

Lane5

√

  

√

√

Lane6

√

  

√

  

Lane7

√

  

√

√

Hi3516DV500/Hi3516CV610

Lane0

√

        

Lane1

√

√

     

Lane2

√

        

Lane3

√

√

     

Hi3511CV100

Lane0

√

        

Lane1

√

        

Lane2

√

        

Lane3

√

        

功能宏配置指南

MIPI_RX提供功能宏。配置方式如下:

  • 配置路径:smp/a7_linux/source、smp/a7_linux/source/out/include
  • 配置文件:cfg.mak、autoconf.h

例如:

LVDS默认配置:

  • cfg.mak: export CONFIG_OT_MIPIRX_LVDS_SUPPORT=y
  • autoconf.h: #define CONFIG_OT_MIPIRX_LVDS_SUPPORT 1

若想关掉LVDS功能:

  • 把cfg.mak里改为# CONFIG_OT_MIPIRX_LVDS_SUPPORT is not set(注意前面加#)
  • 把autoconf.h里#define CONFIG_OT_MIPIRX_LVDS_SUPPORT 1整行删除。

  • CONFIG_OT_MIPIRX_LVDS_SUPPORT

CONFIG_OT_MIPIRX_LVDS_SUPPORT

【描述】

配置LVDS功能宏。

【解决方案差异】

解决方案

是否支持

Hi3519DV500

不支持

Hi3516CV610

支持

Hi3511CV100

不支持

【注意】

确认不需要支持LVDS场景时,可将此功能宏去使能,可以带来code size优化,如果不需要优化,可忽略。

API参考

MIPI_RX提供对接sensor时序的功能。提供ioctl接口,可用的命令如下:

MIPI Tx提供对接显示屏、级联的功能。提供ioctl接口,可用的命令如下:

OT_MIPI_SET_DEV_ATTR

【描述】

设置MIPI_RX设备属性。

【语法】

int ioctl (fd, OT_MIPI_SET_DEV_ATTR, combo_dev_attr);

【参数】

combo_dev_attr_t类型的指针。

【返回值】

返回值

描述

0

成功。

-1

失败,其值参见错误码。

【解决方案差异】

解决方案

是否支持

Hi3519DV500

支持

Hi3516CV610

支持

Hi3511CV100

支持

【需求】

头文件:ot_mipi_rx.h

【注意】

  • 除了配置OT_MIPI_SET_DEV_ATTR之外,还需要配置以下接口。
  • 设置模式:接口为OT_MIPI_SET_HS_MODE。
  • 打开MIPI时钟:接口为OT_MIPI_ENABLE_MIPI_CLOCK。
  • 复位MIPI:接口为OT_MIPI_RESET_MIPI。
  • 打开sensor的时钟:接口为OT_MIPI_ENABLE_SENSOR_CLOCK。
  • 复位sensor:接口为OT_MIPI_RESET_SENSOR。
  • 撤销复位MIPI:接口为OT_MIPI_UNRESET_MIPI。
  • 撤销复位sensor:接口为OT_MIPI_UNRESET_SENSOR。
  • 推荐的配置流程如下:

    1. 设置模式。
    2. 打开多路MIPI时钟。
    3. 复位多路sensor所对接的MIPI_RX。
    4. 打开多路sensor所连接的时钟。
    5. 复位对接的所有sensor。
    6. 配置MIPI_RX设备属性。
    7. 撤销复位多路sensor所对接的MIPI_RX。
    8. 撤销复位对接的所有sensor。
  • 推荐的退出流程如下:

    1. 复位多路对接的sensor。
    2. 关闭多路sensor所连接的时钟。
    3. 复位多路sensor所对接的MIPI_RX。
    4. 清除多路sensor所对接的MIPI_RX设备的配置。
    5. 关闭多路MIPI时钟。
  • 操作SENSOR复位信号线和时钟信号线会对所连接到该信号线的所有sensor都产生效果。

【相关数据类型及接口】

OT_MIPI_SET_HS_MODE

【描述】

设置MIPI_RX的Lane分布模式。

【语法】

int ioctl(fd, OT_MIPI_SET_HS_MODE, hs_mode);

【参数】

lane_divide_mode_t类型的指针。

【返回值】

返回值

描述

0

成功。

-1

失败,其值参见错误码。

【解决方案差异】

解决方案

是否支持

Hi3519DV500

支持

Hi3516CV610

支持

Hi3511CV100

支持

【需求】

头文件:ot_mipi_rx.h

【注意】

在接多路sensor输入时,建议在初始时根据硬件连接对整个lane分布进行全局的lane分布模式的设定,在之后的多路sensor采集过程中不能再调用此接口,否则可能对其他sensor采集有影响。

OT_MIPI_SET_PHY_CMVMODE

【描述】

设置共模电压模式。

【语法】

int ioctl(fd, OT_MIPI_SET_PHY_CMVMODE, phy_cmv);

【参数】

phy_cmv_t类型的指针。

【返回值】

返回值

描述

0

成功。

-1

失败,其值参见错误码。

【解决方案差异】

解决方案

是否支持

Hi3519DV500

支持

Hi3516CV610

支持

Hi3511CV100

不需调用,内部实现为空;如果调用会打印no effect,返回成功。

【需求】

头文件:ot_mipi_rx.h

【注意】

无。

OT_MIPI_RESET_SENSOR

【描述】

复位sensor。

【语法】

int ioctl(fd, OT_MIPI_RESET_SENSOR, sensor);

【参数】

sns_rst_source_t SENSOR复位信号线编号。

【返回值】

返回值

描述

0

成功。

-1

失败,其值参见错误码。

【解决方案差异】

解决方案

是否支持

Hi3519DV500

支持

Hi3516CV610

支持

Hi3511CV100

不需调用,内部实现为空;如果调用会打印no effect,返回成功。

【需求】

头文件:ot_mipi_rx.h

【注意】

无。

OT_MIPI_UNRESET_SENSOR

【描述】

撤销复位sensor。

【语法】

int ioctl(fd, OT_MIPI_UNRESET_SENSOR, sensor);

【参数】

sns_rst_source_t SENSOR复位信号线编号。

【返回值】

返回值

描述

0

成功。

-1

失败,其值参见错误码。

【解决方案差异】

解决方案

是否支持

Hi3519DV500

支持

Hi3516CV610

支持

Hi3511CV100

不需调用,内部实现为空;如果调用会打印no effect,返回成功。

【需求】

头文件:ot_mipi_rx.h

【注意】

无。

OT_MIPI_RESET_MIPI

【描述】

复位MIPI_Rx。

【语法】

int ioctl(fd, OT_MIPI_RESET_MIPI, mipi);

【参数】

combo_dev_t设备号。

【返回值】

返回值

描述

0

成功。

-1

失败,其值参见错误码。

【解决方案差异】

解决方案类型

是否支持

Hi3519DV500

支持

Hi3516CV610

支持

Hi3511CV100

支持

【需求】

头文件:ot_mipi_rx.h

【注意】

无。

OT_MIPI_UNRESET_MIPI

【描述】

撤销复位MIPI_Rx。

【语法】

int ioctl(fd, OT_MIPI_UNRESET_MIPI, mipi);

【参数】

combo_dev_t设备号。

【返回值】

返回值

描述

0

成功。

-1

失败,其值参见错误码。

【解决方案差异】

解决方案

是否支持

Hi3519DV500

支持

Hi3516CV610

支持

Hi3511CV100

支持

【需求】

头文件:ot_mipi_rx.h

【注意】

无。

OT_MIPI_ENABLE_MIPI_CLOCK

【描述】

打开MIPI设备的时钟。

【语法】

int ioctl(fd, OT_MIPI_ENABLE_MIPI_CLOCK, clock);

【参数】

combo_dev_t 设备号。

【返回值】

返回值

描述

0

成功。

-1

失败,其值参见错误码。

【解决方案差异】

解决方案

是否支持

Hi3519DV500

支持

Hi3516CV610

支持

Hi3511CV100

支持

【需求】

头文件:ot_mipi_rx.h

【注意】

无。

OT_MIPI_DISABLE_MIPI_CLOCK

【描述】

关闭MIPI设备的时钟。

【语法】

int ioctl(fd, OT_MIPI_DISABLE_MIPI_CLOCK, mipi);

【参数】

combo_dev_t 设备号。

【返回值】

返回值

描述

0

成功。

-1

失败,其值参见错误码。

【解决方案差异】

解决方案

是否支持

Hi3519DV500

支持

Hi3516CV610

支持

Hi3511CV100

支持

【需求】

头文件:ot_mipi_rx.h

【注意】

无。

OT_MIPI_ENABLE_SENSOR_CLOCK

【描述】

打开sensor的时钟。

【语法】

int ioctl(fd, OT_MIPI_ENABLE_SENSOR_CLOCK, clock);

【参数】

sensor的时钟设备源编号。

【返回值】

返回值

描述

0

成功。

-1

失败,其值参见错误码。

【解决方案差异】

解决方案

是否支持

Hi3519DV500

支持

Hi3516CV610

支持

Hi3511CV100

不需调用,内部实现为空;如果调用会打印no effect,返回成功。

【需求】

头文件:ot_mipi_rx.h

【注意】

无。

OT_MIPI_DISABLE_SENSOR_CLOCK

【描述】

关闭sensor的时钟。

【语法】

int ioctl(fd, OT_MIPI_DISABLE_SENSOR_CLOCK, sensor);

【参数】

sensor的时钟设备源编号。

【返回值】

返回值

描述

0

成功。

-1

失败,其值参见错误码。

【解决方案差异】

解决方案

是否支持

Hi3519DV500

支持

Hi3516CV610

支持

Hi3511CV100

不需调用,内部实现为空;如果调用会打印no effect,返回成功。

【需求】

头文件:ot_mipi_rx.h

【注意】

无。

OT_MIPI_SET_EXT_DATA_TYPE

【描述】

设置MIPI扩展DATA TYPE的属性。

【语法】

int ioctl(fd, OT_MIPI_SET_EXT_DATA_TYPE, hal_type);

【参数】

ext_data_type_t类型的指针。

【返回值】

返回值

描述

0

成功。

-1

失败,其值参见错误码。

【解决方案差异】

解决方案

是否支持

Hi3519DV500

支持

Hi3516CV610

支持

Hi3511CV100

不需调用,内部实现为空;如果调用会打印no effect,返回成功。

【需求】

头文件:ot_mipi_rx.h

【注意】

  • 该接口主要用于接收sensor内嵌数据,请注意设备属性中的宽高需要加上内嵌数据的宽高(有效像素宽高+内嵌数据宽高)。
  • 该接口只适用于MIPI接入;LVDS输入配置本接口可能导致异常。
  • 需要先配置设备属性(详见OT_MIPI_SET_DEV_ATTR)后再配置该接口。

OT_MIPI_SET_PHY_SPEED_MODE

【描述】

设置设备PHY速率模式。

【语法】

int ioctl(fd, OT_MIPI_SET_PHY_SPEED_MODE, speed_mode);

【参数】

phy_speed_t 类型的指针。

【返回值】

返回值

描述

0

成功。

-1

失败,并设置errno

【解决方案差异】

解决方案

是否支持

Hi3519DV500

支持

Hi3516CV610

不支持

Hi3511CV100

不支持

【需求】

头文件:ot_mipi_rx.h

【注意】

  • 此接口用于单lane速率大于1.5Gbps时使用,默认小于等于1.5Gbps无需配置。
  • 该接口需要在OT_MIPI_SET_DEV_ATTR设置设备属性后调用。

OT_MIPI_TX_SET_DEV_CFG

【描述】

设置MIPI_TX设备的属性。

【语法】

int ioctl(fd, OT_MIPI_TX_SET_DEV_CFG, dev_cfg);

【参数】

MIPI Tx设备属性。

【返回值】

返回值

描述

0

成功。

-1

失败,并设置errno。

【解决方案差异】

解决方案

是否支持

Hi3519DV500

支持

Hi3516CV610

不支持

Hi3511CV100

不支持

【需求】

头文件:ot_mipi_tx.h

【注意】

  • 必须在执行OT_MIPI_TX_ENABLE前调用此接口。
  • 非连续时钟相比于连续时钟带宽要求会略高,因此Hi3519DV500上,配置非连续时钟可能达不到4K30时序。
  • 执行该接口后,MIPI_TX将默认设置为LP(Lower Power)模式,LP时钟设置为:关闭。

OT_MIPI_TX_SET_CMD

【描述】

设置发送给MIPI_TX设备的命令数据。

【语法】

int ioctl(fd, OT_MIPI_TX_SET_CMD, cmd_info);

【参数】

发送给MIPI Tx设备的命令信息。

【返回值】

返回值

描述

0

成功。

-1

失败,并设置errno。

【解决方案差异】

解决方案

是否支持

Hi3519DV500

支持

Hi3516CV610

不支持

Hi3511CV100

不支持

【需求】

头文件:ot_mipi_tx.h

【注意】

  • 在执行OT_MIPI_TX_ENABLE后,调用此接口,存在概率写失败的情况。
  • 必须在执行OT_MIPI_TX_SET_DEV_CFG后,即配置设备后调用此接口。
  • 此接口执行成功与否依赖硬件或lane链路的连通性,连通性异常,则返回失败。

OT_MIPI_TX_GET_CMD

【描述】

用于从外围设备读取信息。

【语法】

int ioctl(fd, OT_MIPI_TX_GET_CMD, get_cmd_info);

【参数】

详见get_cmd_info_t结构体说明。

【返回值】

返回值

描述

0

成功。

-1

失败,并设置errno。

【解决方案差异】

解决方案

是否支持

Hi3519DV500

支持

Hi3516CV610

不支持

Hi3511CV100

不支持

【需求】

头文件:ot_mipi_tx.h

【注意】

  • 在执行OT_MIPI_TX_ENABLE后,调用此接口,存在概率读失败的情况。
  • 必须在执行OT_MIPI_TX_SET_DEV_CFG后,即配置设备后调用此接口。
  • 此接口执行成功与否依赖硬件或lane链路的连通性,连通性异常,则返回失败。

OT_MIPI_TX_ENABLE

【描述】

使能MIPI_TX设备。

【语法】

int ioctl(fd, OT_MIPI_TX_ENABLE, NULL);

【参数】

无。

【返回值】

返回值

描述

0

成功。

-1

失败,并设置errno。

【解决方案差异】

解决方案

是否支持

Hi3519DV500

支持

Hi3516CV610

不支持

Hi3511CV100

不支持

【需求】

头文件:ot_mipi_tx.h

【注意】

  • 使能前,必须调用OT_MIPI_TX_SET_DEV_CFG对设备进行配置。
  • 此接口调用后MIPI_TX将工作于HS模式(High Speed),LP时钟设置为:打开。

OT_MIPI_TX_DISABLE

【描述】

禁用MIPI_TX设备。

【语法】

int ioctl(fd, OT_MIPI_TX_DISABLE, NULL);

【参数】

无。

【返回值】

返回值

描述

0

成功。

-1

失败,并设置errno。

【解决方案差异】

解决方案

是否支持

Hi3519DV500

支持

Hi3516CV610

不支持

Hi3511CV100

不支持

【需求】

头文件:ot_mipi_tx.h

【注意】

  • 此接口调用后MIPI_TX将工作于LP模式(Lower Power),LP时钟设置为:关闭。
  • 设备禁用后需要使用OT_MIPI_TX_SET_DEV_CFG重新设置设备属性,才可使能设备。

OT_MIPI_TX_SET_PN_SWAP

【描述】

配置MIPI_TX配置PN互换。

【语法】

int ioctl(fd, OT_MIPI_TX_SET_PN_SWAP, pn_swap);

【参数】

详见combo_dev_pn_swap_t结构体说明。

【返回值】

返回值

描述

0

成功。

-1

失败,并设置errno。

【解决方案差异】

解决方案

是否支持

Hi3519DV500

支持

Hi3516CV610

不支持

Hi3511CV100

不支持

【需求】

头文件:ot_mipi_tx.h

【注意】

数据类型

MIPI_RX相关数据类型定义如下:

OT_MIPI_IOC_MAGIC

【说明】

MIPI_RX ioctl命令的幻数。

【定义】

#define OT_MIPI_IOC_MAGIC   'm'

【成员】

无

【解决方案差异】

无。

【注意事项】

无。

【相关数据类型及接口】

无

combo_dev_t

【说明】

MIPI_RX设备号。

【定义】

typedef unsigned int combo_dev_t;

【解决方案差异】

解决方案

MIPI设备范围

Hi3519DV500

[0, MIPI_RX_MAX_DEV_NUM)

Hi3516CV610

[0, MIPI_RX_MAX_DEV_NUM)

Hi3511CV100

[0, MIPI_RX_MAX_DEV_NUM)

【注意事项】

无。

【相关数据类型及接口】

SNS_MAX_RST_SOURCE_NUM

【说明】

sensor的复位信号线个数。

【定义】

#define SNS_MAX_RST_SOURCE_NUM    4

【解决方案差异】

解决方案

SENSOR复位信号线数目

Hi3519DV500

4

Hi3516DV500

2

Hi3516CV610

2

Hi3511CV100

不支持

【注意事项】

无。

【相关数据类型及接口】

无

SNS_MAX_CLK_SOURCE_NUM

【说明】

sensor的时钟信号线个数。

【定义】

#define SNS_MAX_CLK_SOURCE_NUM    4

【解决方案差异】

解决方案

SENSOR时钟信号线数目

Hi3519DV500

4

Hi3516DV500

2

Hi3516CV610

2

Hi3511CV100

不支持

【注意事项】

无

【相关数据类型及接口】

无

sns_rst_source_t

【说明】

sensor的复位信号线编号,软件上称为sensor的复位源。

【定义】

typedef unsigned int sns_rst_source_t;

【解决方案差异】

解决方案

SENSOR复位设备范围

Hi3519DV500

[0, SNS_MAX_RST_SOURCE_NUM)

Hi3516CV610

[0, SNS_MAX_RST_SOURCE_NUM)

Hi3511CV100

不支持

【注意事项】

每条sensor复位信号线可以接两个sensor,用户需要根据板子的连线确认sensor复位信号线编号。不同的芯片的sensor复位信号线数目请参考取值范围。

【相关数据类型及接口】

无。

sns_clk_source_t

【说明】

sensor的时钟信号线编号,软件上称为SENSOR的时钟源。

【定义】

typedef unsigned int sns_clk_source_t;

【解决方案差异】

解决方案

SENSOR时钟设备范围

Hi3519DV500

[0, SNS_MAX_CLK_SOURCE_NUM)

Hi3516CV610

[0, SNS_MAX_CLK_SOURCE_NUM)

Hi3511CV100

不支持

【注意事项】

每条sensor时钟信号线可以接两个sensor,用户需要根据板子的连线确认sensor时钟信号线编号。不同的芯片的sensor复位信号线数目请参考取值范围。

【相关数据类型及接口】

MIPI_RX_MAX_DEV_NUM

【说明】

MIPI_RX支持的设备数。

【定义】

#define MIPI_RX_MAX_DEV_NUM        4

【解决方案差异】

解决方案

MIPI_RX支持的设备数

Hi3519DV500

4

Hi3516DV500

2

Hi3516CV610

2

Hi3511CV100

1

【注意事项】

Hi3519DV500支持多个MIPI_RX设备同时使用。

【相关数据类型及接口】

无

COMBO_MAX_LANE_NUM

【说明】

MIPI_RX的Lane总数目。

【定义】

#define COMBO_MAX_LANE_NUM      8

【解决方案差异】

解决方案

MIPI_RX的Lane总数目

Hi3519DV500

8

Hi3516DV500

4

Hi3516CV610

4

Hi3511CV100

4

【注意事项】

无

【相关数据类型及接口】

无

【说明】

MIPI_RX一个link的Lane数。

【定义】

#define MAX_LANE_NUM_PER_LINK   2

【解决方案差异】

无

【注意事项】

这里的link是软件概念,软件上把一个逻辑的link拆分成了2个软件的link。

【相关数据类型及接口】

无

MIPI_LANE_NUM

【说明】

MIPI_RX的MIPI设备支持的最大Lane数。

【定义】

#define MIPI_LANE_NUM           8

【解决方案差异】

解决方案

MIPI_RX的MIPI设备支持的最大Lane数

Hi3519DV500

8

Hi3516DV500

4

Hi3516CV610

4

Hi3511CV100

4

【注意事项】

无

【相关数据类型及接口】

无

LVDS_LANE_NUM

【说明】

MIPI_RX的LVDS设备支持的最大Lane数。

【定义】

#define LVDS_LANE_NUM           8

【解决方案差异】

解决方案

MIPI_RX的LVDS设备支持的最大Lane数

Hi3519DV500

8

Hi3516DV500

4

Hi3516CV610

4

Hi3511CV100

不支持

【注意事项】

无。

【相关数据类型及接口】

无。

WDR_VC_NUM

【说明】

定义最多支持的Virtual Channel数量。

【定义】

#define WDR_VC_NUM          4

【解决方案差异】

无。

【注意事项】

无。

【相关数据类型及接口】

无。

SYNC_CODE_NUM

【说明】

定义LVDS每个Virtual Channel的同步码数量

【定义】

#define SYNC_CODE_NUM           4

【解决方案差异】

无。

【注意事项】

无。

【相关数据类型及接口】

无。

MAX_EXT_DATA_TYPE_NUM

【说明】

定义扩展DATA TYPE的数量。

【定义】

#define MAX_EXT_DATA_TYPE_NUM   3

【解决方案差异】

无。

【注意事项】

无。

【相关数据类型及接口】

ext_data_type_t

lane_divide_mode_t

【说明】

MIPI_RX的Lane分布。

【定义】

typedef enum {
    LANE_DIVIDE_MODE_0 = 0,  /* 8lane */
    LANE_DIVIDE_MODE_1 = 1,  /* 4lane + 4lane */
    LANE_DIVIDE_MODE_2 = 2,  /* 4lane + 2lane +2lane */
    LANE_DIVIDE_MODE_3 = 3,  /* 2lane + 2lane + 2lane + 2lane */
    LANE_DIVIDE_MODE_4 = 4,  /* 2lane + 2lane + 4lane */
    LANE_DIVIDE_MODE_BUTT
} lane_divide_mode_t;

【解决方案差异】

解决方案

MIPI_RX的Lane分布

Hi3519DV500

[LANE_DIVIDE_MODE_0, LANE_DIVIDE_MODE_4]

Hi3516DV500

[LANE_DIVIDE_MODE_0, LANE_DIVIDE_MODE_1]

Hi3516CV610

[LANE_DIVIDE_MODE_0, LANE_DIVIDE_MODE_1]

Hi3511CV100

[LANE_DIVIDE_MODE_0, LANE_DIVIDE_MODE_0]

【注意事项】

  • 只有MIPI需要设置Lane的分布。

  • Hi3516DV500、Hi3516CV610和Hi3511CV100中,LANE_DIVIDE_MODE_0表示4lane,LANE_DIVIDE_MODE_1表示 2lane + 2lane接入。

【相关数据类型及接口】

OT_MIPI_SET_HS_MODE

input_mode_t

【说明】

MIPI_RX输入接口类型

【定义】

typedef enum {
    INPUT_MODE_MIPI = 0x0,                       /* mipi */
    INPUT_MODE_SUBLVDS = 0x1,                    /* SUB_LVDS */
    INPUT_MODE_LVDS = 0x2,                       /* LVDS */
    INPUT_MODE_HISPI = 0x3,                      /* HISPI */
    INPUT_MODE_BUTT
} input_mode_t;

【解决方案差异】

无。

【注意事项】

无。

【相关数据类型及接口】

无。

mipi_data_rate_t

【说明】

MIPI_RX输入速率。

【定义】

typedef enum 
{
    MIPI_DATA_RATE_X1 = 0,         /* output 1 pixel per clock */
    MIPI_DATA_RATE_X2 = 1,         /* output 2 pixel per clock */
    MIPI_DATA_RATE_BUTT
} mipi_data_rate_t;

【解决方案差异】

解决方案

是否支持MIPI_DATA_RATE_X2

Hi3519DV500

不支持

Hi3516CV610

不支持

Hi3511CV100

不支持

【注意事项】

无。

【相关数据类型及接口】

无。

img_rect_t

【说明】

Mipi crop属性。

【定义】

typedef struct
{
    int x;
    int y;
    unsigned int width;
    unsigned int height;
} img_rect_t;

【成员】

成员名称

描述

x

Crop 起始位置x。

y

Crop 起始位置y。

width

Crop 宽度,单位:像素。

height

Crop 高度,单位:像素。

【解决方案差异】

无。

【注意事项】

无。

【相关数据类型及接口】

无。

data_type_t

【说明】

传输的数据类型。

【定义】

typedef enum
{
    DATA_TYPE_RAW_8BIT = 0,
    DATA_TYPE_RAW_10BIT,
    DATA_TYPE_RAW_12BIT,
    DATA_TYPE_RAW_14BIT,
    DATA_TYPE_RAW_16BIT,
    DATA_TYPE_YUV420_8BIT_NORMAL,
    DATA_TYPE_YUV420_8BIT_LEGACY,
    DATA_TYPE_YUV422_8BIT,
    DATA_TYPE_YUV422_PACKED,
    DATA_TYPE_BUTT
} data_type_t;

【成员】

成员名称

描述

DATA_TYPE_RAW_8BIT

8BIT的RAW数据。

DATA_TYPE_RAW_10BIT

10BIT的RAW数据。

DATA_TYPE_RAW_12BIT

12BIT的RAW数据。

DATA_TYPE_RAW_14BIT

14BIT的RAW数据。

DATA_TYPE_RAW_16BIT

16BIT的RAW数据。

DATA_TYPE_YUV420_8BIT_NORMAL

8BIT的YUV420数据,NORMAL模式。

DATA_TYPE_YUV420_8BIT_LEGACY

8BIT的YUV420数据,LEGACY模式。

DATA_TYPE_YUV422_8BIT

8BIT的YUV422数据。

DATA_TYPE_YUV422_PACKED

YUV422数据在MIPI按16bit raw打包接收。

【解决方案差异】

解决方案

支持的数据类型

Hi3519DV500

全部支持

Hi3516CV610

除了DATA_TYPE_RAW_16BIT,DATA_TYPE_YUV420_8BIT_LEGACY,DATA_TYPE_YUV422_PACKED不支持,其余都支持

Hi3511CV100

仅支持DATA_TYPE_RAW_16BIT,DATA_TYPE_YUV422_8BIT

【注意事项】

对于Hi3511CV100,VI的YUV420、YUV422在mipi中要配置成RAW16。

【相关数据类型及接口】

无。

ext_data_type_t

【说明】

MIPI 扩展DATA TYPE属性。

【定义】

typedef struct {
    combo_dev_t devno;
    unsigned int num;
    unsigned int ext_data_bit_width[[MAX_EXT_DATA_TYPE_NUM](#ZH-CN_TOPIC_0000001338996354)];
    unsigned int ext_data_type[[MAX_EXT_DATA_TYPE_NUM](#ZH-CN_TOPIC_0000001338996354)];
} ext_data_type_t;

【成员】

成员名称

描述

devno

MIPI_RX设备号

num

支持的扩展DATA TYPE数量

ext_data_bit_width

对应扩展DATA TYPE输入数据的位宽,可支持8bit/10bit/12bit/14bit/16bit, 当设置为0时,表示使用embedded data

ext_data_type

对应扩展DATA TYPE的值

【解决方案差异】

无

【注意事项】

无

【相关数据类型及接口】

OT_MIPI_SET_EXT_DATA_TYPE

mipi_wdr_mode_t

【说明】

MIPI WDR模式。

【定义】

typedef enum
{
    OT_MIPI_WDR_MODE_NONE = 0x0,
    OT_MIPI_WDR_MODE_VC   = 0x1,    /* Virtual Channel */
    OT_MIPI_WDR_MODE_DT   = 0x2,    /* Data Type */
    OT_MIPI_WDR_MODE_DOL  = 0x3,    /* DOL Mode */
    OT_MIPI_WDR_MODE_BUTT
} mipi_wdr_mode_t;

【成员】

成员名称

描述

OT_MIPI_WDR_MODE_NONE

线性模式

OT_MIPI_WDR_MODE_VC

使用Packet header中的Virtual Channel区分长短曝光帧

OT_MIPI_WDR_MODE_DT

使用Packet header中的自定义Data type区分长短曝光帧

OT_MIPI_WDR_MODE_DOL

表示DOL模式WDR,使用Packet header之后的一个pixel识别长短曝光帧

【解决方案差异】

无

【注意事项】

VC模式时OT_MIPI_WDR_MODE_NONE与OT_MIPI_WDR_MODE_VC配置等效,一般线性模式下配置为OT_MIPI_WDR_MODE_NONE,VC_WDR模式要根据sensor的情况来确定模式的配置,如果sensor数据是帧头共享的(两帧只有一个帧开始和帧结束标记),应该配置为MIPI_WDR_MODE_VC,如果不是,应该配置为MIPI_WDR_MODE_NONE。

【相关数据类型及接口】

无

mipi_dev_attr_t

【说明】

MIPI设备属性。

【定义】

typedef struct
{
    data_type_t           input_data_type;
    mipi_wdr_mode_t       wdr_mode;
    short                   lane_id[MIPI_LANE_NUM];
    union
    {
    short data_type[WDR_VC_NUM];
    };
} mipi_dev_attr_t;

【成员】

成员名称

描述

input_data_type

传输的数据类型。

lane_id

发送端(sensor)和接收端(MIPI_RX) Lane的对应关系

未使用的Lane设置为-1。

wdr_mode

MIPI WDR模式

data_type

当wdr_mode为OT_MIPI_WDR_MODE_DT时,需要设置data_type,表示不同曝光长度数据对应的Data Type。

【解决方案差异】

无。

【注意事项】

无。

【相关数据类型及接口】

lvds_wdr_mode_t

【说明】

LVDS WDR模式。

【定义】

typedef enum
{
    OT_WDR_MODE_NONE  = 0x0,
    OT_WDR_MODE_2F      = 0x1,
    OT_WDR_MODE_3F      = 0x2,
    OT_WDR_MODE_4F      = 0x3,
    OT_WDR_MODE_DOL_2F  = 0x4,
    OT_WDR_MODE_DOL_3F  = 0x5,
    OT_WDR_MODE_DOL_4F  = 0x6,
    OT_WDR_MODE_BUTT
} lvds_wdr_mode_t;

【成员】

成员名称

描述

OT_WDR_MODE_NONE

线性模式

OT_WDR_MODE_2F

2合一WDR

OT_WDR_MODE_3F

3合一WDR

OT_WDR_MODE_4F

4合一WDR

OT_WDR_MODE_DOL_2F

DOL模式2合一WDR

OT_WDR_MODE_DOL_3F

DOL模式3合一WDR

OT_WDR_MODE_DOL_4F

DOL模式4合一WDR

【解决方案差异】

解决方案

WDR模式

Hi3519DV500

支持

Hi3516CV610

仅支持线性模式、单路2合一WDR、DOL模式单路2合一WDR。

Hi3511CV100

不支持

【注意事项】

  • DOL WDR模式需要配置为OT_WDR_MODE_DOL_2F/OT_WDR_MODE_DOL_3F/OT_WDR_MODE_DOL_4F。
  • Built-in WDR模式和帧合成WDR模式都需要配置为OT_WDR_MODE_NONE。

【相关数据类型及接口】

无。

lvds_sync_mode_t

【说明】

LVDS同步方式。

【定义】

typedef enum
{
    LVDS_SYNC_MODE_SOF = 0,         /* sensor SOL, EOL, SOF, EOF */
    LVDS_SYNC_MODE_SAV,             /* SAV, EAV */
    LVDS_SYNC_MODE_BUTT
} lvds_sync_mode_t;

表 1 LVDS同步方式

sync_mode

同步方式

LVDS_SYNC_MODE_SOF

SOF、EOF、SOL、EOL

请参考图1。

LVDS_SYNC_MODE_SAV

invalid SAV、invalid EAV、valid SAV、valid EAV

请参考图2。

【解决方案差异】

无。

【注意事项】

无。

【相关数据类型及接口】

无。

lvds_bit_endian_t

【说明】

比特位大小端模式

【定义】

typedef enum
{
    LVDS_ENDIAN_LITTLE  = 0x0,
    LVDS_ENDIAN_BIG     = 0x1,
    LVDS_ENDIAN_BUTT
} lvds_bit_endian_t;

【解决方案差异】

无。

【注意事项】

无。

【相关数据类型及接口】

无。

lvds_vsync_type_t

【说明】

LVDS vsync类型。

【定义】

typedef enum
{
    LVDS_VSYNC_NORMAL   = 0x00,
    LVDS_VSYNC_SHARE     = 0x01,
    LVDS_VSYNC_HCONNECT= 0x02,
    LVDS_VSYNC_BUTT
} lvds_vsync_type_t;

【成员】

成员名称

描述

LVDS_VSYNC_NORMAL

长短曝光帧有独立的SOF-EOF、SOL-EOL或者invalid SAV-invalid EAV, valid SAV-valid EAV。

LVDS_VSYNC_SHARE

长短曝光帧共用一对SOF-EOF标识,短曝光的起始几行用固定值填充。

LVDS_VSYNC_HCONNECT

长短曝光帧共用一对SAV-EAV标识,长短曝光帧之间是固定周期的消隐。

  • LVDS_VSYNC_SHARE同步方式:

SOF

Long Exposure

EOL

Horizontal Blanking

SOL

Padding

EOL

Horizontal Blanking

SOL

Short Exposure

Padding

EOF

SOV

V.BLK

EOV

-

SOV

V.BLK

EOV

-

  • LVDS_VSYNC_HCONNECT同步方式:

SAV

Long Exposure

frame

Horizontal Blanking(fix period)

V.BLK

Horizontal Blanking(fix period)

V.BLK

EAV

Horizontal Blanking

Short ExposureFrame1

Short Exposure Frame2

V.BLK

V.BLK

V.BLK

-

【解决方案差异】

无。

【注意事项】

无。

【相关数据类型及接口】

lvds_vsync_attr_t

lvds_vsync_attr_t

【说明】

LVDS vsync参数

【定义】

typedef struct
{
    lvds_vsync_type_t sync_type;
    unsigned short hblank1;
    unsigned short hblank2;
} lvds_vsync_attr_t;

【解决方案差异】

无。

【注意事项】

当sync_type为LVDS_VSYNC_HCONNECT时,需要配置hblank1和hblank2,表示Hconnect的消隐区长度。

【相关数据类型及接口】

lvds_vsync_type_t

lvds_fid_type_t

【说明】

Frame identification ID类型。

【定义】

typedef enum
{
    LVDS_FID_NONE    = 0x00,
    LVDS_FID_IN_SAV   = 0x01,    /* frame identification id in SAV 4th */
    LVDS_FID_IN_DATA  = 0x02,    /* frame identification id in first data */
    LVDS_FID_BUTT
} lvds_fid_type_t;

【成员】

成员名称

描述

LVDS_FID_NONE

不使用frame identification id。

LVDS_FID_IN_SAV

FID插入在SAV第4个字段中,DOL 4个字段的同步码需要将fid_type配置为LVDS_FID_IN_SAV。

LVDS_FID_IN_DATA

FID作为Frame information column插入在同步码之后的第一个像素之前,DOL 5个字段的同步码需要将fid_type配置为LVDS_FID_IN_DATA。

【解决方案差异】

无。

【注意事项】

无。

【相关数据类型及接口】

无。

lvds_fid_attr_t

【说明】

Frame identification ID配置信息。

【定义】

typedef struct
{
    lvds_fid_type_t fid_type;
    unsigned char output_fil;
} lvds_fid_attr_t;

【成员】

成员名称

描述

fid_type

LVDS DOL模式下的Frame identification ID类型

output_fil

DOL模式中的Frame information line紧接在V-Blanking之后输出,Frame ID是Frame information line中的第一个像素值。

Frame information line中并不包含有效的视频数据:

  • 如果output_fil设置为1,Frame information line会输出到后端设备。
  • 如果output_fil设置为0,MIPI_RX将丢弃这一行数据。

【解决方案差异】

无。

【注意事项】

无。

【相关数据类型及接口】

lvds_fid_type_t

lvds_dev_attr_t

【说明】

LVDS/SubLVDS/HiSPI设备属性。

【定义】

typedef struct
{
    data_type_t         input_data_type;
    lvds_wdr_mode_t     wdr_mode;
    lvds_sync_mode_t    sync_mode;
    lvds_vsync_attr_t   vsync_attr;
    lvds_fid_attr_t     fid_attr;
    lvds_bit_endian_t   data_endian;
    lvds_bit_endian_t   sync_code_endian;
    short                lane_id[LVDS_LANE_NUM];
    unsigned short     sync_code[LVDS_LANE_NUM][WDR_VC_NUM][SYNC_CODE_NUM];
} lvds_dev_attr_t;

【成员】

成员名称

描述

input_data_type

传输的数据类型。

wdr_mode

WDR模式。

sync_mode

LVDS同步模式。

vsync_attr

vsync类型,当wdr_mode为DOL模式并且sync_mode为LVDS_SYNC_MODE_SAV时,需要配置vsync的类型。

fid_attr

frame identification类型,当wdr_mode为DOL模式,并且sync_mode为LVDS_SYNC_MODE_SAV时,需要配置。

data_endian

数据大小端模式。

sync_code_endian

同步码大小端模式。

lane_id

发送端(sensor)和接收端(MIPI_RX) lane的对应关系

未使用的lane设置为-1

lane id的配置方式请参考“MIPI RX Lane id如何配置”。

sync_code

每个Virtual Channel有4个同步码,根据同步模式不同,分别表示SOF/EOF/ SOL/EOL的同步码或者invalid SAV/invalid EAV/ valid SAV/valid EAV的同步码。

【解决方案差异】

无。

【注意事项】

使用该结构体,LVDS的LANE同步码同步到达。

【相关数据类型及接口】

phy_cmv_mode_t

【说明】

PHY共模电压模式。

【定义】

typedef enum
{
    PHY_CMV_GE1200MV    = 0x00,
    PHY_CMV_LT1200MV    = 0x01,
    PHY_CMV_BUTT
} phy_cmv_mode_t;

【成员】

成员名称

描述

PHY_CMV_GE1200MV

PHY共模电压大于等于1200mv。

PHY_CMV_LT1200MV

PHY共模电压小于1200mv。

【解决方案差异】

无。

【注意事项】

无。

【相关数据类型及接口】

无。

phy_cmv_t

【说明】

PHY 共模电压配置信息。

【定义】

typedef struct
{
    combo_dev_t       devno;
    phy_cmv_mode_t    cmv_mode;
} phy_cmv_t;

【成员】

成员名称

描述

devno

MIPI_RX设备号。

cmv_mode

PHY功能电压模式。

【解决方案差异】

无。

【注意事项】

无。

【相关数据类型及接口】

combo_dev_attr_t

【说明】

combo设备属性,由于MIPI_RX能够对接CSI-2、LVDS、HiSPI等协议,所以将MIPI_RX称为combo设备。

【定义】

typedef struct
{
    combo_dev_t           devno;
    input_mode_t          input_mode;
    mipi_data_rate_t      data_rate;
    img_rect_t            img_rect;
    union
    {
         mipi_dev_attr_t     mipi_attr;
         lvds_dev_attr_t     lvds_attr;

    };
} combo_dev_attr_t;

【成员】

成员名称

描述

devno

MIPI_RX设备号

input_mode

输入接口类型。

data_rate

接口传输速率。

img_rect

图像crop区域。

mipi_attr

如果input_mode配置为INPUT_MODE_MIPI,则必须配置mipi_attr。

lvds_attr

如果input_mode配置为INPUT_MODE_SUBLVDS/INPUT_MODE_LVDS/INPUT_MODE_HISPI,则必须配置lvds_attr

【解决方案差异】

解决方案

本结构体

Hi3519DV500

支持

Hi3516CV610

支持

Hi3511CV100

不支持lvds_attr

【注意事项】

  • img_rect属性需要满足x,y>=0,width、height和VI配置保持一致,以满足VI输入最小分辨率。
  • img_rect属性配置为 width = 0 且 height = 0 时,禁用mipi crop剪裁功能。在某些输入宽高动态变化场景下需要禁用mipi crop。仅Hi3519DV500适用。
  • img_rect属性配置本身没有2对齐的限制,但vi的输入有2对齐的限制,因此需要综合考虑。
  • img_rect属性配置最大值在软件上没有限制,在满足phy data rate的前提下,根据前端实际输出配置即可。
  • Hi3511CV100上img_rect属性配置的宽高需要包含随路帧信息的高度。

【相关数据类型及接口】

无。

OT_MIPI_TX_IOC_MAGIC

【说明】

MIPI Tx ioctl命令的幻数。

【定义】

#define OT_MIPI_TX_IOC_MAGIC   't'

【成员】

无

【注意事项】

无

【相关数据类型及接口】

无

LANE_MAX_NUM

【说明】

定义MIPI_TX支持的最大Lane数。

【定义】

#define LANE_MAX_NUM           4

【注意事项】

无。

【相关数据类型及接口】

无。

MIPI_TX_SET_DATA_SIZE

【说明】

定义MIPI_TX长指令支持的最大数据长度。

【定义】

#define MIPI_TX_SET_DATA_SIZE   800

【注意事项】

无。

【相关数据类型及接口】

无。

MIPI_TX_GET_DATA_SIZE

【说明】

定义MIPI_TX读指令支持的最大数据长度。

【定义】

#define MIPI_TX_GET_DATA_SIZE 160

【注意事项】

无。

【相关数据类型及接口】

无。

ATTRIBUTE

【说明】

定义编译时对齐字节数。

【定义】

#define OT_ALIGN_NUM          8
#define ATTRIBUTE             __attribute__((aligned(OT_ALIGN_NUM)))

【注意事项】

无。

【相关数据类型及接口】

无。

out_mode_t

【说明】

MIPI_TX输出或外设操作模式。

【定义】

typedef enum {
    OUT_MODE_CSI            = 0x0,
    OUT_MODE_DSI_VIDEO      = 0x1,
    OUT_MODE_DSI_CMD        = 0x2,
    OUT_MODE_BUTT
} out_mode_t;

【注意事项】

无。

【相关数据类型及接口】

无。

mipi_tx_work_mode_t

【说明】

MIPI_TX 工作模式

【定义】

typedef enum {
    MIPI_TX_WORK_MODE_LP     = 0x0,
    MIPI_TX_WORK_MODE_HS     = 0x1,
    MIPI_TX_WORK_MODE_BUTT
} mipi_tx_work_mode_t;

【注意事项】

无。

【相关数据类型及接口】

无。

video_mode_t

【说明】

MIPI_TX视频模式或视频格式,或包序列格式。

【定义】

typedef enum {
    BURST_MODE                      = 0x0,
    NON_BURST_MODE_SYNC_PULSES      = 0x1,
    NON_BURST_MODE_SYNC_EVENTS      = 0x2,

    VIDEO_DATA_MODE_BUTT
} video_mode_t;

【注意事项】

无。

【相关数据类型及接口】

无。

out_format_t

【说明】

MIPI_TX输出数据格式。

【定义】

typedef enum {
    OUT_FORMAT_RGB_16BIT          = 0x0,
    OUT_FORMAT_RGB_18BIT          = 0x1,
    OUT_FORMAT_RGB_18BIT_LOOSELY  = 0x2,
    OUT_FORMAT_RGB_24BIT          = 0x3,
    OUT_FORMAT_YUV420_12BIT       = 0x4,
    OUT_FORMAT_YUV422_16BIT       = 0x5,

    OUT_FORMAT_YUV420_8BIT_NORMAL = 0x6,
    OUT_FORMAT_YUV420_8BIT_LEGACY = 0x7,
    OUT_FORMAT_YUV422_8BIT        = 0x8,
    OUT_FORMAT_RGB_888            = 0x9,
    OUT_FORMAT_RAW_8BIT           = 0xa,
    OUT_FORMAT_RAW_10BIT          = 0xb,
    OUT_FORMAT_RAW_12BIT          = 0xc,
    OUT_FORMAT_RAW_14BIT          = 0xd,
    OUT_FORMAT_RAW_16BIT          = 0xe,
    OUT_FORMAT_BUTT
} out_format_t;

【注意事项】

  • DSI模式(OUT_MODE_DSI_CMD,或OUT_MODE_DSI_VIDEO)支持数据格式范围:[OUT_FORMAT_RGB_16BIT, OUT_FORMAT_YUV422_16BIT]。
  • CSI模式(OUT_MODE_CSI)支持数据格式范围:[OUT_FORMAT_YUV420_8BIT_NORMAL, OUT_FORMAT_RAW_16BIT]。

【相关数据类型及接口】

无。

sync_info_t

【说明】

MIPI_TX设备同步信息。

【定义】

typedef struct {
    unsigned short  vact;
    unsigned short  vbp;
    unsigned short  vfp;

    unsigned short  hact;
    unsigned short  hbp;
    unsigned short  hfp;

    unsigned short  hpw;
    unsigned short  vpw;
} sync_info_t;

【成员】

成员名称

描述

vact

垂直有效区行数,取值范围:[100, 4096]

vbp

垂直后消隐区行数,取值范围:[1, 256]

vfp

垂直前消隐区行数,取值范围:[1, 256]

hact

水平有效区像素个数,取值范围:[1, 4096]

hbp

水平后消隐区像素个数,取值范围:[1, 65535]

hfp

水平前消隐区像素个数,取值范围:[1, 65535]

hpw

水平同步脉冲区像素个数,取值范围:[1, 65535]

vpw

垂直同步脉冲区行数,取值范围:[1, 256]

【注意事项】

无。

【相关数据类型及接口】

无。

continue_mode_t

【说明】

MIPI_TX连续时钟模式。

【定义】

typedef enum {
    MIPI_TX_CLK_LANE_CONTINUE     = 0x0,
    MIPI_TX_CLK_LANE_NON_CONTINUE = 0x1,
    MIPI_TX_CLK_LANE_BUTT
} continue_mode_t;

【成员】

成员名称

描述

MIPI_TX_CLK_LANE_CONTINUE

MIPI_TX clk lane的连续模式,在消隐区不进行LP和HS模式间的切换。

MIPI_TX_CLK_LANE_NON_CONTINUE

MIPI_TX clk lane的非连续模式,在消隐区进行LP和HS模式间的切换。

【注意事项】

无。

【相关数据类型及接口】

OT_MIPI_TX_SET_DEV_CFG

combo_dev_cfg_t

【说明】

MIPI_TX设备属性。

【定义】

typedef struct {
    unsigned int        devno;                   /* device number */
    short               lane_id[LANE_MAX_NUM];   /* lane_id: -1 - disable */
    out_mode_t          out_mode;                /* output mode: CSI/DSI_VIDEO/DSI_CMD */
    video_mode_t        video_mode;
    out_format_t        out_format;
    sync_info_t         sync_info;
    unsigned int        phy_data_rate;           /* Mbps */
    unsigned int        pixel_clk;               /* KHz */
    continue_mode_t     clklane_continue_mode;
} combo_dev_cfg_t;

【成员】

成员名称

描述

devno

MIPI_TX设备号,仅支持设备0。

lane_id

lane个数和模式配置,取决于lane_id中非-1值的个数,仅四种模式可选,且lane个数、lane号码、lane顺序可调整:

配置方法参考本章MIPI TX Lane id如何配置小节。

1 lane模式:lane0

2 lane模式:lane0,lane1

3 lane模式:lane0,lane1,lane2

4 lane模式:lane0,lane1,lane2,lane3

建议的配置方法:

1 lane模式,配置成:lane_id[4] = {0, -1, -1, -1}

2 lane模式,配置成:lane_id[4] = {0, 1, -1, -1}

3 lane模式,配置成:lane_id[4] = {0, 1, 2, -1}

4 lane模式,配置成:lane_id[4] = {0, 1, 2, 3}

out_mode

MIPI_TX输出模式。

video_mode

MIPI_TX视频模式。

out_format

MIPI_TX输出格式。

sync_info

MIPI_TX设备的同步信息。

phy_data_rate

MIPI_TX输出速率,输出范围请参考芯片手册“MIPI_TX”章节,MIPI_TX高速模式的速率范围的描述,单位是Mbps。

取值范围:[80, 1800]

pixel_clk

像素时钟,单位为KHz。

取值范围:[3333, 900000]

clklane_continue_mode

MIPI_TX 输出时序连续模式。

取值范围:[MIPI_TX_CLK_LANE_CONTINUE, MIPI_TX_CLK_LANE_NON_CONTINUE]

【注意事项】

无。

【相关数据类型及接口】

无。

cmd_info_t

【说明】

发送给MIPI_TX设备的命令信息。

【定义】

typedef struct {
    unsigned int        devno;
    mipi_tx_work_mode_t work_mode;
    unsigned char       lp_clk_en;
    unsigned short      data_type;
    unsigned short      cmd_size;
    const unsigned char ATTRIBUTE *cmd;
} cmd_info_t;

【成员】

成员名称

描述

devno

MIPI_TX设备号,仅支持设备0。

work_mode

工作模式:低功耗模式,高速模式。

lp_clk_en

低功耗模式时钟开关。

data_type

命令数据类型。

cmd_size

短指令的数据,范围:[0, 0xFFFF]。

长指令的数据长度,范围:(0, MIPI_TX_SET_DATA_SIZE],单位:字节。

注:cmd置为NULL:cmd_size表示短指令的数据,低八位对应数据1、高八位对应数据2。

cmd置为非NULL:cmd_size表示长指令的数据长度。

cmd

长指令数据指针。

  • 设置短指令时,需置为NULL;
  • 设置长指令时,需置为非NULL。

【注意事项】

cmd成员为NULL时,将不对cmd_size成员做取值范围检查。

【相关数据类型及接口】

无。

get_cmd_info_t

【说明】

MIPI_TX发送给接收端设备的命令信息以及回读的数据信息。

【定义】

typedef struct {
    unsigned int        devno;
    mipi_tx_work_mode_t work_mode;
    unsigned char       lp_clk_en;
    unsigned short      data_type;
    unsigned short      data_param;
    unsigned short      get_data_size;
    unsigned char       ATTRIBUTE *get_data;
} get_cmd_info_t;

【成员】

成员名称

描述

devno

MIPI_TX设备号,仅支持设备0。

work_mode

工作模式:低功耗模式,高速模式。

lp_clk_en

低功耗模式时钟开关。

data_type

命令数据类型。

data_param

数据参数,低八比特为第一个参数,高八比特为第二个参数、不用时填0。

get_data_size

预期获取的数据字节数,范围:(0, MIPI_TX_GET_DATA_SIZE]。

get_data

获取到的数据存放地址指针,需要用户分配,不能设置为NULL。

【注意事项】

无。

【相关数据类型及接口】

无。

MIPI_LANE_NUM_PER_DEV

【说明】

定义MIPI_TX 支持的Lane长度。

【定义】

#define MIPI_LANE_NUM_PER_DEV   4

【注意事项】

无。

【相关数据类型及接口】

无。

combo_dev_pn_swap_t

【说明】

MIPI_TX数据lane PN互换属性信息。

【定义】

typedef struct {
    unsigned int        devno;
    unsigned char pn_swap[MIPI_LANE_NUM_PER_DEV];
} combo_dev_pn_swap_t;

【成员】

成员名称

描述

devno

MIPI_TX设备号,仅支持设备0。

pn_swap

PN互换信息:配置0为默认,配置1为PN线交换,范围为[0, 1]。

【注意事项】

无。

【相关数据类型及接口】

无。

phy_speed_mode_t

【说明】

PHY速率模式。

【定义】

typedef enum {
    PHY_SPEED_LE1500M_BITPERSEC = 0x00,
    PHY_SPEED_GT1500M_BITPERSEC = 0x01, 
    PHY_SPEED_BUTT
} phy_speed_mode_t;

【成员】

成员名称

描述

PHY_SPEED_LE1500M_BITPERSEC

PHY速率模式小于等于1.5Gbps。

PHY_SPEED_GT1500M_BITPERSEC

PHY速率模式大于1.5Gbps。

【解决方案差异】

Hi3511CV100不支持。

【注意事项】

无。

【相关数据类型及接口】

无。

phy_speed_t

【说明】

PHY 速率配置信息。

【定义】

typedef struct {
    combo_dev_t devno;
    phy_speed_mode_t speed;
} phy_speed_t;

【成员】

成员名称

描述

devno

MIPI_RX设备号。

speed

PHY速率模式。

【解决方案差异】

Hi3511CV100不支持。

【注意事项】

无。

【相关数据类型及接口】

mipirx_phy_speed_mode_t

【说明】

PHY速率模式。

【定义】

typedef enum {
    PHY_SPEED_LE1500M_BITPERSEC = 0x00,
    PHY_SPEED_GT1500M_BITPERSEC = 0x01,
    PHY_SPEED_BUTT
} mipirx_phy_speed_mode_t;

【成员】

成员名称

描述

PHY_SPEED_LE1500M_BITPERSEC

PHY速率模式小于等于1.5Gbps。

PHY_SPEED_GT1500M_BITPERSEC

PHY速率模式大于1.5Gbps。

【解决方案差异】

仅Hi3511CV100支持。

【注意事项】

无。

【相关数据类型及接口】

无。

phy_speed_t

【说明】

PHY 速率配置信息。

【定义】

typedef struct {
    combo_dev_t devno;
    mipirx_phy_speed_mode_t speed;
} phy_speed_t;

【成员】

成员名称

描述

devno

MIPI_RX设备号。

speed

PHY速率模式。

【解决方案差异】

仅Hi3511CV100支持。

【注意事项】

无。

【相关数据类型及接口】

MIPI TX模块参数

g_smooth

g_smooth模块参数用于实现平滑过渡,使用方法如下:

在Linux操作系统下,加载MIPI TX驱动的时候可以控制是否复位MIPI TX的逻辑。

  • insmod ot_mipi_tx.ko g_smooth=1:加载ko时不进行逻辑复位。
  • insmod ot_mipi_tx.ko g_smooth=0:加载ko时进行逻辑复位。

Proc信息

MIPI_RX Proc信息(Hi3519DV500)

MIPI_RX正常工作状态下proc信息中宽高应该是稳定不变且和sensor输出时序的宽高匹配,并且MIPI_RX各种错误中断计数为0。如果错误中断计数不为0,请检查MIPI_RX相关属性是否配置正确。

【调试信息】

[MIPI_RX] Version: [Hi3519DV500V1.0.0.0 B010 Release], Build Time[Jan 25 2022, 11:06:37]
-----mipi lane divide mode----------------------------------------------------------
  mode         lane divide
     0                   8

-----mipi dev attr----------------------------------------------------------------------
   devno  work_mode  data_rate           data_type  wdr_mode   img_x   img_y   img_w   img_h
       0       mipi         X1               raw12      none       0       0    3840    2160

-----mipi lane info---------------------------------------------------------------------
   devno                 lane_id                   speed_mode
       0         0,  1,  2,  3, -1, -1, -1, -1     LE1500Mbps

-----mipi phy data info------------------------------------------------------
  phy_id        lane_id           phy_data       mipi_data       lvds_data          freq
       0       0, 1, 2, 3    0x00,0x00,0x00,0x00    0x00,0x00,0x00,0x00    0x00,0x00,0x00,0x00       n/a
       1       4, 5, 6, 7    0x00,0x00,0x00,0x00    0x00,0x00,0x00,0x00    0x00,0x00,0x00,0x00       n/a

-----mipi detect info----------------------------------------------------
 devno vc   width  height
     0  0    1920    1080
     0  1       0       0
     0  2       0       0
     0  3       0       0

-----lvds detect info----------------------------------------------------
 devno vc   width  height
     0  0    3840    2160
     0  1       0       0
     0  2       0       0
     0  3       0       0

-----lvds lane detect info----------------------------------------------------
 devno  lane   width  height
     0     2     960    2179
     0     4     960    2179
     0     5     960    2179
     0     7     960    2179

-----phy cil err int info---------------------------------------------
  phy_id clk2_tmout clk_tmout lane0_tmout lane1_tmout lane2_tmout lane3_tmout clk2_esc clk_esc lane0_esc lane1_esc lane2_esc lane3_esc
       0          0         0           0           0           0           0        0       0         0         0         0         0
       1          0         0           0           0           0           0        0       0         0         0         0         0

-----mipi error int info1-----------------------------------------------------------
   devno  ecc2  vc0_crc  vc1_crc  vc2_crc  vc3_crc  vc0_ecc_correct  vc1_ecc_correct  vc2_ecc_correct  vc3_ecc_correct
   0     0        0        0        0        0                0                0                0                0

-----mipi error int info2-----------------------------------------------------------
   devno  vc0_frmnum  vc1_frmnum  vc2_frmnum  vc3_frmnum  vc0_frmmmatch  vc1_frmmmatch  vc2_frmmmatch  vc3_frmmmatch
       0           0           0           0           0              0              0              0              0

-----mipi error int info3-----------------------------------------------------------
   devno  data_fifo_rderr  cmd_fifo_rderr  vsync  cmd_fifo_wrerr  data_fifo_wrerr
       0                0               0      0               0                0

-----lvds error int info1-----------------------------------------------------------
   devno  vsync  cmd_rderr  cmd_wrerr  pop_err  stat_err
       0      0          0          0        0         0

-----lvds error int info2-----------------------------------------------------------
   devno  link0_wrerr  link1_wrerr  link2_wrerr  link0_rderr  link1_rderr  link2_rderr
       0            0            0            0            0            0            0

-----lvds error int info3-----------------------------------------------------------
   devno  lane0_err  lane1_err  lane2_err  lane3_err  lane4_err  lane5_err  lane6_err  lane7_err
       0          0          0          0          0          0          0          0          0

-----align error int info--------------------------------------
   devno  fifo_fullerr  lane0_err  lane1_err  lane2_err  lane3_err  lane4_err  lane5_err  lane6_err  lane7_err
       0             0          0          0          0          0          0          0          0          0
-----mipi dbg info-----------------------------------------------------------------------------------------------------
   phyno      skew_len0      skew_len1

【调试信息分析】

  • MIPI_RX通过Phy接收sensor的差分数据,Phy Controller检测到同步头后,将每条lane上的数据对齐;
  • Pixel Controller解析同步信息并按照raw data的位宽将lane上面的数据合并为Pixel数据;Output模式将Pixel数据发送给后级模块。
  • Phy Controller 和 Pixel Controller由sensor的pixel clk提供时钟,output模块的时钟为称为随路时钟,与后级模块的工作时钟相同。MIPI_RX的crop功能在Pixel Controller的末端实现,所以Crop后可以降低需要的随路时钟。

图 1 MIPI数据流

【参数说明】

参数

描述

mipi lane divide mode

mode

MIPI_RX的lane分布模式

lane divide

MIPI_RX详细的lane分布。

mipi dev attr

devno

MIPI设备号

work_mode

MIPI设备工作模式:LVDS/MIPI等模式

data_rate

MIPI_RX的速率。

data_type

数据类型:RAW8 / RAW10/ RAW12/ RAW14/ RAW16 bit等类型

wdr_mode

WDR模式:

  • None:非WDR模式
  • 2To1:2合1 WDR
  • 3To1:3合1 WDR
  • 4To1:4合1 WDR
  • DOL2To1:DOL2合1WDR
  • DOL3To1:DOL3合1WDR
  • DOL4To1:DOL4合1WDR

img_x

Crop图像起始X

img_y

Crop图像起始Y

img_w

Crop图像宽度

img_h

Crop图像高度

mipi lane info

devno

MIPI设备号

lane_id

Lane ID

speed_mode

速率模式:LE1500Mbps/GT1500Mbps

mipi phy data info

phy_id

PHY ID序号

lane_id

对应的Lane ID

phy_data

PHY对应的4条Lane接收到的实时数据

mipi_data

PHY对应的4条Lane检测到MIPI帧的数据包头数据

lvds_data

PHY对应的4条Lane检测到LVDS帧同步信号后的实时数据

freq

HS时钟频率测量值

mipi detect info (仅MIPI模式下可见)

devno

MIPI_RX设备号

vc

Virtual Channel

width

MIPI控制器检测到的图像总宽度

height

MIPI控制器检测到的图像总高度

lvds detect info (仅LVDS模式下可见)

devno

MIPI_RX设备号

vc

Virtual Channel

width

MIPI控制器检测到的图像总宽度

height

MIPI控制器检测到的图像总高度

lvds lane detect info (仅LVDS模式下可见)

devno

MIPI_RX设备号

lane

Lane ID

width

该lane上检测到的宽度。

height

该lane上检测到的高度。

phy cil err int info

phy_id

PHY ID

clk2_tmout

Clock2 Lane 从LP切换到HS 超时

clk_tmout

Clock1 Lane 从LP切换到HS 超时

lane0_tmout

DataLane 0从LP切换到HS超时

lane1_tmout

Data Lane 1从LP切换到HS超时

lane2_tmout

Data Lane 2从LP切换到HS超时

lane3_tmout

Data Lane 3从LP切换到HS超时

clk2_esc

Clock2 Lane 切换到escape模式超时

clk_esc

Clock Lane 切换到escape模式超时

lane0_esc

Data Lane 0切换到escape模式超时

lane1_esc

Data Lane 1切换到escape模式超时

lane2_esc

Data Lane 2切换到escape模式超时

lane3_esc

Data Lane 3切换到escape模式超时

mipi error int info1 (仅MIPI模式下可见)

devno

MIPI_RX设备号。

ecc2

Header至少2个错误,ECC无法纠错

vc0_crc

VC0通道数据的CRC错误计数。

vc1_crc

VC1通道数据的CRC错误计数。

vc2_crc

VC2通道数据的CRC错误计数。

vc3_crc

VC3通道数据的CRC错误计数。

vc0_ecc_correct

VC0通道Header的ECC已纠正的错误计数。

vc1_ecc_correct

VC1通道Header的ECC已纠正的错误计数。

vc2_ecc_correct

VC2通道Header的ECC已纠正的错误计数。

vc3_ecc_correct

VC3通道Header的ECC已纠正的错误计数。

mipi error int info2 (仅MIPI模式下可见)

devno

MIPI_RX设备号。

vc0_frmnum

VC0的帧序错误计数

vc1_frmnum

VC1的帧序错误计数

vc2_frmnum

VC2的帧序错误计数

vc3_frmnum

VC3的帧序错误计数

vc0_frmmmatch

VC0通道的帧起始与帧结束短包不匹配计数

vc1_frmmmatch

VC1通道的帧起始与帧结束短包不匹配计数

vc2_frmmmatch

VC2通道的帧起始与帧结束短包不匹配计数

vc3_frmmmatch

VC3通道的帧起始与帧结束短包不匹配计数

mipi error int info3 (仅MIPI模式下可见)

devno

MIPI_RX设备号。

data_fifo_rderr

MIPI CTRL读数据FIFO中断计数

cmd_fifo_rderr

MIPI CTRL读命令FIFO中断计数

vsync

MIPI CTR vsync中断计数

cmd_fifo_wrerr

MIPI CTRL写命令FIFO中断计数

data_fifo_wrerr

MIPI CTRL写数据FIFO中断计数

lvds error int info1 (仅LVDS模式下可见)

devno

MIPI设备号

vsync

lvds vsync中断计数

cmd_rderr

lvds CMD_FIFO读错误中断计数

cmd_wrerr

lvds CMD_FIFO写错误中断计数

pop_err

lvds读取line_buf错误中断计数

stat_err

lvds各lane同步错误中断计数

lvds error int info2 (仅LVDS模式下可见)

devno

MIPI设备号

link0_wrerr

link0写FIFO错误中断计数

link1_wrerr

link1写FIFO错误中断计数

link2_wrerr

link2写FIFO错误中断计数

link0_rderr

link0读FIFO错误中断计数

link1_rderr

link1读FIFO错误中断计数

link2_rderr

link2读FIFO错误中断计数

lvds error int info3 (仅LVDS模式下可见)

devno

MIPI设备号

lane0_err

Lane0同步错误中断计数

lane1_err

Lane1同步错误中断计数

lane2_err

Lane2同步错误中断计数

lane3_err

Lane3同步错误中断计数

lane4_err

Lane4同步错误中断计数

lane5_err

Lane5同步错误中断计数

lane6_err

Lane6同步错误中断计数

lane7_err

Lane7同步错误中断计数

align error int info

devno

MIPI设备号

fifo_fullerr

FIFO溢出

lane0_err

Lane0 FIFO溢出

lane1_err

Lane1 FIFO溢出

lane2_err

Lane2 FIFO溢出

lane3_err

Lane3 FIFO溢出

lane4_err

Lane4 FIFO溢出

lane5_err

Lane5 FIFO溢出

lane6_err

Lane6 FIFO溢出

lane7_err

Lane7 FIFO溢出

mipi dbg info

phyno

MIPI PHY编号

skew_len0

skew_len0 信息,非零时显示

skew_len1

skew_len1 信息,非零时显示

MIPI_RX Proc信息(Hi3516CV610)

Module: [MIPI_RX], Build Time[Jan 15 2024, 18:12:16]

-------------------------------------------------------lane_mode--------------------------------------------------------
lane_mode        :4          |                             |                             |                             |
-------------------------------------------------------port_attr--------------------------------------------------------
port_id          :0          |mipirx_work_mode :mipi       |data_rate        :x1         |mipirx_data_type :raw_12     |
img_rect_x       :0          |img_rect_y       :0          |img_width        :1920       |img_height       :1080       |
lane_id          :0,1,-1,-1  |wdr_mode         :DOL        |ext_dt_1         :0x2c       |ext_dt_width_1   :12         |
ext_dt_2         :0x2c       |ext_dt_width_2   :12         |ext_dt_3         :0x2c       |ext_dt_width_3   :12         |
sync_mode        :SOF        |data_endian      :BIG        |sync_code_endian :BIG        |                             |
wdr_type         :none       |L0_VC0_scode_0   :0x2        |L0_VC0_scode_1   :0x3        |L0_VC0_scode_2   :0x0        |
L0_VC0_scode_3   :0x1        |L0_VC1_scode_0   :0x2        |L0_VC1_scode_1   :0x3        |L0_VC1_scode_2   :0x0        |
L0_VC1_scode_3   :0x1        |L1_VC0_scode_0   :0x12       |L1_VC0_scode_1   :0x13       |L1_VC0_scode_2   :0x10       |
L1_VC0_scode_3   :0x11       |L1_VC1_scode_0   :0x12       |L1_VC1_scode_1   :0x13       |L1_VC1_scode_2   :0x10       |
L1_VC1_scode_3   :0x11       |L2_VC0_scode_0   :0x6        |L2_VC0_scode_1   :0x7        |L2_VC0_scode_2   :0x4        |
L2_VC0_scode_3   :0x5        |L2_VC1_scode_0   :0x6        |L2_VC1_scode_1   :0x7        |L2_VC1_scode_2   :0x4        |
L2_VC1_scode_3   :0x5        |L3_VC0_scode_0   :0x16       |L3_VC0_scode_1   :0x17       |L3_VC0_scode_2   :0x14       |
L3_VC0_scode_3   :0x15       |L3_VC1_scode_0   :0x16       |L3_VC1_scode_1   :0x17       |L3_VC1_scode_2   :0x14       |
L3_VC1_scode_3   :0x15       |                             |                             |                             |
-------------------------------------------------------clk_state--------------------------------------------------------
sensor_clk       :1          |mipi_clk         :1          |                             |                             |
--------------------------------------------------------phy_info--------------------------------------------------------
phy_id           :0          |phy_en           :1          |                             |                             |
phy_d0_term_en   :1          |phy_d1_term_en   :1          |phy_d2_term_en   :0          |phy_d3_term_en   :0          |
lane0_en         :1          |lane1_en         :1          |lane2_en         :0          |lane3_en         :0          |
lane0_map        :0x0        |lane1_map        :0x1        |lane2_map        :0x2        |lane3_map        :0x3        |
cil_d0_cur_stat  :HS_LP00    |cil_d0_nxt_stat  :HS_LP00    |cil_d1_cur_stat  :HS_LP00    |cil_d1_nxt_stat  :HS_LP00    |
cil_d2_cur_stat  :IDLE       |cil_d2_nxt_stat  :IDLE       |cil_d3_cur_stat  :IDLE       |cil_d3_nxt_stat  :IDLE       |
cil_clk_cur_stat :HS_LP00    |cil_clk_nxt_stat :HS_LP00    |cil_clk2_cur_stat:LP11       |cil_clk2_nxt_stat:LP11       |
------------------------------------------------------data_detect-------------------------------------------------------
phy_id           :0          |freq_measure     :40MHz      |                             |                             |
lane0_data       :0x8d       |lane1_data       :0x16       |lane2_data       :0x0        |lane3_data       :0x0        |
mipi_ph_d0       :0x2b       |mipi_ph_d1       :0x88       |mipi_ph_d2       :0x0        |mipi_ph_d3       :0x0        |
mipi_data0       :0x16       |mipi_data1       :0x15       |mipi_data2       :0x0        |mipi_data3       :0x0        |
mipi_vc0_w       :1920       |mipi_vc0_h       :1080       |mipi_vc1_w       :1920       |mipi_vc1_h       :1080       |
mipi_vc2_w       :0          |mipi_vc2_h       :0          |mipi_vc3_w       :0          |mipi_vc3_h       :0          |
lvds_data0       :0x0        |lvds_data1       :0x0        |lvds_data2       :0x0        |lvds_data3       :0x0        |
lvds_l0_width    :0          |lvds_l0_height   :0          |lvds_l1_width    :0          |lvds_l1_height   :0          |
lvds_l2_width    :0          |lvds_l2_height   :0          |lvds_l3_width    :0          |lvds_l3_height   :0          |
lvds_vc0_w       :0          |lvds_vc0_h       :0          |lvds_vc1_w       :0          |lvds_vc1_h       :0          |
lvds_vc2_w       :0          |lvds_vc2_h       :0          |lvds_vc3_w       :0          |lvds_vc3_h       :0          |
lvds_l02_pix_num :0          |lvds_l13_pix_num :0 
------------------------------------------------------phy_err_irq-------------------------------------------------------
phy_id           :0          |                             |                             |                             |
clk_fsm_tmout    :0x0        |clk_fsm_escape   :0x0        |d0_fsm_tmout     :0x0        |d1_fsm_tmout     :0x0        |
d2_fsm_tmout     :0x0        |d3_fsm_tmout     :0x0        |d0_err_escape    :0x0        |d1_err_escape    :0x0        |
d2_err_escape    :0x0        |d3_err_escape    :0x0        |                             |                             |
--------------------------------------------------------mipi_err--------------------------------------------------------
vc0_crc_err      :0x0        |vc1_crc_err      :0x0        |vc2_crc_err      :0x0        |vc3_crc_err      :0x0        |
vc0_ecc_err      :0x0        |vc1_ecc_err      :0x0        |vc2_ecc_err      :0x0        |vc3_ecc_err      :0x0        |
vc0_frm_num_err  :0x0        |vc1_frm_num_err  :0x0        |vc2_frm_num_err  :0x0        |vc3_frm_num_err  :0x0        |
vc0_frm_mismatch :0x0        |vc1_frm_mismatch :0x0        |vc2_frm_mismatch :0x0        |vc3_frm_mismatch :0x0        |
vsync_cnt        :0xe        |rd_data_fifo_err :0x2        |wr_data_fifo_err :0x12f9e    |rd_cmd_fifo_err  :0x3        |
wr_cmd_fifo_err  :0x0        |data_fifo_n_emt  :0x12f5c    |cmd_fifo_n_emt   :0x0        |                             |
--------------------------------------------------------lvds_err--------------------------------------------------------
rd_fifo_err_lk0  :0x0        |wr_fifo_err_lk0  :0x0        |rd_fifo_err_lk1  :0x0        |wr_fifo_err_lk1  :0x0        |
lane0_sync_err   :0x0        |lane1_sync_err   :0x0        |lane2_sync_err   :0x0        |lane3_sync_err   :0x0        |
vsync_cnt        :0x0        |                             |                             |                             |
-------------------------------------------------------align_err--------------------------------------------------------
fifo_ovfl        :0x0        |lane0_fifo_ovfl  :0x0        |lane1_fifo_ovfl  :0x0        |lane2_fifo_ovfl  :0x0        |
lane3_fifo_ovfl  :0x0        |                             |                             |                             |
-------------------------------------------------------diagnosis--------------------------------------------------------

【参数说明】

参数

描述

lane_mode

lane_mode

MIPI_RX的lane分布模式

port_attr

port_id

MIPI设备号

work_mode

MIPI设备工作模式:LVDS/MIPI等模式

data_rate

MIPI_RX的速率。

data_type

数据类型:RAW8 / RAW10/ RAW12/ RAW14 bit等类型

img_rect_x

Crop图像起始X

img_rect_y

Crop图像起始Y

img_width

Crop图像宽度

img_height

Crop图像高度

lane_id

Lane ID

wdr_mode (仅MIPI模式下可见)

WDR模式:

  • none:非WDR模式
  • VC:使用VC(Virtual Channel)来区分长/短曝光数据
  • DT:使用DT(Data Type)来区分长/短曝光数据
  • DOL:DOL宽动态传输格式

ext_dt_1(仅MIPI模式下可见)

对应扩展Data Type1的值

ext_dt_width_1(仅MIPI模式下可见)

对应扩展Data Type1输入数据的位宽

ext_dt_2(仅MIPI模式下可见)

对应扩展Data Type2的值

ext_dt_width_2(仅MIPI模式下可见)

对应扩展Data Type2输入数据的位宽

ext_dt_3(仅MIPI模式下可见)

对应扩展Data Type3的值

ext_dt_width_3(仅MIPI模式下可见)

对应扩展Data Type3输入数据的位宽

sync_mode(仅LVDS模式下可见)

LVDS同步方式,分为SOF和SAV

data_endian(仅LVDS模式下可见)

data比特位大小端,分为BIG(大端)和LITTLE(小端)

sync_code_endian(仅LVDS模式下可见)

同步码比特位大小端,分为BIG(大端)和LITTLE(小端)

wdr_type(仅LVDS模式下可见)

WDR模式:

  • none:非WDR模式
  • IND_SOF:使用独立的SOF/EOF来区分长/短曝光帧
  • SHARE_SOF:长/短曝光帧共用一对SOF和EOF
  • DOL_4TH:4个字段的同步码,使用独立的SAV-EAV来区分长/短曝光帧
  • DOL_HCONN:长/短曝光帧共用一对SAV-EAV,长/短曝光帧之间使用消隐区来区分
  • DOL_5TH:5个字段的同步码,第5个字段标识长/短帧

L0_VC0_scode_0(仅LVDS模式下可见)

Lane 0的VC0的SOF或invalid SAV同步码

L0_VC0_scode_1(仅LVDS模式下可见)

Lane 0的VC0的EOF或invalid EAV同步码

L0_VC0_scode_2(仅LVDS模式下可见)

Lane 0的VC0的SOL或valid SAV同步码

L0_VC0_scode_3(仅LVDS模式下可见)

Lane 0的VC0的EOL或valid EAV同步码

L0_VC1_scode_0(仅LVDS模式下可见)

Lane 0的VC1的SOF或invalid SAV同步码

L0_VC1_scode_1(仅LVDS模式下可见)

Lane 0的VC1的EOF或invalid EAV同步码

L0_VC1_scode_2(仅LVDS模式下可见)

Lane 0的VC1的SOL或valid SAV同步码

L0_VC1_scode_3(仅LVDS模式下可见)

Lane 0的VC1的EOL或valid EAV同步码

L1_VC0_scode_0(仅LVDS模式下可见)

Lane 1的VC0的SOF或invalid SAV同步码

L1_VC0_scode_1(仅LVDS模式下可见)

Lane 1的VC0的EOF或invalid EAV同步码

L1_VC0_scode_2(仅LVDS模式下可见)

Lane 1的VC0的SOL或valid SAV同步码

L1_VC0_scode_3(仅LVDS模式下可见)

Lane 1的VC0的EOL或valid EAV同步码

L1_VC1_scode_0(仅LVDS模式下可见)

Lane 1的VC1的SOF或invalid SAV同步码

L1_VC1_scode_1(仅LVDS模式下可见)

Lane 1的VC1的EOF或invalid EAV同步码

L1_VC1_scode_2(仅LVDS模式下可见)

Lane 1的VC1的SOL或valid SAV同步码

L1_VC1_scode_3(仅LVDS模式下可见)

Lane 1的VC1的EOL或valid EAV同步码

L2_VC0_scode_0(仅LVDS模式下可见)

Lane 2的VC0的SOF或invalid SAV同步码

L2_VC0_scode_1(仅LVDS模式下可见)

Lane 2的VC0的EOF或invalid EAV同步码

L2_VC0_scode_2(仅LVDS模式下可见)

Lane 2的VC0的SOL或valid SAV同步码

L2_VC0_scode_3(仅LVDS模式下可见)

Lane 2的VC0的EOL或valid EAV同步码

L2_VC1_scode_0(仅LVDS模式下可见)

Lane 2的VC1的SOF或invalid SAV同步码

L2_VC1_scode_1(仅LVDS模式下可见)

Lane 2的VC1的EOF或invalid EAV同步码

L2_VC1_scode_2(仅LVDS模式下可见)

Lane 2的VC1的SOL或valid SAV同步码

L2_VC1_scode_3(仅LVDS模式下可见)

Lane 2的VC1的EOL或valid EAV同步码

L3_VC0_scode_0(仅LVDS模式下可见)

Lane 3的VC0的SOF或invalid SAV同步码

L3_VC0_scode_1(仅LVDS模式下可见)

Lane 3的VC0的EOF或invalid EAV同步码

L3_VC0_scode_2(仅LVDS模式下可见)

Lane 3的VC0的SOL或valid SAV同步码

L3_VC0_scode_3(仅LVDS模式下可见)

Lane 3的VC0的EOL或valid EAV同步码

L3_VC1_scode_0(仅LVDS模式下可见)

Lane 3的VC1的SOF或invalid SAV同步码

L3_VC1_scode_1(仅LVDS模式下可见)

Lane 3的VC1的EOF或invalid EAV同步码

L3_VC1_scode_2(仅LVDS模式下可见)

Lane 3的VC1的SOL或valid SAV同步码

L3_VC1_scode_3(仅LVDS模式下可见)

Lane 3的VC1的EOL或valid EAV同步码

clk_state

sensor_clk

sensor时钟状态,0表示关闭,1表示开启

mipi_clk

MIPI时钟状态,0表示关闭,1表示开启

phy_info

phy_id

PHY ID序号

phy_en

phy 状态,0表示关闭,1表示开启

phy_d0_term_en

Lane 0终接匹配阻抗,0表示关闭,1表示打开

phy_d1_term_en

Lane 1终接匹配阻抗,0表示关闭,1表示打开

phy_d2_term_en

Lane 2终接匹配阻抗,0表示关闭,1表示打开

phy_d3_term_en

Lane 3终接匹配阻抗,0表示关闭,1表示打开

lane0_en

Lane 0工作使能,0表示关闭,1表示开启

lane1_en

Lane 1工作使能,0表示关闭,1表示开启

lane2_en

Lane 2工作使能,0表示关闭,1表示开启

lane3_en

Lane 3工作使能,0表示关闭,1表示开启

lane0_map

连接到Lane 0的Sensor的通道号

lane1_map

连接到Lane 1的Sensor的通道号

lane2_map

连接到Lane 2的Sensor的通道号

lane3_map

连接到Lane 3的Sensor的通道号

cil_d0_cur_stat

Lane 0 FSM当前的状态

cil_d0_nxt_stat

Lane 0 FSM的下一个状态

cil_d1_cur_stat

Lane 1 FSM当前的状态

cil_d1_nxt_stat

Lane 1 FSM的下一个状态

cil_d2_cur_stat

Lane 2 FSM当前的状态

cil_d2_nxt_stat

Lane 2 FSM的下一个状态

cil_d3_cur_stat

Lane 3 FSM当前的状态

cil_d3_nxt_stat

Lane 3 FSM的下一个状态

cil_clk_cur_stat

clock 0 FSM当前的状态

cil_clk_nxt_stat

clock 0 FSM的下一个状态

cil_clk2_cur_stat

clock 1 FSM当前的状态

cil_clk2_nxt_stat

clock 1 FSM的下一个状态

data_detect

phy_id

PHY ID序号

freq_measure

Data rate(MHz)

lane0_data

PHY对应的Lane 0接收到的实时数据

lane1_data

PHY对应的Lane 1接收到的实时数据

lane2_data

PHY对应的Lane 2接收到的实时数据

lane3_data

PHY对应的Lane 3接收到的实时数据

mipi_ph_d0(仅MIPI模式下可见)

PHY对应的Lane 0检测到的MIPI帧的数据包头

mipi_ph_d1(仅MIPI模式下可见)

PHY对应的Lane 1检测到的MIPI帧的数据包头

mipi_ph_d2(仅MIPI模式下可见)

PHY对应的Lane 2检测到的MIPI帧的数据包头

mipi_ph_d3(仅MIPI模式下可见)

PHY对应的Lane 3检测到的MIPI帧的数据包头

mipi_data0(仅MIPI模式下可见)

PHY对应的Lane 0检测到的MIPI帧的实时数据

mipi_data1(仅MIPI模式下可见)

PHY对应的Lane 1检测到的MIPI帧的实时数据

mipi_data2(仅MIPI模式下可见)

PHY对应的Lane 2检测到的MIPI帧的实时数据

mipi_data3(仅MIPI模式下可见)

PHY对应的Lane 3检测到的MIPI帧的实时数据

mipi_vc0_w(仅MIPI模式下可见)

MIPI控制器在VC0检测到的图像总宽度

mipi_vc0_h(仅MIPI模式下可见)

MIPI控制器在VC0检测到的图像总高度

mipi_vc1_w(仅MIPI模式下可见)

MIPI控制器在VC1检测到的图像总宽度

mipi_vc1_h(仅MIPI模式下可见)

MIPI控制器在VC1检测到的图像总高度

mipi_vc2_w(仅MIPI模式下可见)

MIPI控制器在VC2检测到的图像总宽度

mipi_vc2_h(仅MIPI模式下可见)

MIPI控制器在VC2检测到的图像总高度

mipi_vc3_w(仅MIPI模式下可见)

MIPI控制器在VC3检测到的图像总宽度

mipi_vc3_h(仅MIPI模式下可见)

MIPI控制器在VC3检测到的图像总高度

lvds_data0(仅LVDS模式下可见)

PHY对应的Lane 0检测到的LVDS帧同步信号后的实时数据

lvds_data1(仅LVDS模式下可见)

PHY对应的Lane 1检测到的LVDS帧同步信号后的实时数据

lvds_data2(仅LVDS模式下可见)

PHY对应的Lane 2检测到的LVDS帧同步信号后的实时数据

lvds_data3(仅LVDS模式下可见)

PHY对应的Lane 3检测到的LVDS帧同步信号后的实时数据

lvds_l0_width(仅LVDS模式下可见)

Lane 0上检测到的图像宽度

lvds_l0_height(仅LVDS模式下可见)

Lane 0上检测到的图像高度

lvds_l1_width(仅LVDS模式下可见)

Lane 1上检测到的图像宽度

lvds_l1_height(仅LVDS模式下可见)

Lane 1上检测到的图像高度

lvds_l2_width(仅LVDS模式下可见)

Lane 2上检测到的图像宽度

lvds_l2_height(仅LVDS模式下可见)

Lane 2上检测到的图像高度

lvds_l3_width(仅LVDS模式下可见)

Lane 3上检测到的图像宽度

lvds_l3_height(仅LVDS模式下可见)

Lane 3上检测到的图像高度

lvds_vc0_w(仅LVDS模式下可见)

控制器在VC0检测到的图像总宽度

lvds_vc0_h(仅LVDS模式下可见)

控制器在VC0检测到的图像总高度

lvds_vc1_w(仅LVDS模式下可见)

控制器在VC1检测到的图像总宽度

lvds_vc1_h(仅LVDS模式下可见)

控制器在VC1检测到的图像总高度

lvds_vc2_w(仅LVDS模式下可见)

控制器在VC2检测到的图像总宽度

lvds_vc2_h(仅LVDS模式下可见)

控制器在VC2检测到的图像总高度

lvds_vc3_w(仅LVDS模式下可见)

控制器在VC3检测到的图像总宽度

lvds_vc3_h(仅LVDS模式下可见)

控制器在VC3检测到的图像总高度

lvds_l02_pix_num(仅LVDS模式下可见)

在Lane 0和Lane 2上的像素数量

lvds_l13_pix_num(仅LVDS模式下可见)

在Lane 1和Lane 3上的像素数量

phy_err_irq

phy_id

PHY ID序号

clk_fsm_tmout

Clock Lane 从LP切换到HS 超时

clk_fsm_escape

Clock Lane 0切换到escape模式超时

d0_fsm_tmout

Data Lane 0从LP切换到HS超时

d1_fsm_tmout

Data Lane 1从LP切换到HS超时

d2_fsm_tmout

Data Lane 2从LP切换到HS超时

d3_fsm_tmout

Data Lane 3从LP切换到HS超时

d0_err_escape

Data Lane 0切换到escape模式超时

d1_err_escape

Data Lane 1切换到escape模式超时

d2_err_escape

Data Lane 2切换到escape模式超时

d3_err_escape

Data Lane 3切换到escape模式超时

mipi_err(仅MIPI模式下可见)

vc0_crc_err

VC0通道数据的CRC错误计数

vc1_crc_err

VC1通道数据的CRC错误计数

vc2_crc_err

VC2通道数据的CRC错误计数

vc3_crc_err

VC3通道数据的CRC错误计数

vc0_ecc_err

VC0通道Header的ECC已纠正的错误计数

vc1_ecc_err

VC1通道Header的ECC已纠正的错误计数

vc2_ecc_err

VC2通道Header的ECC已纠正的错误计数

vc3_ecc_err

VC3通道Header的ECC已纠正的错误计数

vc0_frm_num_err

VC0的帧序错误计数

vc1_frm_num_err

VC1的帧序错误计数

vc2_frm_num_err

VC2的帧序错误计数

vc3_frm_num_err

VC3的帧序错误计数

vc0_frm_mismatch

VC0通道的帧起始与帧结束短包不匹配计数

vc1_frm_mismatch

VC1通道的帧起始与帧结束短包不匹配计数

vc2_frm_mismatch

VC2通道的帧起始与帧结束短包不匹配计数

vc3_frm_mismatch

VC3通道的帧起始与帧结束短包不匹配计数

vsync_cnt

MIPI CTR vsync中断计数

rd_data_fifo_err

MIPI CTRL读数据FIFO中断计数

wr_data_fifo_err

MIPI CTRL写数据FIFO中断计数

rd_cmd_fifo_err

MIPI CTRL读命令FIFO中断计数

wr_cmd_fifo_err

MIPI CTRL写命令FIFO中断计数

data_fifo_n_emt

MIPI CTRL数据同步时存在重叠

cmd_fifo_n_emt

MIPI CTRL同步命令存在重叠

lvds_err(仅LVDS模式下可见)

rd_fifo_err_lk0

link0读FIFO错误中断计数

wr_fifo_err_lk0

link0写FIFO错误中断计数

rd_fifo_err_lk1

link1读FIFO错误中断计数

wr_fifo_err_lk1

link1写FIFO错误中断计数

lane0_sync_err

Lane0同步错误中断计数

lane1_sync_err

Lane1同步错误中断计数

lane2_sync_err

Lane2同步错误中断计数

lane3_sync_err

Lane3同步错误中断计数

vsync_cnt

LVDS CTR vsync中断计数

align_err

fifo_ovfl

FIFO溢出

lane0_fifo_ovfl

Lane0 FIFO溢出

lane1_fifo_ovfl

Lane1 FIFO溢出

lane2_fifo_ovfl

Lane2 FIFO溢出

lane3_fifo_ovfl

Lane3 FIFO溢出

diagnosis

从mipi rx控制器角度对接收数据的初步诊断

仅用于辅助定位问题,具体问题原因以上述错误中断为准

MIPI_RX Proc信息(Hi3511CV100)

-------------------------------------------------------lane_mode--------------------------------------------------------
lane_mode        :4          |                             |                             |                             |
-------------------------------------------------------port_attr--------------------------------------------------------
port_id          :0          |mipirx_work_mode :mipi       |data_rate        :x1         |mipirx_data_type :raw_16     |
img_rect_x       :0          |img_rect_y       :0          |img_width        :1920       |img_height       :1080       |
lane_id          :0,1,2,3    |wdr_mode         :none       |                             |                             |
-------------------------------------------------------clk_state--------------------------------------------------------
sensor_clk       :N          |mipi_clk         :Y          |bdl_clk          :Y          |                             |
--------------------------------------------------------phy_info--------------------------------------------------------
phy_id           :0          |phy_en           :Y          |                             |                             |
phy_d0_term_en   :Y          |phy_d1_term_en   :Y          |phy_d2_term_en   :Y          |phy_d3_term_en   :Y          |
lane0_en         :Y          |lane1_en         :Y          |lane2_en         :Y          |lane3_en         :Y          |
lane0_map        :0x0        |lane1_map        :0x1        |lane2_map        :0x2        |lane3_map        :0x3        |
cil_d0_cur_stat  :HS_LP00    |cil_d0_nxt_stat  :HS_LP00    |cil_d1_cur_stat  :HS_LP00    |cil_d1_nxt_stat  :HS_LP00    |
cil_d2_cur_stat  :IDLE       |cil_d2_nxt_stat  :IDLE       |cil_d3_cur_stat  :IDLE       |cil_d3_nxt_stat  :IDLE       |
cil_clk_cur_stat :HS_LP00    |cil_clk_nxt_stat :HS_LP00    |cil_clk2_cur_stat:LP11       |cil_clk2_nxt_stat:LP11       |
------------------------------------------------------data_detect-------------------------------------------------------
phy_id           :0          |freq_measure     :328MHz     |                             |                             |
lane0_data       :0xa9       |lane1_data       :0x85       |lane2_data       :0x86       |lane3_data       :0x0        |
mipi_ph_d0       :0x2e       |mipi_ph_d1       :0x0        |mipi_ph_d2       :0xf        |mipi_ph_d3       :0x12       |
mipi_data0       :0xa2       |mipi_data1       :0x7f       |mipi_data2       :0x7f       |mipi_data3       :0x82       |
mipi_vc0_w       :1920       |mipi_vc0_h       :1080       |mipi_vc1_w       :0          |mipi_vc1_h       :0          |
mipi_vc2_w       :0          |mipi_vc2_h       :0          |mipi_vc3_w       :0          |mipi_vc3_h       :0          |
bdl_ldo_en       :1          |bdl_lane_en      :1          |bdl_en           :0          |bdl_m_val        :0          |
bdl_code_val     :0          |                             |                             |                             |
------------------------------------------------------phy_err_irq-------------------------------------------------------
phy_id           :0          |                             |                             |                             |
clk_fsm_tmout    :0          |clk_fsm_escape   :0          |d0_fsm_tmout     :0          |d1_fsm_tmout     :0          |
d2_fsm_tmout     :0          |d3_fsm_tmout     :0          |d0_err_escape    :0          |d1_err_escape    :0          |
d2_err_escape    :0          |d3_err_escape    :0          |                             |                             |
--------------------------------------------------------mipi_err--------------------------------------------------------
vc0_crc_err      :0          |vc1_crc_err      :0          |vc2_crc_err      :0          |vc3_crc_err      :0          |
vc0_ecc_err      :0          |vc1_ecc_err      :0          |vc2_ecc_err      :0          |vc3_ecc_err      :0          |
vc0_frm_num_err  :3          |vc1_frm_num_err  :0          |vc2_frm_num_err  :0          |vc3_frm_num_err  :0          |
vc0_frm_mismatch :3          |vc1_frm_mismatch :0          |vc2_frm_mismatch :0          |vc3_frm_mismatch :0          |
vsync_cnt        :10         |rd_data_fifo_err :0          |wr_data_fifo_err :0          |rd_cmd_fifo_err  :0          |
wr_cmd_fifo_err  :0          |data_fifo_n_emt  :0          |cmd_fifo_n_emt   :0          |                             |
-------------------------------------------------------align_err--------------------------------------------------------
fifo_ovfl        :1          |lane0_fifo_ovfl  :1          |lane1_fifo_ovfl  :1          |lane2_fifo_ovfl  :1          |
lane3_fifo_ovfl  :0          |                             |                             |                             |
-------------------------------------------------------diagnosis--------------------------------------------------------

【参数说明】

参数

描述

lane_mode

lane_mode

MIPI_RX的lane分布模式

port_attr

port_id

MIPI设备号

work_mode

MIPI设备工作模式:MIPI模式

data_rate

MIPI_RX的速率。

data_type

数据类型:RAW16 bit、YUV422 8bit等类型

img_rect_x

Crop图像起始X

img_rect_y

Crop图像起始Y

img_width

Crop图像宽度

img_height

Crop图像高度

lane_id

Lane ID

wdr_mode (仅MIPI模式下可见)

WDR模式:

  • none:非WDR模式
  • VC:使用VC(Virtual Channel)来区分长/短曝光数据
  • DT:使用DT(Data Type)来区分长/短曝光数据
  • DOL:DOL宽动态传输格式

clk_state

sensor_clk

sensor时钟状态,N表示关闭,Y表示开启

mipi_clk

MIPI时钟状态,N表示关闭,Y表示开启

bdl_clk

模拟BDL的时钟状态,N表示关闭,Y表示开启

phy_info

phy_id

PHY ID序号

phy_en

phy 状态,N表示关闭,Y表示开启

phy_d0_term_en

Lane 0终接匹配阻抗,N表示关闭,Y表示打开

phy_d1_term_en

Lane 1终接匹配阻抗,N表示关闭,Y表示打开

phy_d2_term_en

Lane 2终接匹配阻抗,N表示关闭,Y表示打开

phy_d3_term_en

Lane 3终接匹配阻抗,N表示关闭,Y表示打开

lane0_en

Lane 0工作使能,N表示关闭,Y表示开启

lane1_en

Lane 1工作使能,N表示关闭,Y表示开启

lane2_en

Lane 2工作使能,N表示关闭,Y表示开启

lane3_en

Lane 3工作使能,N表示关闭,Y表示开启

lane0_map

连接到Lane 0的Sensor的通道号

lane1_map

连接到Lane 1的Sensor的通道号

lane2_map

连接到Lane 2的Sensor的通道号

lane3_map

连接到Lane 3的Sensor的通道号

cil_d0_cur_stat

Lane 0 FSM当前的状态

cil_d0_nxt_stat

Lane 0 FSM的下一个状态

cil_d1_cur_stat

Lane 1 FSM当前的状态

cil_d1_nxt_stat

Lane 1 FSM的下一个状态

cil_d2_cur_stat

Lane 2 FSM当前的状态

cil_d2_nxt_stat

Lane 2 FSM的下一个状态

cil_d3_cur_stat

Lane 3 FSM当前的状态

cil_d3_nxt_stat

Lane 3 FSM的下一个状态

cil_clk_cur_stat

clock 0 FSM当前的状态

cil_clk_nxt_stat

clock 0 FSM的下一个状态

cil_clk2_cur_stat

clock 1 FSM当前的状态

cil_clk2_nxt_stat

clock 1 FSM的下一个状态

bdl_ldo_en

模拟参数 BDL功能的LDO电压使能,1为使能,0为不使能

bdl_lane_en

模拟参数 BDL功能的lane使能,1为使能,0为不使能

bdl_en

模拟参数 BDL功能计算使能,1为使能,0为不使能

bdl_m_val

模拟参数 BDL功能计算出的m值

bdl_code_val

BDL功能,软件计算出的Code值

data_detect

phy_id

PHY ID序号

freq_measure

Data rate(MHz)

lane0_data

PHY对应的Lane 0接收到的实时数据

lane1_data

PHY对应的Lane 1接收到的实时数据

lane2_data

PHY对应的Lane 2接收到的实时数据

lane3_data

PHY对应的Lane 3接收到的实时数据

mipi_ph_d0(仅MIPI模式下可见)

PHY对应的Lane 0检测到的MIPI帧的数据包头

mipi_ph_d1(仅MIPI模式下可见)

PHY对应的Lane 1检测到的MIPI帧的数据包头

mipi_ph_d2(仅MIPI模式下可见)

PHY对应的Lane 2检测到的MIPI帧的数据包头

mipi_ph_d3(仅MIPI模式下可见)

PHY对应的Lane 3检测到的MIPI帧的数据包头

mipi_data0(仅MIPI模式下可见)

PHY对应的Lane 0检测到的MIPI帧的实时数据

mipi_data1(仅MIPI模式下可见)

PHY对应的Lane 1检测到的MIPI帧的实时数据

mipi_data2(仅MIPI模式下可见)

PHY对应的Lane 2检测到的MIPI帧的实时数据

mipi_data3(仅MIPI模式下可见)

PHY对应的Lane 3检测到的MIPI帧的实时数据

mipi_vc0_w(仅MIPI模式下可见)

MIPI控制器在VC0检测到的图像总宽度

mipi_vc0_h(仅MIPI模式下可见)

MIPI控制器在VC0检测到的图像总高度

mipi_vc1_w(仅MIPI模式下可见)

MIPI控制器在VC1检测到的图像总宽度

mipi_vc1_h(仅MIPI模式下可见)

MIPI控制器在VC1检测到的图像总高度

mipi_vc2_w(仅MIPI模式下可见)

MIPI控制器在VC2检测到的图像总宽度

mipi_vc2_h(仅MIPI模式下可见)

MIPI控制器在VC2检测到的图像总高度

mipi_vc3_w(仅MIPI模式下可见)

MIPI控制器在VC3检测到的图像总宽度

mipi_vc3_h(仅MIPI模式下可见)

MIPI控制器在VC3检测到的图像总高度

phy_err_irq

phy_id

PHY ID序号

clk_fsm_tmout

Clock Lane 从LP切换到HS 超时

clk_fsm_escape

Clock Lane 0切换到escape模式超时

d0_fsm_tmout

Data Lane 0从LP切换到HS超时

d1_fsm_tmout

Data Lane 1从LP切换到HS超时

d2_fsm_tmout

Data Lane 2从LP切换到HS超时

d3_fsm_tmout

Data Lane 3从LP切换到HS超时

d0_err_escape

Data Lane 0切换到escape模式超时

d1_err_escape

Data Lane 1切换到escape模式超时

d2_err_escape

Data Lane 2切换到escape模式超时

d3_err_escape

Data Lane 3切换到escape模式超时

mipi_err(仅MIPI模式下可见)

vc0_crc_err

VC0通道数据的CRC错误计数

vc1_crc_err

VC1通道数据的CRC错误计数

vc2_crc_err

VC2通道数据的CRC错误计数

vc3_crc_err

VC3通道数据的CRC错误计数

vc0_ecc_err

VC0通道Header的ECC已纠正的错误计数

vc1_ecc_err

VC1通道Header的ECC已纠正的错误计数

vc2_ecc_err

VC2通道Header的ECC已纠正的错误计数

vc3_ecc_err

VC3通道Header的ECC已纠正的错误计数

vc0_frm_num_err

VC0的帧序错误计数

vc1_frm_num_err

VC1的帧序错误计数

vc2_frm_num_err

VC2的帧序错误计数

vc3_frm_num_err

VC3的帧序错误计数

vc0_frm_mismatch

VC0通道的帧起始与帧结束短包不匹配计数

vc1_frm_mismatch

VC1通道的帧起始与帧结束短包不匹配计数

vc2_frm_mismatch

VC2通道的帧起始与帧结束短包不匹配计数

vc3_frm_mismatch

VC3通道的帧起始与帧结束短包不匹配计数

vsync_cnt

MIPI CTR vsync中断计数

rd_data_fifo_err

MIPI CTRL读数据FIFO中断计数

wr_data_fifo_err

MIPI CTRL写数据FIFO中断计数

rd_cmd_fifo_err

MIPI CTRL读命令FIFO中断计数

wr_cmd_fifo_err

MIPI CTRL写命令FIFO中断计数

data_fifo_n_emt

MIPI CTRL数据同步时存在重叠

cmd_fifo_n_emt

MIPI CTRL同步命令存在重叠

align_err

fifo_ovfl

FIFO溢出

lane0_fifo_ovfl

Lane0 FIFO溢出

lane1_fifo_ovfl

Lane1 FIFO溢出

lane2_fifo_ovfl

Lane2 FIFO溢出

lane3_fifo_ovfl

Lane3 FIFO溢出

diagnosis

从mipi rx控制器角度对接收数据的初步诊断

仅用于辅助定位问题,具体问题原因以上述错误中断为准

MIPI_TX Proc信息

MIPI_TX的proc信息主要有:MIPI_TX设备模块参数、MIPI_TX设备配置信息、MIPI_TX时序配置信息、MIPI_TX设备状态信息。

【调试信息】

Module: [MIPI_TX], Build Time[Sep 15 2022, 10:05:54]
----------mipi_tx module config------------------------
smooth
0

----------mipi_tx dev config---------------------------
devno   lane0   lane1   lane2   lane3    output_mode  phy_data_rate pixel_clk(KHz)     video_mode     output_fmt     clklane_continue_mode
0       0       1       2       3              1            378          60000              0              3           
   NON-CONTINUE

----------mipi_tx sync config---------------------------
hact           hbp           hfp           hsa          vact           vbp           vfp           vsa
800            20            32            20          1280             6             8             4

----------mipi_tx pn_swap config------------------------
      lane0_pn      lane1_pn      lane2_pn      lane3_pn
             0             0             0             0

----------mipi_tx dev status---------------------------
width  height horiall vertall     hbp     hsa     vsa  sync_check
800    1280     843    1298     824      32       4           0

【调试信息分析】

MIPI_TX模块参数、MIPI_TX设备配置信息、MIPI_TX时序配置信息等为设备启动前通过接口配置的信息;MIPI_TX设备状态信息是设备运行时检测到的部分时序信息:有效宽高、水平总宽度、垂直总高度。

【参数说明】

参数

描述

mipi_tx module config

smooth

平滑过渡标记:

0:关闭。

1:开启。

mipi_tx dev config

devno

设备号。

lane0

lane1

lane2

lane3

>=0:lane号码。

-1:禁用。

output_mode

0: csi mode

1: dsi video mode

2: dsi command mode

phy_data_rate

Phy数据率。

pixel_clk(KHz)

像素时钟(单位KHz)。

video_mode

0: BURST_MODE

1: NON_BURST_MODE_SYNC_PULSES

2: NON_BURST_MODE_SYNC_EVENTS

output_fmt

0: OUT_FORMAT_RGB_16BIT

1: OUT_FORMAT_RGB_18BIT

2: OUT_FORMAT_RGB_18BIT_LOOSELY

3: OUT_FORMAT_RGB_24BIT

4: OUT_FORMAT_YUV420_12BIT

5: OUT_FORMAT_YUV422_16BIT

6: OUT_FORMAT_YUV420_8BIT_NORMAL

7: OUT_FORMAT_YUV420_8BIT_LEGACY

8: OUT_FORMAT_YUV422_8BIT

9: OUT_FORMAT_RGB_888

10: OUT_FORMAT_RAW_8BIT

11: OUT_FORMAT_RAW_10BIT

12: OUT_FORMAT_RAW_12BIT

13: OUT_FORMAT_RAW_14BIT

14: OUT_FORMAT_RAW_16BIT

clklane_continue_mode

MIPITX的连续模式

0:MIPI_TX_CLK_LANE_CONTINUE

1:MIPI_TX_CLK_LANE_NON_CONTINUE

mipi_tx sync config

hact

水平有效区。

hbp

水平后消隐区。

hfp

水平前消隐区。

hsa

水平同步脉冲区。

vact

垂直有效区。

vbp

垂直后消隐区。

vfp

垂直前消隐区。

vsa

垂直同步脉冲区。

mipi_tx pn_swap config

lane0_pn

lane0 pn互换状态,

0:不互换;1:互换

lane1_pn

lane1 pn互换状态,

0:不互换;1:互换

lane2_pn

lane2 pn互换状态,

0:不互换;1:互换

lane3_pn

lane3 pn互换状态,

0:不互换;1:互换

mipi_tx dev status

width

检测到的宽。

height

检测到的高。

horiall

水平总宽。

vertall

垂直总高。

hbp

水平前肩。

hsa

水平同步脉冲个数。

vsa

垂直同步脉冲个数。

sync_check

时序参数校验。

将检测到的数值和配置数值进行对比,如相同则为1,不同则为0。

FAQ

MIPI具体规格请参考芯片手册。

MIPI RX Lane id如何配置

Lane id的配置对应mipi_dev_attr_t中的short lane_id[MIPI_LANE_NUM],其中lane_id数组的索引号表示的是sensor的Lane ID,lane_id数组的值表示的是MIPI的Lane ID。

对接sensor时,未使用的lane将其对应的lane_id配置为-1。配置lane_id还可以调整数据通道顺序,根据硬件单板与实际sensor输出通道的对应关系调整lane_id的配置。

下面举例进行说明,例如MIPI与sensor的引脚硬件连接如表1所示。

表 1 Sensor与MIPI_RX管脚关系

MIPI Lane管脚

sensor管脚

MIPI_RX1_D0

Lane 0

MIPI_RX1_D1

Lane 1

MIPI_RX1_D2

Lane 2

MIPI_RX1_D3

Lane 3

MIPI的最大Lane数为8,理解为sensor的Lane数目最多8个,由于sensor实际只有4个Lane,只输出数据到MIPI的4个Lane,需要将sensor未连接的或者不存在的Lane的lane_id配置为-1,所以lane_id配置如下:

如果Sensor的Lane id和MIPI_RX的Lane id线序不是一一对应,则存在乱序配置的场景,下面举例进行说明乱序场景下Lane id该如何配置。

图 1 Sensor场景下Lane id 配置

如图1所示,sensor的lane 0对应MIPI_RX的lane 1,sensor的lane 1对应MIPI_RX的lane 0,该场景的lane id的配置为{1, 0, 2, 3},也可表示为

lane_id[0] = 1; // 索引号表示sensor的lane id,值表示MIPI_RX的lane id
lane_id[1] = 0;
lane_id[2] = 2;
lane_id[3] = 3;

其中lane_id[0]中的0表示的是sensor的lane ID,lane_id[0] = 1中的1则表示MIPI_RX的lane ID。

【注意事项】

sensor非标接入时注意事项:

  • 非标接入指接入的实际sensor lane数小于对应hs_mode lane分布模式下DEV对应lane数,如4+4模式下,dev0对接1lane sensor或2lane sensor,不推荐非标接入场景。
  • 仅支持1,2,4,6,8 lane sensor,其他lane数sensor接入不支持。
  • 8 lane模式下接入1,2,4 lane sensor时,不支持跨phy混合使用lane,请使用lane0~3或者4~7。
  • 8 lane模式下接入6 lane sensor时,仅支持4+2/2+4跨phy混合使用。
  • 单lane sensor可使用lane 0/1/4/5,双lane sensor优先使用0,2/1,3/4,6/5,7,如有需要也可使用0,1/4,5。

MIPI TX Lane id如何配置

Lane id的配置对应combo_dev_cfg_t中的short lane_id[LANE_MAX_NUM],其中lane_id数组的索引号即数组下标表示的是 MIPI TX 的Lane ID。lane_id数组的值表示的是 MIPI TX 对端设备的Lane ID。

对接屏幕时,未使用的lane将其对应的lane_id配置为-1。配置lane_id还可以调整数据通道顺序,根据硬件单板与实际屏幕输出通道的对应关系调整lane_id的配置。

下面举例进行说明,例如MIPI TX与屏幕的引脚硬件连接如表1所示。

表 1 4lane屏幕与MIPI_TX管脚关系

MIPI TX Lane管脚

屏幕管脚

MIPI_TX_D2

dev_lane0

MIPI_TX_D3

dev_lane1

MIPI_TX_D0

dev_lane2

MIPI_TX_D1

dev_lane3

MIPI TX的最大Lane数为4,屏幕实际可能有4、2个Lane,只使用到MIPI TX的4个Lane或2个lane,需要将屏幕端未连接的或者不存在的Lane的lane_id配置为-1,所以4lane屏幕时,lane_id配置如下:

图 1 4lane屏幕时,lane_id配置

表 2 2lane屏幕与MIPI_TX管脚关系

MIPI TX Lane管脚

屏幕管脚

MIPI_TX_D1

dev_lane0

MIPI_TX_D0

dev_lane1

MIPI_TX_D2

未连接

MIPI_TX_D3

未连接

2lane屏幕时,lane_id配置如下:

图 2 2lane屏幕时,lane_id配置

MIPI频率说明

MIPI Lane频率与VI频率关系

使用MIPI多个Lanes进行数据传输,MIPI Lane的传输频率与VI处理频率如何对应,每一Lane可传输的最高速率如何计算?

  • MIPI_Rx使用多Lane接收数据,会转成内部时序,送给VI模块进行处理,多Lane传输的数据总量不变,有这样的计算公式:

    VI_Freq * Pix_Width = Lane_Num * MIPI_Freq

  • 其中,VI_Freq为VI的工作时钟, Pix_Width为像素位宽,Lane_Num为传输lane个数,MIPI_Freq为一个lane能接收的最大频率。

  • 下面以VI工作频率为250M,MIPI数据为RAW 12, 4Lane传输为例进行说明:

    MIPI_Freq = (250 * 12) / 4 = 750

    即每个Lane最高频率为750MHz

MIPI_RX自诊断信息

自诊断的提示信息会显示在proc下的diagnosis栏。如果没有显示任何提示,则表示根据当前已知的诊断都没有问题。

【提示说明】

提示

说明

There is no data input for the phy module. Please check the phy configuration.

表示PHY层没有数据,建议检查Sensor是否启动,初始化序列是否已经配置

There is no data input for the mipi module. Please check the mipi configuration.

仅在MIPI模式下生效。表示经过MIPI解析后没有数据,mipi 的配置以及sensor的配置。可以排查下mipi_ph,也就是mipi的包头的数据格式与mipi配置的包头数据格式是否一致

There is no data input for the lvds module. Please check the lvds configuration.

仅在LVDS模式下生效。表示lvds没有解析到数据,建议检查一下lvds的配置,重点检查同步码是否配置正确。

Some of the lanes may not have data flows. Please check whether receiver and transmitter have the correct number of the lanes enabled.

部分lane没有数据,建议检查一下lane相关的配置是否和发送端相符。

The signal quality of the hardware may not be good. Please check the hardware design or the transmitter's parameter.

crc的信号不太好,建议检查一下前端硬件,比如硬件走线是否符合标准。

The data flow is too fast to read. The data flow speed may exceed our capacity. Please reduce the data flow speed by using smaller resolution or smaller bit width.

数据频率太高来不及读写,可通过降低数据频率或加大消隐区等方式降频来解决。

MIPI_RX Debug

Hi3519DV500/Hi3516CV610:

echo command      para1 para2 para3  path                   explaination                   para descrption
echo cleanerr                        > /proc/umap/mipi_rx   clean err cnt
echo openlane     0     0     0      > /proc/umap/mipi_rx   open lane                      p0(port id) p1(lane index) p2(lane value)
echo closelane    0     0            > /proc/umap/mipi_rx   close lane                     p0(port id) p1(lane index)
echo colorbar     0     1     1      > /proc/umap/mipi_rx   color bar setting              p0(0:disable, 1:enable) p1(1:stripe, 0:fade) p2(0:lvds 1:mipi)
echo cropxy       0     1     1      > /proc/umap/mipi_rx   set crop coordinate            p0(port id) p1(x-coordinate x) p2(y-coordinate)
echo cropwh       0     1     1      > /proc/umap/mipi_rx   set crop size                  p0(port id) p1(width) p2(height)
echo seteq        0     8            > /proc/umap/mipi_rx   set eq                         p0(port id) eq(0-0xF)

Hi3511CV100:

echo command      para1 para2 para3 para4 para5 path                   explaination                   para descrption
echo cleanerr                                   > /proc/umap/mipi_rx   clean err cnt
echo openlane     0     0     0                 > /proc/umap/mipi_rx   open lane                      p0(port id) p1(lane index) p2(lane value)
echo closelane    0     0                       > /proc/umap/mipi_rx   close lane                     p0(port id) p1(lane index)
echo colorbar     0     1     0     1     0x1F  > /proc/umap/mipi_rx   color bar setting              p0*(0:disable, 1:enable) p1*(0:lvds 1:mipi) p2(0:purple, 1:green) p3(0:fade, 1:stripe, 2:diagonal, 3:flat) p4(colorbar width)
echo cropxy       0     1     1                 > /proc/umap/mipi_rx   set crop coordinate            p0(port id) p1(x-coordinate x) p2(y-coordinate)
echo cropwh       0     1     1                 > /proc/umap/mipi_rx   set crop size                  p0(port id) p1(width) p2(height)
echo seteq        0     8                       > /proc/umap/mipi_rx   set eq                         p0(port id) eq(0-0xF)

【参数说明】

参数

描述

echo cleanerr > /proc/umap/mipi_rx

可清除当前的中断计数,便于在有大量中断上报时分辨哪些中断在持续增加

echo open lane 0 0 0 > /proc/umap/mipi_rx

开启Lane并配置该Lane与Sensor 的Lane对应关系

  • para1 表示设备id
  • para2 表示Sensor的Lane ID
  • para3 表示该Sensor Lane ID对应的MIPI_RX的Lane ID

echo closelane 0 0 > /proc/umap/mipi_rx

关闭Lane

  • para1 表示设备ID
  • para2 表示需要关闭的MIPI_RX的Lane ID

Hi3519DV500/Hi3516CV610:

echo colorbar 0 1 1 > /proc/umap/mipi_rx

Hi3511CV100:

echo colorbar 0 1 0 1 0x1F > /proc/umap/mipi_rx

Colorbar 功能

Hi3519DV500/Hi3516CV610:

  • para1 表示开启(1)或关闭(0)
  • para2 表示Colobar的样式,彩条(1)或者渐变(0)
  • para3 表示Sensor的协议类型,MIPI(1)或LVDS(0)

Hi3511CV100:

  • para1 表示开启(1)或关闭(0)(必须)
  • para2 表示Sensor的协议类型,MIPI(1)或LVDS(0)(必须)
  • para3 表示Colobar的初始颜色,绿色(1)或者紫色(0)
  • para4 表示Colobar的样式,彩条(1)或者渐变(0)或者斜纹(2)或者纯色(3)
  • para5 表示Colorbar的彩条宽度

echo cropxy 0 1 1 > /proc/umap/mipi_rx

裁剪图像的起始坐标

  • para1 表示设备ID
  • para2 表示起始坐标x的坐标值
  • para3 表示起始坐标y的坐标值

echo cropwh 0 1 1 > /proc/umap/mipi_rx

裁剪图像的宽高

  • para1 表示设备ID
  • para2 表示需要裁剪图像宽度的值
  • para3 表示需要裁剪图像高度的值

echo seteq 0 8 > /proc/umap/mipi_rx

调整EQ,优化信号质量

  • para1 表示设备ID
  • para2 表示EQ的值

Proc定位建议

MIPI定位建议
  1. 连续查看两次proc,确认lane_data是否有数据且数据是否有变化,如有变化,则表示PHY层有数据进来,进行下一步骤。也可通过phy_info 中的cil_stat来确认当前每条lane处于什么状态。其中“IDLE”表示没有数据进来,“LP11”表示该lane处于低功耗模式,“HS_LP00”表示该lane处于高速传输数据的状态。
  2. 查看mipi_ph是否有数据,特别是mipi_ph_d0,一般表示的是数据格式。通过对比协议可判断传进来的数据的数据格式,再将该格式与MIPI配置进行比对,如果不一致,则调整sensor配置。如果一致,进行下一步。
  3. 查看mipi_data是否有数据,如果没有数据,则表示mipi没有解析出来,需要排查mipi的配置。
  4. 多次查看proc,phy_err/mipi_err/align_err是否有中断持续上报。
    • 遇到crc或ecc的err有持续增加,通常为硬件信号不稳定,建议排查硬件排线或检查信号质量;
    • 遇到fifo相关的err有持续增加,表示数据太快无法正常读写,建议提升data rate或减少分辨率或增加sensor消隐区。
LVDS定位建议
  1. 连续查看两次proc,确认lane_data是否有数据且数据是否有变化,如有变化,则表示PHY层有数据进来,进行下一步骤。也可通过phy_info 中的cil_stat来确认当前每条lane处于什么状态。其中“IDLE”表示没有数据进来,“LP11”表示该lane处于低功耗模式,“HS_LP00”表示该lane处于高速传输数据的状态。
  2. 查看lvds_data是否有数据,如果没有数据,表示lvds没有解析到数据。建议排查同步码是否配置正确。
  3. 查看phy_err/lvds_err/align_err是否有中断持续上报。
    • 遇到sync_err持续增加,则表示部分lane无法检测到同步头,需排查同步头、大小端、每个像素的bit数是否和发送端匹配;
    • 遇到fifo相关的err有持续增加,表示数据太快无法正常读写,建议提升data rate或减少分辨率或增加sensor消隐区。

LVDS配置示例

在LVDS传输模式中,行场同步信号集成在数据流中,在数据流中的特殊码型SOF和EOF分别表示帧的起始和结束,SOL和EOL分别表示行的起始和结束。在数据流中,SOF/EOF/SOL/EOL由4个字段构成,每个字段的位宽与像素数据保持一致,前3个字段为固定的基准码字,根据第4个字段来区分帧/行的起始或结束。

表 1 LVDS同步码格式

Field

Bit Width

Sync code

SOL/SAV(Valid line)

EOL/EAV(Valid line)

SOF/SAV(Invalid line)

EOF/EAV(Invalid line)

1st code

8bit

FFh

FFh

FFh

FFh

10bit

3FFh

3FFh

3FFh

3FFh

12bit

FFFh

FFFh

FFFh

FFFh

14bit

3FFFh

3FFFh

3FFFh

3FFFh

16bit

FFFFh

FFFFh

FFFFh

FFFFh

2nd code

8bit

00h

00h

00h

00h

10bit

000h

000h

000h

000h

12bit

000h

000h

000h

000h

14bit

0000h

0000h

0000h

0000h

16bit

0000h

0000h

0000h

0000h

3rd code

8bit

00h

00h

00h

00h

10bit

000h

000h

000h

000h

12bit

000h

000h

000h

000h

14bit

0000h

0000h

0000h

0000h

16bit

0000h

0000h

0000h

0000h

4th code

8bit

XXh

XXh

XXh

XXh

10bit

XXXh

XXXh

XXXh

XXXh

12bit

XXXh

XXXh

XXXh

XXXh

14bit

XXXXh

XXXXh

XXXXh

XXXXh

16bit

XXXXh

XXXXh

XXXXh

XXXXh

同步码前三个字段固定,第4个字段标识行场的起始或结束。第4个字段的值由图像传感器厂商确定,不同的厂商会使用不同的数值。

表 2 LVDS同步码第4个字段举例

Field

Bit Width

Sync code

SAV(Valid line)

EAV(Valid line)

SAV(Invalid line)

EAV(Invalid line)

4th code

8bit

80h

9Dh

ABh

B6h

10bit

200h

274h

2ACh

2D8h

12bit

800h

9D0h

AB0h

B60h

14bit

2000h

2740h

2AC0h

2D80h

16bit

8000h

9D00h

AB00h

B600h

以4个Lane为例,LVDS同步码和像素数据在各个Lane上传输方式如图1所示,图中H表示同步码,P表示像素,H和P的位宽与图像传感器输出单个像素的位宽一致。各个数据通道首先传输4个像素位宽的同步码,紧接着是像素数据,像素数据的分布与通道数有关。

图 1 LVDS同步码和图像传输模式1

以12bit配置示例代码:

只需要配上述的第四个字段,sync_code每行是按照sof eof sol eol顺序

combo_dev_attr_t test =
{
    .devno = 0,
    .input_mode = INPUT_MODE_LVDS,
    .data_rate  = MIPI_DATA_RATE_X1,
    .img_rect   = {0, 0, 1920, 1080},
    .lvds_attr =
    {
        .input_data_type   = DATA_TYPE_RAW_12BIT,
        .wdr_mode          = HI_LVDS_WDR_MODE_NONE,
        .sync_mode         = LVDS_SYNC_MODE_SOF,
        .vsync_attr        = {LVDS_VSYNC_NORMAL, 0, 0},
        .fid_attr          = {LVDS_FID_NONE, HI_TRUE},
        .data_endian       = LVDS_ENDIAN_BIG,
        .sync_code_endian  = LVDS_ENDIAN_BIG,
        .lane_id = {0, 2, 1, 3},
        .sync_code = {
            {
                {0xAB0, 0xB60, 0x800, 0x9D0},      // lane 0
                {0xAB0, 0xB60, 0x800, 0x9D0},
                {0xAB0, 0xB60, 0x800, 0x9D0},
                {0xAB0, 0xB60, 0x800, 0x9D0}
            },
            {
                {0xAB0, 0xB60, 0x800, 0x9D0},      // lane 0
                {0xAB0, 0xB60, 0x800, 0x9D0},
                {0xAB0, 0xB60, 0x800, 0x9D0},
                {0xAB0, 0xB60, 0x800, 0x9D0}
            },
            {
                {0xAB0, 0xB60, 0x800, 0x9D0},      // lane 0
                {0xAB0, 0xB60, 0x800, 0x9D0},
                {0xAB0, 0xB60, 0x800, 0x9D0},
                {0xAB0, 0xB60, 0x800, 0x9D0}
            },
            {
                {0xAB0, 0xB60, 0x800, 0x9D0},      // lane 0
                {0xAB0, 0xB60, 0x800, 0x9D0},
                {0xAB0, 0xB60, 0x800, 0x9D0},
                {0xAB0, 0xB60, 0x800, 0x9D0}
            },
        }
    }
};

图 2 LVDS同步码和图像传输模式2

配置示例代码:

只需要配上述的第四个字段,sync_code每行是按照sof eof sol eol顺序

combo_dev_attr_t test =
{
    .devno = 0,
    .input_mode = INPUT_MODE_LVDS,
    .data_rate  = MIPI_DATA_RATE_X1,
    .img_rect   = {0, 0, 1920, 1080},
    .lvds_attr =
    {
        .input_data_type   = DATA_TYPE_RAW_12BIT,
        .wdr_mode          = HI_LVDS_WDR_MODE_NONE,
        .sync_mode         = LVDS_SYNC_MODE_SOF,
        .vsync_attr        = {LVDS_VSYNC_NORMAL, 0, 0},
        .fid_attr          = {LVDS_FID_NONE, HI_TRUE},
        .data_endian       = LVDS_ENDIAN_BIG,
        .sync_code_endian  = LVDS_ENDIAN_BIG,
        .lane_id = {0, 2, 1, 3},
        .sync_code = {
            {
                {0x002, 0x003, 0x000, 0x001},      // lane 0
                {0x002, 0x003, 0x000, 0x001},
                {0x002, 0x003, 0x000, 0x001},
                {0x002, 0x003, 0x000, 0x001}
            },
            {
                {0x012, 0x013, 0x010, 0x011},      // lane 1
                {0x012, 0x013, 0x010, 0x011},
                {0x012, 0x013, 0x010, 0x011},
                {0x012, 0x013, 0x010, 0x011}
            },
            {
                {0x006, 0x007, 0x004, 0x005},      // lane2
                {0x006, 0x007, 0x004, 0x005},
                {0x006, 0x007, 0x004, 0x005},
                {0x006, 0x007, 0x004, 0x005}
            },
            {
                {0x016, 0x017, 0x014, 0x015},      // lane3
                {0x016, 0x017, 0x014, 0x015},
                {0x016, 0x017, 0x014, 0x015},
                {0x016, 0x017, 0x014, 0x015}
            },
        }
    }
};

同步码和像素数据的传输是串行的,MIPI Rx支持数据的大小端可配置。以RAW12、大端模式为例,图像传感器输出单个像素点的时序如图3所示。

图 3 LVDS单个像素点时序

MIPI mipirx问题定位参考

mipirx报错可能性很多,可能是硬件设计、mipi排线质量,或发送的速率太快等问题;mipi信号不符合协议要求,无输出无信号,一些简单的配置首先确认,时钟配置、时钟地址是否正确。

  1. 调试sensor的lane模式时,mipirx要配置成对应模式,前提是需要sensor厂商提供sensor对应模式的新序列。例如客户想设置sensor为2+2lane模式,mipi端配置了2+2lane的模式,但是sensor用的是默认的4lane模式,模式不匹配,会导致出图异常。
  2. sensor的datarate较高时,mipirx接收会报错,计算datarate的公式:[宽*高*频率*(线性1或WDR2)*(传输格式)]/lane数。如4lane 1920*1080P60 以WDR模式10bit传输,每lane的datarate为1920*1080*60*2*10/4=622.08Mbps

    如果sensor给的datarate比计算出的值大很多的话,首先考虑sensor降速。

  3. 不出图问题,看mipirx的proc如果某几个通道没有数据,可以让硬件量一下信号,确定是不是真的没有数据,同步可以看gpio引脚配置是否正确。

  4. mipi采集sensor输出的数据时,看proc发现帧带宽正常,高度比预期小很多。

    • 首先可以测一个正常时候的速率,例如采集60fps时异常,30fps时正常。用示波器分别量60fps、30fps时的速率。
    • 若60fps量出是594Mbps,30fps是890Mbps,大概率是60fps时lane的速率不够。需要sensor厂商出高一点的速率配置。
  5. sensor接转接板接mipi,调试新方案没有出图,首先读proc及寄存器确定lane 2的数据一直是0,确定sensor出来的尺寸,需要为8字节对齐,比如1608*1137需要配成1608*1136,否则会报错。

  6. 在无信号时,看mipi的proc信息,发现mipi检测到宽高信息不对,ECC2校验错误。可以尝试改sensor某些配置,将mipi clk速率加大翻倍后正常。

MIPI mipitx问题定位参考

若按照版本包里给的phy_data_rate的计算公式来配置后,观察到mipitx proc的mipi_tx dev status里的检测参数和配置的不一致时,可以适当增大phy_data_rate的值来尝试解决这个问题。

错误码

MIPI_RX 输出API错误码如表1。

说明:

Hi3519DV500不支持错误码,返回值仅为-1。

表 1 MIPI_RX 输出API错误码

错误代码

宏定义

描述

0xa05e8001

OT_ERR_MIPIRX_INVALID_PORT_ID

设备id无效

0xa05e8006

OT_ERR_MIPIRX_INVALID_LANE_ID

Lane id无效

0xa05e8007

OT_ERR_MIPIRX_ILLEGAL_PARAM

MIPI_RX参数无效

0xa05e800a

OT_ERR_MIPIRX_NULL_PTR

空指针

0xa05e800b

OT_ERR_MIPIRX_NOT_SET_LANE_MODE

未设置lane组合模式

0xa05e800c

OT_ERR_MIPIRX_MODE_NOT_SUPPORT

操作不支持

0xa05e8014

OT_ERR_MIPIRX_FAILED_MALLOC

内存分配失败

0xa05e8021

OT_ERR_MIPIRX_BAD_IOREMAP

寄存器地址映射失败