MI MIPITX API
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中的注意。
-
相关主题
2.3. MI_MipiTx_DestroyChannel¶
-
描述
销毁一个MipiTx channel.
-
语法
MI_S32 MI_MipiTx_DestroyChannel(MI_U32 u32ChannelId);
-
参数
参数名称 描述 输入/输出 u32ChannelId MipiTx channel号。 输入 -
返回值
-
0 成功。
-
非0 失败,参照错误码。
-
-
需求
-
头文件:mi_mipitx.h
-
库文件:
-
-
举例
-
相关主题
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
-
库文件:
-
-
举例
-
相关主题
2.5. MI_MipiTx_StartChannel¶
-
描述
启用MipiTx channel.
-
语法
MI_S32 MI_MipiTx_StartChannel(MI_U32 u32ChannelId);
-
参数
参数名称 描述 输入/输出 u32ChannelId MipiTx channel号。 输入 -
返回值
-
0 成功。
-
非0 失败,参照错误码。
-
-
需求
-
头文件:mi_mipitx.h
-
库文件:
-
-
举例
-
相关主题
2.6. MI_MipiTx_StopChannel¶
-
描述
禁用MipiTx channel.
-
语法
MI_S32 MI_MipiTx_StopChannel(MI_U32 u32ChannelId);
-
参数
参数名称 描述 输入/输出 u32ChannelId u32ChannelId号。 输入 -
返回值
-
0 成功。
-
非0 失败,参照错误码。
-
-
需求
-
头文件:mi_mipitx.h
-
库文件:
-
-
举例
-
相关主题
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
-
库文件:
-
-
举例
-
相关主题
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
-
库文件:
-
-
举例
-
相关主题
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;
-
相关数据类型及接口
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 数量一定相等。
-
相关数据类型及接口
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对应。
-
相关数据类型及接口
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。
-
-
相关数据类型及接口
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指针 -
相关数据类型及接口
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 | 输入参数空指针错误 |