K230 VICAP API参考
1. 概述
1.1 概述
VICAP子系统是K230 SOC中负责视频图像输入捕获处理的子系统。通过对sensor输出的信号进行实时处理,得到经过复原、增强后的数字图像,使其更接近现实中人眼所见的图像。主要包括MIPI RxDphy、MIPI CSI、ISP和DW。MIPI用于接收sensor传来的高速差分信号,并将其转为DVP接口,供ISP处理;ISP用于图像信息的处理;DW用于鱼眼矫正和多路resize输出。
本文档主要描述VICAP模块应用编程接口,它提供了应用开发者通过VICAP模块捕获视频图像数据的操作接口和配置参数。
1.2 功能描述
1.2.1 VICAP
VICAP模块是对整个图像采集处理单元的抽象描述。
VICAP硬件由Sensor,VI,ISP,Dewarp四大模块组成(如下图1-1所示)。最多支持3路sensor同时接入,ISP内部通过的MCM模块实现多路sensor的时分复用管理,多路sensor输出数据通过MCM的Memory Interface的Write接口写入DDR,再通过Read接口读入并装载到ISP Pipeline进行处理。
图1-1 VICAP硬件架构图
VICAP软件架构如图1-2所示,从上到下依次是:应用接口层,媒体接口层,系统框架层,驱动层和硬件层。
- 应用层接口: 提供kd_mapi_vicap_xxx形式的API接口及使用说明。它是对媒体接口层各个子模块提供的功能接口的进一步封装,简化应用开发流程。
- 媒体接口层:该层由VICAP各个子模块组成,每个子模块提供各自的媒体接口API封装。
- 框架层:负责VICAP整个系统软件功能与业务逻辑的控制与管理。通过将各个子模块提供的接口与功能整合统一形成一套完整的VICAP系统控制逻辑和流程。
- 驱动层:VICAP各个硬件模块的内核驱动功能的集合。
硬件层:VICAP各个具体硬件模块的集合,包括sensor。
1.2.2 Sensor
Sensor模块是VICAP捕获图像的数据源之一,负责配置图像感光单元的运行参数及工作模式。
K230平台支持多种接口类型的sensor,我们以当前最常用的MIPI CSI接口Sensor为例进行说明。Sensor与主控平台的硬件连接示意图如下:
图1-3
主控通过I2C接口下发配置寄存器控制sensor的工作方式,sensor通过MIPI CSI接口将图像数据发送至主控SOC。
Sensor模块系统架构如下图1-4所示:
图1-4 sensor系统架构图
从上到下依次是:媒体接口层,硬件驱动层以及硬件层
- 媒体接口层:提供kd_mpi_sensor_xxx接口给外部模块操作和访问sensor设备。
- 驱动层:该层主要包两部分,分别是:sensor_dev,sensor_drv。
- sensor_dev:负责设备驱动文件的注册,提供文件操作接口的实现流程。通过注册设备文件节点/dev/sensorxx供用户空间的程序访问内核驱动。
- sensor_drv:具体sensor的硬件驱动,并将针对sensor的操作封装为统一的接口。
- 硬件层:sensor模组硬件,当前系统中最多同时支持三路硬件sensor。
2. API 参考
2.1 VICAP
该功能模块提供以下API:
- kd_mpi_vicap_get_sensor_info
- kd_mpi_vicap_set_dev_attr
- kd_mpi_vicap_get_dev_attr
- kd_mpi_vicap_set_chn_attr
- kd_mpi_vicap_get_chn_attr
- kd_mpi_vicap_init
- kd_mpi_vicap_deinit
- kd_mpi_vicap_start_stream
- kd_mpi_vicap_stop_stream
- kd_mpi_vicap_dump_frame
- kd_mpi_vicap_dump_release
- kd_mpi_vicap_set_vi_drop_frame
- kd_mpi_vicap_set_mclk
- kd_mpi_vicap_set_dump_reserved
- kd_mpi_vicap_set_slave_enable
- kd_mpi_vicap_set_slave_attr
- kd_mpi_vicap_3d_mode_crtl
2.1.1 kd_mpi_vicap_get_sensor_info
【描述】
根据指定的sensor配置类型获取sensor配置信息
【语法】
k_s32 kd_mpi_vicap_get_sensor_info(k_vicap_sensor_type sensor_type, k_vicap_sensor_info *sensor_info)
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
sensor_type | Sensor配置类型 | 输入 |
sensor_info | Sensor配置信息 | 输出 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非0 | 失败,参考错误码定义。 |
【芯片差异】
无。
【需求】
- 头文件:mpi_vicap_api.h
- 库文件:libvicap.a
【注意】
应用开发者根据需要要使用的sensor配置类型,需要首先调用该API获取sensor配置信息,并根据配置信息调用后续接口对VICAP其他模块进行初始化。
【举例】
无。
【相关主题】
2.1.2 kd_mpi_vicap_set_dev_attr
【描述】
设置VICAP设备属性
【语法】
k_s32 kd_mpi_vicap_set_dev_attr(k_vicap_dev dev_num, k_vicap_dev_attr dev_attr)
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
dev_num | VICAP设备号 | 输入 |
dev_attr | VICAP设备属性 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非0 | 失败,参考错误码定义。 |
【芯片差异】
无。
【需求】
- 头文件:mpi_vicap_api.h
- 库文件:libvicap.a
【注意】
无。
【举例】
无。
【相关主题】
2.1.3 kd_mpi_vicap_get_dev_attr
【描述】
获取VICAP设备属性
【语法】
k_s23 kd_mpi_vicap_set_chn_attr(k_vicap_dev dev, k_vicap_chn_attr chn_attr)
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
dev_num | VICAP设备号 | 输入 |
dev_attr | VICAP设备属性 | 输出 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非0 | 失败,参考错误码定义。 |
【芯片差异】
无。
【需求】
- 头文件:mpi_vicap_api.h
- 库文件:libvicap.a
【注意】
无。
【举例】
无。
【相关主题】
2.1.4 kd_mpi_vicap_set_chn_attr
【描述】
设置VICAP设备属性
【语法】
k_s32 kd_mpi_vicap_set_chn_attr(k_vicap_dev dev_num, k_vicap_chn chn_num, k_vicap_chn_attr chn_attr)
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
dev_num | VICAP设备号 | 输入 |
chn_num | VICAP输出通道号 | 输入 |
chn_attr | VICAP输出通道属性 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非0 | 失败,参考错误码定义。 |
【芯片差异】
无。
【需求】
- 头文件:mpi_vicap_api.h
- 库文件:libvicap.a
【注意】
无。
【举例】
无。
【相关主题】
2.1.5 kd_mpi_vicap_get_chn_attr
【描述】
获取VICAP设备属性
【语法】
k_s32 kd_mpi_vicap_get_chn_attr(k_vicap_dev dev_num, k_vicap_chn chn_num, k_vicap_chn_attr *chn_attr)
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
dev_num | VICAP设备号 | 输入 |
chn_num | VICAP输出通道号 | 输入 |
chn_attr | VICAP输出通道属性 | 输出 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非0 | 失败,参考错误码定义。 |
【芯片差异】
无。
【需求】
- 头文件:mpi_vicap_api.h
- 库文件:libvicap.a
【注意】
无。
【举例】
无。
【相关主题】
2.1.6 kd_mpi_vicap_init
【描述】
VICAP设备初始化
【语法】
k_s32 kd_mpi_vicap_init(k_vicap_dev dev_num)
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
dev_num | VICAP设备号 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非0 | 失败,参考错误码定义。 |
【芯片差异】
无。
【需求】
- 头文件:mpi_vicap_api.h
- 库文件:libvicap.a
【注意】
使用该接口之前需要先调用kd_mpi_vicap_set_dev_attr设置设备属性,再调用kd_mpi_vicap_set_chn_attr 设置输出通道属性。
【举例】
无
【相关主题】
2.1.7 kd_mpi_vicap_deinit
【描述】
VICAP设备去初始化
【语法】
k_s32 kd_mpi_vicap_deinit(k_vicap_dev dev_num)
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
dev_num | VICAP设备号 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非0 | 失败,参考错误码定义。 |
【芯片差异】
无。
【需求】
- 头文件:mpi_vicap_api.h
- 库文件:libvicap.a
【注意】
无。
【举例】
无。
【相关主题】
2.1.8 kd_mpi_vicap_start_stream
【描述】
启动VICAP设备输出数据流
【语法】
k_s32 kd_mpi_vicap_start_stream(k_vicap_dev dev_num)
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
dev_num | VICAP设备号 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非0 | 失败,参考错误码定义。 |
【芯片差异】
无。
【需求】
- 头文件:mpi_vicap_api.h
- 库文件:libvicap.a
【注意】
无。
【举例】
无。
【相关主题】
2.1.9 kd_mpi_vicap_stop_stream
【描述】
停止VICAP设备数据流输出
【语法】
k_s32 kd_mpi_vicap_stop_stream(k_vicap_dev dev_num)
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
dev_num | VICAP设备 号 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非0 | 失败,参考错误码定义。 |
【芯片差异】
无。
【需求】
- 头文件:mpi_vicap_api.h
- 库文件:libvicap.a
【注意】
无
【举例】
无。
【相关主题】
2.1.10 kd_mpi_vicap_dump_frame
【描述】
根据指定的设备和输出通道dump vicap数据
【语法】
k_s32 kd_mpi_vicap_dump_frame(k_vicap_dev dev_num, k_vicap_chn chn_num, k_vicap_dump_format foramt,
k_video_frame_info *vf_info, k_u32 milli_sec)
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
dev_num | VICAP设备号 | 输入 |
chn_num | VICAP输出通道号 | 输入 |
foramt | Dump数据类型 | 输入 |
vf_info | Dump帧信息 | 输出 |
milli_sec | 超时时间 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非0 | 失败,参考错误码定义。 |
【芯片差异】
无。
【需求】
- 头文件:mpi_vicap_api.h
- 库文件:libvicap.a
【注意】
无。
【举例】
无。
【相关主题】
2.1.11 kd_mpi_vicap_dump_release
【描述】
释放dump数据帧
【语法】
k_s32 kd_mpi_vicap_dump_release(k_vicap_dev dev_num, k_vicap_chn chn_num, const k_video_frame_info *vf_info)
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
dev_num | VICAP设备号 | 输入 |
chn_num | VICAP输出通道号 | 输入 |
vf_info | Dump帧信息 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非0 | 失败,参考错误码定义。 |
【芯片差异】
无。
【需求】
- 头文件:mpi_vicap_api.h
- 库文件:libvicap.a
【注意】
无。
【举例】
无。
【相关主题】
2.1.12 kd_mpi_vicap_set_vi_drop_frame
【描述】
设置硬件丢帧
【语法】
k_s32 kd_mpi_vicap_set_vi_drop_frame(k_vicap_csi_num csi, k_vicap_drop_frame *frame, k_bool enable)
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
csi | VICAP设备号 | 输入 |
frame | 结构体,见下 | |
m | 每隔 m 帧丢 n 帧 | 输入 |
n | 每隔 m 帧丢 n 帧 | 输入 |
mode | hdr mode | 输入 |
enable | 是否开启 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非0 | 失败,参考错误码定义。 |
【芯片差异】
无。
【需求】
- 头文件:mpi_vicap_api.h
- 库文件:libvicap.a
2.1.13 kd_mpi_vicap_set_mclk
【描述】
设置 MCLK 频率
【语法】
k_s32 kd_mpi_vicap_set_mclk(k_vicap_mclk_id id, k_vicap_mclk_sel sel, k_u8 mclk_div, k_u8 mclk_en)
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
id | MCLK ID | 输入 |
sel | 时钟源 | 输入 |
mclk_div | 分频系数 | 输入 |
mclk_en | 是否开启 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非0 | 失败,参考错误码定义。 |
【芯片差异】
无。
【需求】
- 头文件:mpi_vicap_api.h
- 库文件:libvicap.a
2.1.14 kd_mpi_vicap_set_dump_reserved
【描述】
设置是否开启快速dump 模式
【语法】
void kd_mpi_vicap_set_dump_reserved(k_vicap_dev dev_num, k_vicap_chn chn_num, k_bool reserved)
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
dev_num | VICAP设备号 | 输入 |
chn_num | VICAP输出通道号 | 输入 |
reserved | 是否开启快速dump 模式 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非0 | 失败,参考错误码定义。 |
【芯片差异】
无。
2.1.15 kd_mpi_vicap_set_slave_enable
【描述】
使能slave mode
【语法】
k_s32 kd_mpi_vicap_set_slave_enable(k_vicap_slave_id id, k_vicap_slave_enable *enable)
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
id | slave mode 的id | 输入 |
enable | 是否enable slave mode | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非0 | 失败,参考错误码定义。 |
【芯片差异】
无。
2.1.16 kd_mpi_vicap_set_slave_attr
【描述】
设置slave mode 参数
【语法】
k_s32 kd_mpi_vicap_set_slave_attr(k_vicap_slave_id id, k_vicap_slave_info *info)
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
id | slave mode 的id | 输入 |
info | slave mode 的参数 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非0 | 失败,参考错误码定义。 |
【芯片差异】
无。
2.1.17 kd_mpi_vicap_3d_mode_crtl
【描述】
设置3d 模式使能
【语法】
k_s32 kd_mpi_vicap_3d_mode_crtl(k_bool enable)
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
enable | 3d 模式使能 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非0 | 失败,参考错误码定义。 |
【芯片差异】
无。
【需求】
- 头文件:mpi_vicap_api.h
- 库文件:libvicap.a
2.2 Sensor
该功能模块提供以下API:
- kd_mpi_sensor_open
- kd_mpi_sensor_close
- kd_mpi_sensor_power_set
- kd_mpi_sensor_id_get
- kd_mpi_sensor_init
- kd_mpi_sensor_reg_read
- kd_mpi_sensor_reg_write
- kd_mpi_sensor_mode_get
- kd_mpi_sensor_mode_set
- kd_mpi_sensor_stream_enable
- kd_mpi_sensor_again_set
- kd_mpi_sensor_again_get
- kd_mpi_sensor_dgain_set
- kd_mpi_sensor_dgain_get
- kd_mpi_sensor_intg_time_set
- kd_mpi_sensor_intg_time_get
- kd_mpi_sensor_otpdata_get
- kd_mpi_sensor_otpdata_set
2.2.1 kd_mpi_sensor_open
【描述】
根据sensor设备名称打开sensor设备
【语法】
k_s32 kd_mpi_sensor_open(const char *sensor_name)
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
sensor_name | Sensor设备名称 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
正值 | 成功。返回设备描述符 |
负值 | 失败,参考错误码定义。 |
【芯片差异】
无。
【需求】
- 头文件:mpi_sensor_api.h
- 库文件:libsensor.a
【注意】
无。
【举例】
无。
【相关主题】
2.2.2 kd_mpi_sensor_close
【描述】
关闭sensor设备
【语法】
k_s32 kd_mpi_sensor_close (k_s32 fd)
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
fd | Sensor设备文件描述符 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非0 | 失败,参考错误码定义。 |
【芯片差异】
无。
【需求】
- 头文件:mpi_sensor_api.h
- 库文件:libsensor.a
【注意】
无。
【举例】
无。
【相关主题】
2.2.3 kd_mpi_sensor_power_set
【描述】
设置sensor电源状态
【语法】
k_s32 kd_mpi_sensor_power_set(k_s32 fd, k_bool on)
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
fd | Sensor设备文件描述符 | 输入 |
on | 设置sensor上电状态,K_TRUE:上电,K_FALSE:下电 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非0 | 失败,参考错误码定义。 |
【芯片差异】
无。
【需求】
- 头文件:mpi_sensor_api.h
- 库文件:libsensor.a
【注意】
无。
【举例】
无。
【相关主题】
2.2.4 kd_mpi_sensor_id_get
【描述】
获取sensor id
【语法】
k_s32 kd_mpi_sensor_id_get(k_s32 fd, k_u32 *sensor_id)
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
fd | Sensor设备文件描述符 | 输入 |
sensor_id | 获取的sensor id | 输出 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非0 | 失败,参考错误码定义。 |
【芯片差异】
无。
【需求】
- 头文件:mpi_sensor_api.h
- 库文件:libsensor.a
【注意】
无。
【举例】
无。
【相关主题】
2.2.5 kd_mpi_sensor_init
【描述】
Sensor初始化
【语法】
k_s32 kd_mpi_sensor_init(k_s32 fd, k_sensor_mode mode)
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
fd | Sensor设备文件描述符 | 输入 |
mode | 根据指定的sensor mode初始化sensor配置寄存器 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非0 | 失败,参考错误码定义。 |
【芯片差异】
无。
【需求】
- 头文件:mpi_sensor_api.h
- 库文件:libsensor.a
【注意】
无。
【举例】
无。
【相关主题】
2.2.6 kd_mpi_sensor_reg_read
【描述】
读取sensor寄存器内容
【语法】
k_s32 kd_mpi_sensor_reg_read(k_s32 fd, k_u32 reg_addr, k_u32 *reg_val)
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
fd | Sensor设备文件描述符 | 输入 |
reg_addr | Sensor寄存器地址 | 输入 |
reg_val | 读取寄存器内容 | 输出 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非0 | 失败,参考错误码定义。 |
【芯片差异】
无。
【需求】
- 头文件:mpi_sensor_api.h
- 库文件:libsensor.a
【注意】
无。
【举例】
无。
【相关主题】
2.2.7 kd_mpi_sensor_reg_write
【描述】
写sensor寄存器内容
【语法】
k_s32 kd_mpi_sensor_reg_write(k_s32 fd, k_u32 reg_addr, k_u32 reg_val)
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
fd | Sensor设备文件描述符 | 输入 |
reg_addr | Sensor寄存器地址 | 输入 |
reg_val | 写入sensor寄存器内容 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非0 | 失败,参考错误码定义。 |
【芯片差异】
无。
【需求】
- 头文件:mpi_sensor_api.h
- 库文件:libsensor.a
【注意】
无。
【举例】
无。
【相关主题】
2.2.8 kd_mpi_sensor_mode_get
【描述】
获取sensor mode配置
【语法】
k_s32 kd_mpi_sensor_mode_get(k_s32 fd, k_sensor_mode *mode)
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
fd | Sensor设备文件描述符 | 输入 |
mode | 返回获取的sensor mode配置参数 | 输出 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非0 | 失败,参考错误码定义。 |
【芯片差异】
无。
【需求】
- 头文件:mpi_sensor_api.h
- 库文件:libsensor.a
【注意】
无。
【举例】
无。
【相关主题】
2.2.9 kd_mpi_sensor_mode_set
【描述】
设置sensor mode配置
【语法】
k_s32 kd_mpi_sensor_mode_get(k_s32 fd, k_sensor_mode mode)
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
fd | Sensor设备文件描述符 | 输入 |
mode | 设置sensor mode配置参数 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非0 | 失败,参考错误码定义。 |
【芯片差异】
无。
【需求】
- 头文件:mpi_sensor_api.h
- 库文件:libsensor.a
【注意】
无。
【举例】
无。
【相关主题】
2.2.10 kd_mpi_sensor_stream_enable
【描述】
设置sensor mode配置
【语法】
k_s32 kd_mpi_sensor_stream_enable(k_s32 fd, k_s32 enable)
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
fd | Sensor设备文件描述符 | 输入 |
enable | 设置sensor流输出状态,0:禁止输 出,非0:使能输出 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非0 | 失败,参考错误码定义。 |
【芯片差异】
无。
【需求】
- 头文件:mpi_sensor_api.h
- 库文件:libsensor.a
【注意】
无。
【举例】
无。
【相关主题】
2.2.11 kd_mpi_sensor_again_set
【描述】
设置sensor 模拟增益
【语法】
k_s32 kd_mpi_sensor_again_set(k_s32 fd, k_sensor_gain gain)
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
fd | Sensor设备文件描述符 | 输入 |
gain | gain配置参数 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非0 | 失败,参考错误码定义。 |
【芯片差异】
无。
【需求】
- 头文件:mpi_sensor_api.h
- 库文件:libsensor.a
【注意】
无。
【举例】
无。
【相关主题】
2.2.12 kd_mpi_sensor_again_get
【描述】
获取sensor 模拟增益
【语法】
k_s32 kd_mpi_sensor_again_set(k_s32 fd, k_sensor_gain *gain)
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
fd | Sensor设备文件描述符 | 输入 |
gain | gain配置参数 | 输出 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非0 | 失败,参考错误码定义。 |
【芯片差异】
无。
【需求】
- 头文件:mpi_sensor_api.h
- 库文件:libsensor.a
【注意】
无。
【举例】
无。
【相关主题】
2.2.13 kd_mpi_sensor_dgain_set
【描述】
设置sensor 数字增益
【语法】
k_s32 kd_mpi_sensor_dgain_set(k_s32 fd, k_sensor_gain gain)
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
fd | Sensor设备文件描述符 | 输入 |
gain | gain配置参数 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非0 | 失败,参考错误码定义。 |
【芯片差异】
无。
【需求】
- 头文件 :mpi_sensor_api.h
- 库文件:libsensor.a
【注意】
无。
【举例】
无。
【相关主题】
2.2.14 kd_mpi_sensor_dgain_get
【描述】
获取sensor 数字增益
【语法】
k_s32 kd_mpi_sensor_dgain_get(k_s32 fd, k_sensor_gain *gain)
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
fd | Sensor设备文件描述符 | 输入 |
gain | gain配置参数 | 输出 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非0 | 失败,参考错误码定义。 |
【芯片差异】
无。
【需求】
- 头文件:mpi_sensor_api.h
- 库文件:libsensor.a
【注意】
无。
【举例】
无。
【相关主题】
2.2.15 kd_mpi_sensor_intg_time_set
【描述】
设置sensor 积分时间
【语法】
k_s32 kd_mpi_sensor_intg_time_set(k_s32 fd, k_sensor_intg_time time)
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
fd | Sensor设备文件描述符 | 输入 |
time | 积分时间配置参数 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非0 | 失败,参考错误码定义。 |
【芯片差异】
无。
【需求】
- 头文件:mpi_sensor_api.h
- 库文件:libsensor.a
【注意】
无。
【举例】
无。
【相关主题】
2.2.16 kd_mpi_sensor_intg_time_get
【描述】
获取sensor 积分时间
【语法】
k_s32 kd_mpi_sensor_intg_time_get(k_s32 fd, k_sensor_intg_time *time)
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
fd | Sensor设备文件描述符 | 输入 |
time | 积分时间配置参数 | 输出 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非0 | 失败,参考错误码定义。 |
【芯片差异】
无。
【需求】
- 头文件:mpi_sensor_api.h
- 库文件:libsensor.a
【注意】
无。
【举例】
无。
【相关主题】
2.2.17 kd_mpi_sensor_otpdata_get
【描述】
获取 sensor otp 数据
【语法】
k_s32 kd_mpi_sensor_otpdata_get(k_s32 fd, void *ota_data)
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
fd | Sensor设备文件描述符 | 输入 |
ota_data | otp 数据 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非0 | 失败,参考错误码定义。 |
【芯片差异】
无。
【需求】
- 头文件:mpi_sensor_api.h
- 库文件:libsensor.a
【注意】
无。
【举例】
无。
【相关主题】
2.2.18 kd_mpi_sensor_otpdata_set
【描述】
设置sensor otp 数据
【语法】
k_s32 kd_mpi_sensor_otpdata_set(k_s32 fd, void *ota_data)
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
fd | Sensor设备文件描述符 | 输入 |
ota_data | otp 数据 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非0 | 失败,参考错误码定义。 |
【芯片差异】
无。
【需求】
- 头文件:mpi_sensor_api.h
- 库文件:libsensor.a
【注意】
无。
【举例】
无。
【相关主题】
3. 数据类型
3.1 VICAP
该功能模块的相关数据类型定义如下:
- k_vicap_sensor_type
- k_vicap_dev
- k_vicap_chn
- k_vicap_csi_num
- k_vicap_mipi_lanes
- k_vicap_csi_data_type
- k_vicap_data_source
- k_vicap_vi_dvp_port
- k_vicap_vi_flash_mode
- k_vicap_img_window
- k_vicap_work_mode
- k_vicap_sensor_info
- k_vicap_dump_format
- k_vicap_dev_attr
- k_vicap_chn_attr
3.1.1 k_vicap_sensor_type
【说明】当前系统支持的sensor类型定义
【定义】
typedef enum {
OV_OV9732_MIPI_1280X720_30FPS_10BIT_LINEAR = 0,
OV_OV9286_MIPI_1280X720_30FPS_10BIT_LINEAR_IR = 1,
OV_OV9286_MIPI_1280X720_30FPS_10BIT_LINEAR_SPECKLE = 2,
OV_OV9286_MIPI_1280X720_60FPS_10BIT_LINEAR_IR = 3,
OV_OV9286_MIPI_1280X720_60FPS_10BIT_LINEAR_SPECKLE = 4,
OV_OV9286_MIPI_1280X720_30FPS_10BIT_LINEAR_IR_SPECKLE = 5,
OV_OV9286_MIPI_1280X720_60FPS_10BIT_LINEAR_IR_SPECKLE = 6,
IMX335_MIPI_2LANE_RAW12_1920X1080_30FPS_LINEAR = 7,
IMX335_MIPI_2LANE_RAW12_2592X1944_30FPS_LINEAR = 8,
IMX335_MIPI_4LANE_RAW12_2592X1944_30FPS_LINEAR = 9,
IMX335_MIPI_2LANE_RAW12_1920X1080_30FPS_MCLK_7425_LINEAR = 10,
IMX335_MIPI_2LANE_RAW12_2592X1944_30FPS_MCLK_7425_LINEAR = 11,
IMX335_MIPI_4LANE_RAW12_2592X1944_30FPS_MCLK_7425_LINEAR = 12,
IMX335_MIPI_4LANE_RAW10_2XDOL = 13,
IMX335_MIPI_4LANE_RAW10_3XDOL = 14,
SC_SC035HGS_MIPI_1LANE_RAW10_640X480_120FPS_LINEAR = 15,
SC_SC035HGS_MIPI_1LANE_RAW10_640X480_60FPS_LINEAR = 16,
SC_SC035HGS_MIPI_1LANE_RAW10_640X480_30FPS_LINEAR = 17,
OV_OV9286_MIPI_1280X720_30FPS_10BIT_MCLK_25M_LINEAR_SPECKLE = 18,
OV_OV9286_MIPI_1280X720_30FPS_10BIT_MCLK_25M_LINEAR_IR = 19,
OV_OV9732_MIPI_1280X720_30FPS_10BIT_MCLK_16M_LINEAR = 20,
OV_OV5647_MIPI_1920X1080_30FPS_10BIT_LINEAR = 21,
OV_OV5647_MIPI_2592x1944_10FPS_10BIT_LINEAR = 22,
OV_OV5647_MIPI_640x480_60FPS_10BIT_LINEAR = 23,
OV_OV5647_MIPI_CSI0_1920X1080_30FPS_10BIT_LINEAR = 24,
SC_SC201CS_MIPI_1LANE_RAW10_1600X1200_30FPS_LINEAR = 25,
SC_SC201CS_SLAVE_MODE_MIPI_1LANE_RAW10_1600X1200_30FPS_LINEAR = 26,
OV_OV5647_MIPI_CSI1_1920X1080_30FPS_10BIT_LINEAR = 27,
OV_OV5647_MIPI_CSI2_1920X1080_30FPS_10BIT_LINEAR = 28,
XS9922B_MIPI_CSI0_1280X720_30FPS_YUV422_DOL3 = 29,
XS9950_MIPI_CSI0_1280X720_30FPS_YUV422 = 30,
XS9950_MIPI_CSI1_1280X720_30FPS_YUV422 = 31,
XS9950_MIPI_CSI2_1280X720_30FPS_YUV422 = 32,
XS9950_MIPI_CSI0_1920X1080_30FPS_YUV422 = 33,
OV_OV9286_MIPI_1280X720_30FPS_10BIT_MCLK_25M_LINEAR_SPECKLE_V2 = 34,
OV_OV9286_MIPI_1280X720_30FPS_10BIT_MCLK_25M_LINEAR_IR_V2 = 35,
OV_OV9732_MIPI_1280X720_30FPS_10BIT_MCLK_16M_LINEAR_V2 = 36,
OV_OV5647_MIPI_CSI0_1920X1080_30FPS_10BIT_LINEAR_V2 = 37,
OV_OV5647_MIPI_CSI1_1920X1080_30FPS_10BIT_LINEAR_V2 = 38,
OV_OV5647_MIPI_CSI2_1920X1080_30FPS_10BIT_LINEAR_V2 = 39,
GC2053_MIPI_CSI0_1920X1080_30FPS_10BIT_LINEAR = 40,
SENSOR_TYPE_MAX,
} k_vicap_sensor_type;
【成员】
成员名称 | 描述 |
---|---|
OV_OV9732_MIPI_1280X720_30FPS_10BIT_LINEAR | OV9732 1lan 10bit 720P30帧线性输出配置 外接晶振16M 接csi0 |
OV_OV9286_MIPI_1280X720_30FPS_10BIT_LINEAR_IR | OV9286 2lan 10bit 720P30帧线性输出配置ir图像 外接晶振25M 接csi1 |
OV_OV9286_MIPI_1280X720_30FPS_10BIT_LINEAR_SPECKLE | OV9286 2lan 10bit 720P30帧线性输出配置speckle图像 外接晶振25M 接csi1 |
OV_OV9286_MIPI_1280X720_60FPS_10BIT_LINEAR_IR | OV9286 2lan 10bit 720P60帧线性输出配置ir图像 外接晶振25M 接csi1 |
OV_OV9286_MIPI_1280X720_60FPS_10BIT_LINEAR_SPECKLE | OV9286 2lan 10bit 720P60帧线性输出配置speckle图像 外接晶振25M 接csi1 |
IMX335_MIPI_2LANE_RAW12_1920X1080_30FPS_LINEAR | imx335 12bit 2lan 1080P30帧线性输出 外接晶振24M 接csi0 |
IMX335_MIPI_2LANE_RAW12_2592X1944_30FPS_LINEAR | imx335 12bit 2lan 全尺寸30帧线性输出 外接晶振24M 接csi0 |
IMX335_MIPI_4LANE_RAW12_2592X1944_30FPS_LINEAR | imx335 12bit 4lan 全尺寸30帧线性输出 外接晶振24M 接csi0 |
IMX335_MIPI_2LANE_RAW12_1920X1080_30FPS_MCLK_7425_LINEAR | imx335 12bit 2lan 1080P30帧线性输出 芯片输出74.25M 时钟 接csi0 |
IMX335_MIPI_2LANE_RAW12_2592X1944_30FPS_MCLK_7425_LINEAR | imx335 12bit 2lan 全尺寸30帧线性输出 芯片输出74.25M 时钟 接csi0 |
IMX335_MIPI_4LANE_RAW12_2592X1944_30FPS_MCLK_7425_LINEAR | imx335 12bit 4lan 全尺寸30帧线性输出 芯片输出74.25M 时钟 接csi0 |
IMX335_MIPI_4LANE_RAW10_2XDOL | imx335 10bit 4lan 全尺寸15帧2dol输出 外接晶振24M 接csi0 |
IMX335_MIPI_4LANE_RAW10_3XDOL | imx335 10bit 4lan 全尺寸15帧3dol输出 外接晶振24M 接csi0 |
SC_SC035HGS_MIPI_1LANE_RAW10_640X480_120FPS_LINEAR | sc035 10bit 1lan 640x480 120帧线性输出 外接晶振24M 接csi2 |
SC_SC035HGS_MIPI_1LANE_RAW10_640X480_60FPS_LINEAR | sc035 10bit 1lan 640x480 60帧线性输出 外接晶振24M 接csi2 |
SC_SC035HGS_MIPI_1LANE_RAW10_640X480_30FPS_LINEAR | sc035 10bit 1lan 640x480 30帧线性输出 外接晶振24M 接csi2 |
OV_OV9286_MIPI_1280X720_30FPS_10BIT_MCLK_25M_LINEAR_SPECKLE | OV9286 2lan 10bit 720P30帧线性输出配置speckle图像 芯片输出25M 时钟 接csi1 |
OV_OV9286_MIPI_1280X720_30FPS_10BIT_MCLK_25M_LINEAR_IR | OV9286 2lan 10bit 720P30帧线性输出配置ir图像 芯片输出25M 时钟 接csi1 |
OV_OV9732_MIPI_1280X720_30FPS_10BIT_MCLK_16M_LINEAR | OV9732 1lan 10bit 720P30帧线性输出配置 芯片输出16M时钟 接csi0 |
OV_OV5647_MIPI_1920X1080_30FPS_10BIT_LINEAR | OV5647 2lan 10bit 1080P30帧线性输出配置 外接晶振25M 接csi2 |
OV_OV5647_MIPI_2592x1944_10FPS_10BIT_LINEAR | OV5647 2lan 10bit 全尺寸 10帧线性输出配置 外接晶振25M 接csi2 |
OV_OV5647_MIPI_640x480_60FPS_10BIT_LINEAR | OV5647 2lan 10bit 640x480 60帧线性输出配置 外接晶振25M 接csi2 |
OV_OV5647_MIPI_CSI0_1920X1080_30FPS_10BIT_LINEAR | OV5647 2lan 10bit 1080P30帧线性输出配置 芯片输出25M时钟 接csi0 |
SC_SC201CS_MIPI_1LANE_RAW10_1600X1200_30FPS_LINEAR | sc201 1lan 10bit 1600x1200 30帧线性输出 晶振27M 接csi1 |
SC_SC201CS_SLAVE_MODE_MIPI_1LANE_RAW10_1600X1200_30FPS_LINEAR | sc201 1lan 10bit slave模式 1600x1200 30帧线性输出 晶振27M 接csi1 |
OV_OV5647_MIPI_CSI1_1920X1080_30FPS_10BIT_LINEAR | OV5647 2lan 10bit 1080P30帧线性输出配置 外接晶振25M 外接csi1 |
OV_OV5647_MIPI_CSI2_1920X1080_30FPS_10BIT_LINEAR | OV5647 2lan 10bit 1080P30帧线性输出配置 外接晶振25M 外接csi2 |
XS9950_MIPI_CSI0_1280X720_30FPS_YUV422 | XS9950 2lan yuv422 720P25帧线性输出 模拟摄像头 接csi0 |
XS9950_MIPI_CSI1_1280X720_30FPS_YUV422 | XS9950 2lan yuv422 720P25帧线性输出 模拟摄像头 接csi1 |
OV_OV9286_MIPI_1280X720_30FPS_10BIT_MCLK_25M_LINEAR_SPECKLE_V2 | OV9286 2lan 10bit 720P30帧线性输出配置speckle图像 芯片输出25M 时钟 接csi1 |
OV_OV9286_MIPI_1280X720_30FPS_10BIT_MCLK_25M_LINEAR_IR_V2 | OV9286 2lan 10bit 720P30帧线性输出配置ir图像 芯片输出25M 时钟 接csi1 |
OV_OV9732_MIPI_1280X720_30FPS_10BIT_MCLK_16M_LINEAR_V2 | OV9732 1lan 10bit 720P30帧线性输出配置 芯片输出16M时钟 接csi2 |
OV_OV5647_MIPI_CSI0_1920X1080_30FPS_10BIT_LINEAR_V2 | OV5647 2lan 10bit 1080P30帧线性输出配置 外接晶振25M 外接csi0 |
OV_OV5647_MIPI_CSI1_1920X1080_30FPS_10BIT_LINEAR_V2 | OV5647 2lan 10bit 1080P30帧线性输出配置 外接晶振25M 外接csi1 |
OV_OV5647_MIPI_CSI2_1920X1080_30FPS_10BIT_LINEAR_V2 | OV5647 2lan 10bit 1080P30帧线性输出配置 芯片输出25M时钟 接csi2 |
GC2053_MIPI_CSI0_1920X1080_30FPS_10BIT_LINEAR | GC2053 2lan 10bit 1080P30帧线性输出配置 芯片输出16M时钟 接csi0 |
【注意事项】
- 该列表需要有sensor驱动开发人员维护,应用开发者通过此处定义的sensor type来打开指定类型的sensor设备
3.1.2 k_vicap_dev
【说明】vicap设备号定义
【定义】
typedef enum {
VICAP_DEV_ID_0 = 0,
VICAP_DEV_ID_1 = 1,
VICAP_DEV_ID_2 = 2,
VICAP_DEV_ID_MAX,
} k_vicap_dev;
【成员】
成员名称 | 描述 |
---|---|
VICAP_DEV_ID_0 | VICAP设备0 |
VICAP_DEV_ID_1 | VICAP设备1 |
VICAP_DEV_ID_2 | VICAP设备2 |
3.1.3 k_vicap_chn
【说明】vicap输出通道号定义
【定义】
typedef enum {
VICAP_CHN_ID_0 = 0,
VICAP_CHN_ID_1 = 1,
VICAP_CHN_ID_2 = 2,
VICAP_CHN_ID_MAX,
} k_vicap_chn;
【成员】
成员名称 | 描述 |
---|---|
VICAP_CHN_ID_0 | VICAP输出通道0 |
VICAP_CHN_ID_1 | VICAP输出通道1 |
VICAP_CHN_ID_2 | VICAP输出通道2 |
3.1.4 k_vicap_csi_num
【说明】vicap csi标号定义
【定义】
typedef enum {
VICAP_CSI0 = 1,
VICAP_CSI1 = 2,
VICAP_CSI2 = 3,
} k_vicap_csi_num;
【成员】
成员名称 | 描述 |
---|---|
VICAP_CSI0 | CSI0 |
VICAP_CSI1 | CSI1 |
VICAP_CSI2 | CSI2 |
【注意事项】
Sensor连接的CSI号由硬件物理连接决定。
3.1.5 k_vicap_mipi_lanes
【说明】vicap mipi通道数定义
【定义】
typedef enum {
VICAP_MIPI_1LANE = 0,
VICAP_MIPI_2LANE = 1,
VICAP_MIPI_4LANE = 3,
} k_vicap_mipi_lanes;
【成员】
成员名称 | 描述 |
---|---|
VICAP_MIPI_1LANE | 1 lane |
VICAP_MIPI_2LANE | 2 lane |
VICAP_MIPI_4LANE | 4 lane |
【注意事项】
Sensor连接使用的mipi 通道个数由硬件物理连接决定,当使用4lane时,最多只能连接两个sensor。
3.1.6 k_vicap_csi_data_type
【说明】vicap mipi通道数定义
【定义】
typedef enum {
VICAP_CSI_DATA_TYPE_RAW8 = 0x2A,
VICAP_CSI_DATA_TYPE_RAW10 = 0x2B,
VICAP_CSI_DATA_TYPE_RAW12 = 0x2C,
VICAP_CSI_DATA_TYPE_RAW14 = 0x2D,
} k_vicap_csi_data_type;
【成员】
成员名称 | 描述 |
---|---|
VICAP_CSI_DATA_TYPE_RAW8 | RAW8 |
VICAP_CSI_DATA_TYPE_RAW10 | RAW10 |
VICAP_CSI_DATA_TYPE_RAW12 | RAW12 |
VICAP_CSI_DATA_TYPE_RAW14 | RAW14 |
【注意事项】
无
3.1.7 k_vicap_data_source
【说明】vicap 数据源
【定义】
typedef enum {
VICAP_SOURCE_CSI0 = 0, /**< vicap acquire data from the csi0*/
VICAP_SOURCE_CSI1 = 1, /**< vicap acquire data from the csi0*/
VICAP_SOURCE_CSI1_FS_TR0 = 2, /**<vicap acquire data from the csi1 for flash trigger 0*/
VICAP_SOURCE_CSI1_FS_TR1 = 3, /**<vicap acquire data from the csi0 for flash trigger 1*/
VICAP_SOURCE_CSI2 = 4, /**< vicap acquire data from the csi2*/
} k_vicap_data_source;
【成员】
成员名称 | 描述 |
---|---|
VICAP_SOURCE_CSI0 | VICAP数据来源为CSI0 |
VICAP_SOURCE_CSI1 | VICAP数据来源为CSI1 |
VICAP_SOURCE_CSI1_FS_TR0 | VICAP数据来源为CSI1 Flash trigger 0 |
VICAP_SOURCE_CSI1_FS_TR1 | VICAP数据来源为CSI1 Flash trigger 1 |
VICAP_SOURCE_CSI2 | VICAP数据来源为CSI2 |
【注意事项】
3.1.8 k_vicap_vi_dvp_port
【说明】vicap vi dvp端口号
【定义】
typedef enum {
VICAP_VI_DVP_PORT0 = 0,
VICAP_VI_DVP_PORT1 = 1,
VICAP_VI_DVP_PORT2 = 2,
VICAP_VI_DVP_PORT_MAX,
} k_vicap_vi_dvp_port;
【成员】
成员名称 | 描述 |
---|---|
VICAP_VI_DVP_PORT0 | DVP 端口0 |
VICAP_VI_DVP_PORT1 | DVP端口1 |
VICAP_VI_DVP_PORT2 | DVP端口2 |
【注意事项】
- 默认端口0对应CSI0,端口1对应CSI1,端口2对应CSI2
- 只有端口0支持HDR sensor,当用户需要使用HDR模式时,必需要将其绑定到DVP端口0。
- 当用户需要改变端口映射关系时需要执行绑定操作
3.1.9 k_vicap_vi_flash_mode
【说明】vicap 闪光灯光源控制模式
【定义】
typedef enum {
VICAP_FLASH_FOLLOW_STROBE = 0,
VICAP_FLASH_FOLLOW_STROBE_BASE_PWM = 1,
VICAP_FLASH_NORMAL_PWM = 2,
VICAP_FLASH_DISABLE = 3, /**< disable flash light*/
} k_vicap_vi_flash_mode;
【成员】
成员名称 | 描述 |
---|---|
VICAP_FLASH_FOLLOW_STROBE | 由strobe信号控制 |
VICAP_FLASH_FOLLOW_STROBE_BASE_PWM | 基于PWM模式由strobe信号控制 |
VICAP_FLASH_NORMAL_PWM | 由PWM信号控制 |
VICAP_FLASH_DISABLE | 禁用 |
【注意事项】
3.1.10 k_vicap_img_window
【说明】VICAP图像窗口定义
【定义】
typedef struct {
k_u16 h_start;
k_u16 v_start;
k_u16 width;
k_u16 height;
} k_vicap_img_window;
【成员】
成员名称 | 描述 |
---|---|
h_start | 水平起始位置 |
v_start | 垂直起始位置 |
width | 图像宽度 |
height | 图像高度 |
3.1.11 k_vicap_work_mode
【说明】vicap工作模式
【定义】
typedef enum {
VICAP_WORK_ONLINE_MODE,
VICAP_WORK_OFFLINE_MODE,
VICAP_WORK_ONLY_MCM_MODE,
} k_vicap_work_mode;
【成员】
成员名称 | 描述 |
---|---|
VICAP_WORK_ONLINE_MODE | 在线模式 |
VICAP_WORK_OFFLINE_MODE | 离线模式 |
VICAP_WORK_ONLY_MCM_MODE | 只工作在mcm模式 |
【注意事项】 支持多个摄像头输入时,必须指定为离线模式。 配置VICAP_WORK_ONLY_MCM_MODE,dump图像只能用yuv444这种格式。
3.1.12 k_vicap_sensor_info
【说明】VICAP sensor配置信息
【定义】
typedef struct {
const char *sensor_name;
k_vicap_csi_num csi_num; /**< CSI NUM that the sensor connects to*/
k_vicap_mipi_lanes mipi_lanes; /**< MIPI lanes that the sensor connects to*/
k_vicap_data_source source_id; /**<source id that the sensor used to*/
k_bool is_3d_sensor;
k_vicap_mipi_phy_freq phy_freq;
k_vicap_csi_data_type data_type;
k_vicap_hdr_mode hdr_mode;
k_vicap_vi_flash_mode flash_mode;
k_vicap_sensor_type sensor_type;
} k_vicap_sensor_info;