MI MIPITX API

Version 2.01


1. 概述


1.1. 模块说明

将Dram数据通过MIPI接口协议发送出去。


1.2. 流程框图


2. API 参考


2.1. 功能模块API

API名 功能
MI_MipiTx_CreateChannel 创建一个MipiTx channel
MI_MipiTx_DestroyChannel 销毁一个MipiTx channel
MI_MipiTx_GetChannelAttr 获取MipiTx channel属性
MI_MipiTx_StartChannel 启用MipiTx channel
MI_MipiTx_StopChannel 禁用MipiTx channel
MI_MipiTx_SetTimingConfig 设置MipiTx 通道时序参数
MI_MipiTx_GetTimingConfig 获取MipiTx 通道时序参数
MI_MipiTx_InitDev 初始化MipiTx设备
MI_MipiTx_DeInitDev 反初始化MipiTx设备

2.2. MI_MipiTx_CreateChannel

  • 描述

    创建一个MipiTx channel。

  • 语法

    MI_S32 MI_MipiTx_CreateChannel(MI_U32 u32ChannelId, MI_MipiTx_ChannelAttr_t *pstMipiTxChAttr);
    
  • 参数

    参数名称 描述 输入/输出
    u32ChannelId MipiTx channel号。 输入
    pstMipiTxChAttr MipiTx channel属性指针。 输入
  • 返回值

    • 0 成功。

    • 非0 失败,参照错误码

  • 需求

    • 头文件:mi_mipitx.h

    • 库文件:

  • 注意

    • 不支持重复创建
  • 举例

    mipi tx 功能设置如下

    MI_U32 u32ChnId = 0;
    MI_MipiTx_ChannelAttr_t stMipiChnAttr;
    memset(&stMipiChnAttr, 0x0, sizeof(MI_MipiTx_ChannelAttr_t));
    
    stMipiChnAttr.eLaneNum = E_MI_MIPITX_LANE_NUM_4;
    stMipiChnAttr.ePixFormat = E_MI_SYS_PIXEL_FRAME_YUV422_YUYV;
    stMipiChnAttr.u32Dclk = 445500;
    stMipiChnAttr.u8DCLKDelay = 0;
    stMipiChnAttr.u32Width = 1920;
    stMipiChnAttr.u32Height = 1080;
    stMipiChnAttr.peChSwapType = NULL;
    
    MI_MipiTx_CreateChannel(u32ChnId, &stMipiChnAttr);
    
    MI_MipiTx_TimingConfig_t stTimingCfg;
    memset(&stTimingCfg, 0x0, sizeof(MI_MipiTx_TimingConfig_t));
    
    stTimingCfg.u8Lpx  = 0x07;
    stTimingCfg.u8ClkHsPrpr = 0x08;
    stTimingCfg.u8ClkZero = 0x20;
    stTimingCfg.u8ClkHsPre = 0x01;
    stTimingCfg.u8ClkHsPost = 0x10;
    stTimingCfg.u8ClkTrail = 0x0a;
    stTimingCfg.u8HsPrpr = 0x01;
    stTimingCfg.u8HsZero = 0x0F;
    stTimingCfg.u8HsTrail = 0X0A;
    
    MI_MipiTx_SetTimingConfig(u32ChnId, &stTimingCfg);
    
    MI_MipiTx_StartChannel(u32ChnId);
    
    /****exit****/
    MI_MipiTx_StopChannel(u32ChnId);
    MI_MipiTx_DestroyChannel(u32ChnId);
    

    注:Dclk参数设置参考MI_MipiTx_ChannelAttr_t 中的注意;

    Timing参数设置参考MI_MipiTx_TimingConfig_t中的注意。

  • 相关主题

    MI_MipiTx_DestroyChannel


2.3. MI_MipiTx_DestroyChannel

  • 描述

    销毁一个MipiTx channel.

  • 语法

    MI_S32 MI_MipiTx_DestroyChannel(MI_U32 u32ChannelId);
    
  • 参数

    参数名称 描述 输入/输出
    u32ChannelId MipiTx channel号。 输入
  • 返回值

    • 0 成功。

    • 非0 失败,参照错误码

  • 需求

    • 头文件:mi_mipitx.h

    • 库文件:

  • 举例

    请参见MI_MipiTx_CreateChannel

  • 相关主题

    MI_MipiTx_CreateChannel


2.4. MI_MipiTx_GetChannelAttr

  • 描述

    获取一个MipiTx channel属性.

  • 语法

    MI_S32 MI_MipiTx_GetChannelAttr(MI_U32 u32ChannelId, MI_MipiTx_ChannelAttr_t *pstMipiTxChAttr);
    
  • 参数

    参数名称 描述 输入/输出
    u32ChannelId MipiTx channel号。 输入
    pstMipiTxChAttr MipiTx channel属性指针。 输出
  • 返回值

    • 0 成功。

    • 非0 失败,参照错误码

  • 需求

    • 头文件:mi_mipitx.h

    • 库文件:

  • 举例

    请参见MI_MipiTx_CreateChannel

  • 相关主题

    MI_MipiTx_CreateChannel


2.5. MI_MipiTx_StartChannel

  • 描述

    启用MipiTx channel.

  • 语法

    MI_S32 MI_MipiTx_StartChannel(MI_U32 u32ChannelId);
    
  • 参数

    参数名称 描述 输入/输出
    u32ChannelId MipiTx channel号。 输入
  • 返回值

    • 0 成功。

    • 非0 失败,参照错误码

  • 需求

    • 头文件:mi_mipitx.h

    • 库文件:

  • 举例

    请参见MI_MipiTx_CreateChannel

  • 相关主题

    MI_MipiTx_StopChannel


2.6. MI_MipiTx_StopChannel

  • 描述

    禁用MipiTx channel.

  • 语法

    MI_S32 MI_MipiTx_StopChannel(MI_U32 u32ChannelId);
    
  • 参数

    参数名称 描述 输入/输出
    u32ChannelId u32ChannelId号。 输入
  • 返回值

    • 0 成功。

    • 非0 失败,参照错误码

  • 需求

    • 头文件:mi_mipitx.h

    • 库文件:

  • 举例

    请参见MI_MipiTx_CreateChannel

  • 相关主题

    MI_MipiTx_StartChannel


2.7. MI_MipiTx_SetTimingConfig

  • 描述

    设置MipiTx 通道时序参数。

  • 语法

    MI_S32 MI_MipiTx_SetTimingConfig(MI_U32 u32ChannelId, MI_MipiTx_TimingConfig_t *pstMipiTimingCfg);
    
  • 参数

    参数名称 描述 输入/输出
    u32ChannelId MipiTx channel号。 输入
    pstMipiTimingCfg MipiTx 时序参数。 输入
  • 返回值

    • 0 成功。

    • 非0 失败,参照错误码

  • 需求

    • 头文件:mi_mipitx.h

    • 库文件:

  • 举例

    请参见MI_MipiTx_CreateChannel

  • 相关主题

    MI_MipiTx_GetTimingConfig


2.8. MI_MipiTx_GetTimingConfig

  • 描述

    获取MipiTx 通道时序参数。

  • 语法

    MI_S32 MI_MipiTx_GetTimingConfig(MI_U32 u32ChannelId, MI_MipiTx_TimingConfig_t *pstMipiTimingCfg);
    
  • 参数

    参数名称 描述 输入/输出
    u32ChannelId MipiTx channel号。 输入
    pstMipiTimingCfg MipiTx 时序参数 输出
  • 返回值

    • 0 成功。

    • 非0 失败,参照错误码

  • 需求

    • 头文件:mi_mipitx.h

    • 库文件:

  • 举例

    请参见MI_MipiTx_CreateChannel

  • 相关主题

    MI_MipiTx_SetTimingConfig


2.9. MI_MipiTx_InitDev

  • 描述

    初始化MipiTx设备

  • 语法

    MI_S32 MI_MipiTx_InitDev(MI_MipiTx_InitParam_t *pstInitParam);
    
  • 参数

    参数名称 描述 输入/输出
    pstInitParam 设备初始化参数。 输入
  • 返回值

    • MI_OK 成功。

    • 非MI_OK 失败,参照错误码

  • 需求

    • 头文件:mi_common.h、mi_mipitx.h

    • 库文件:

  • 注意

    本接口必须和MI_MipiTx_DeInitDev成对使用,不可单独重复调用,否则返回失败。


2.10. MI_MipiTx_DeInitDev

  • 描述

    反初始化MipiTx设备

  • 语法

    MI_S32 MI_MipiTx_DeInitDev(void);
    
  • 返回值

    • MI_OK 成功。

    • 非MI_OK 失败,参照错误码

  • 需求

    • 头文件:mi_mipitx.h

    • 库文件:

  • 注意

    此函数必须在初始化设备后调用,否则返回失败。

    本接口必须和MI_MipiTx_InitDev成对使用,不可单独重复调用,否则返回失败。


3. Mipitx 数据类型


3.1. 数据类型定义

数据类型 定义
MI_MipiTx_TimingConfig_t 定义MipiTx Timing 参数类型
MI_MipiTx_LaneNum_e 定义MipiTx Lane num 的类型
MI_MipiTx_ChannelSwapType_e 定义Lane Id 顺序
MI_MipiTx_ChannelAttr_t 定义MipiTx Channel 通道属性
MI_MipiTx_InitParam_t 定义MipiTx设备初始化参数

3.2. MI_MipiTx_TimingConfig_t

  • 说明

    定义MipiTx Timing 参数类型。

  • 定义

    typedef struct MI_MipiTx_TimingConfig_s
    
    {
    
        MI_U8 u8Lpx;
    
        MI_U8 u8ClkHsPrpr;
    
        MI_U8 u8ClkZero;
    
        MI_U8 u8ClkHsPre;
    
        MI_U8 u8ClkHsPost;
    
        MI_U8 u8ClkTrail;
    
        MI_U8 u8HsPrpr;
    
        MI_U8 u8HsZero;
    
        MI_U8 u8HsTrail;
    
    } MI_MipiTx_TimingConfig_t;
    
  • 成员

    成员名称 描述
    u8ClkHsPost 所有data lane进入低功耗模式后,Clock lane保持高速时钟状态时间, 如图3.1.2中TCLK-POST
    u8ClkTrail 进入低功耗模式前Clock lane维持HS-0 时间,如图3.1.2 TCLK-TRAIL
    u8Lpx 低功耗模式Clock lane维持LP_01时间,如图3.1.2 TLPX
    u8ClkHsPrpr 低功耗模式Clock lane维持LP_00时间,如图3.1.2 TCLK-PREPARE
    u8ClkZero 进入高速模式前Clock lane维持HS-0时间,如图3.1.2 TCLK-ZERO
    u8ClkHsPre Data传输之前Clock lane维持高速时钟时间,如图3.1.2 TCLK-PRE
    u8HsPrpr Data 传输之前Data Lane维持LP_OO时间, 如图3.1.1 THS-PREPARE
    u8HsZero Data 传输之前Data Lane维持HS-0时间, 如图3.1.1 THS-ZERO
    u8HsTrail Data 传输结束后Data Lane维持HS-0或HS-1,如图3.1.1 THS-TRAIL

    图3-1 由低功耗模式(LP)进入高速模式(HS)时序图

    图3-2 由高速模式进入低功耗模式时序图3.1.2

  • 注意事项

    Timing 设置建议时间如上表,Time=(R+1)*TB, 例如TLpx=8TB, u8Lpx=7;

  • 相关数据类型及接口

    MI_MipiTx_SetTimingConfig

    MI_MipiTx_GetTimingConfig


3.3. MI_MipiTx_LaneNum_e

  • 说明

    定义MipiTx Lane num 的类型。

  • 定义

    typedef enum
    
    {
    
        E_MI_MIPITX_LANE_NUM_NONE = 0,
    
        E_MI_MIPITX_LANE_NUM_1    = 1,
    
        E_MI_MIPITX_LANE_NUM_2    = 2,
    
        E_MI_MIPITX_LANE_NUM_3    = 3,
    
        E_MI_MIPITX_LANE_NUM_4    = 4,
    
    } MI_MipiTx_LaneNum_e;
    
  • 注意事项

    MipiTx 和RX 的 Lane Num 数量一定相等。

  • 相关数据类型及接口

    MI_MipiTx_ChannelAttr_t


3.4. MI_MipiTx_ChannelSwapType_e

  • 说明

    定义Lane Id 顺序。

  • 定义

    typedef enum
    
    {
    
        E_MI_MIPITX_CH_SWAP_0,
    
        E_MI_MIPITX_CH_SWAP_1,
    
        E_MI_MIPITX_CH_SWAP_2,
    
        E_MI_MIPITX_CH_SWAP_3,
    
        E_MI_MIPITX_CH_SWAP_4,
    
    } MI_MipiTx_ChannelSwapType_e;
    
  • 注意事项

    默认情况下lane0 CH0, lane1 CH1, lane2 CH2, lane3 CH3, Clk CH4对应。

  • 相关数据类型及接口

    MI_MipiTx_ChannelAttr_t


3.5. MI_MipiTx_ChannelAttr_t

  • 说明

    定义MipiTx Channel 通道属性。

  • 定义

    typedef struct
    
    {
    
        MI_U32                          u32Width;
    
        MI_U32                          u32Height;
    
        MI_SYS_PixelFormat_e            ePixFormat; // YUV422 YVYU, RAW8
    
        MI_MipiTx_LaneNum_e             eLaneNum;
    
        MI_U8                          u8DCLKDelay; ///<  DCLK Delay
    
        MI_U32                         u32Dclk;     ///<  DCLK ( Htt * Vtt * Fps)
    
        MI_MipiTx_ChannelSwapType_e    *peChSwapType;  ///< all lane order swap
    
    }MI_MipiTx_ChannelAttr_t;
    
  • 成员

    成员名称 描述
    u32Width 传输数据水平大小
    u32Height 传输数据垂直大小
    ePixFormat 传输数据像素格式
    enLaneNum 传输数据通道数量
    u8DCLKDelay 传输数据时钟偏移
    u32Dclk 传输数据时钟
    peChSwapType Lane id 排列顺序
  • 注意事项

    • ePixFormat当前只支持YUV422 YUYV 格式。

    • u32Dclk = width*1.2*height*1.2*Fps*bit/LaneNum,单位Hz。 Dclk 有4个档位:100M~200M, 200M~400M, 400M~800M, 800M~1500M。

    • u8DCLKDelay默认为0,不需要设置, 预防以后调整时钟偏移

    • 当pechswaptype==null时,chn0~4和lane 0~4默认依次对应。否则,pechswaptype需要指定对应于每个CHN的lane Id。

  • 相关数据类型及接口

    MI_MipiTx_CreateChannel


3.6. MI_MipiTx_InitParam_t

  • 说明

    MipiTx设备初始化参数。

  • 定义

    typedef struct MI_MipiTx_InitParam_s
    
    {
    
        MI_U32 u32DevId;
    
        MI_U8 *u8Data;
    
    } MI_MipiTx_InitParam_t;
    
  • 成员

    成员名称 描述
    u32DevId 设备ID
    u8Data 数据buffer指针
  • 相关数据类型及接口

    MI_MipiTx_InitDev


4. 错误码

错误代码 宏定义 描述
0xA01E1016 MI_ERR_MIPITX_CHN_HAVECREATE 通道已经创建
0xA01E1002 MI_ERR_MIPITX_CHNID_INVALID Chanel Id 非法
0xA01E1014 MI_ERR_MIPITX_CHN_NOTSTOP 通道没有停止
0xA01E1003 MI_ERR_MIPITX_ILLEGAL_PARAM 非法参数
0xA01E2004 MI_ERR_MIPITX_RUNFAIL 功能执行失败
0xA01E2006 MI_ERR_MIPITX_NULL_PTR 输入参数空指针错误