镜头点亮链路
硬件工作条件
需要关注的相关端口内容吗,一般把这部分内容写在板级代码当中。
引脚/供电分别是:
| 项 | 配置 |
|---|---|
| 主时钟 xclk | |
| 复位 reset | |
| 掉电 pwdn | (我具体项目当中没接) |
| 接口 | SEN_INTERFACE0,DVP 并行 |
| pclk / hsync / vsync | |
| 数据脚 data[9:0] | (10bit DVP) |
| 供电LDO | AVDD18/AVDD28/DVDD |
media拓扑/相关检测check
typedef struct S_ISP_SEN { u8 logo[8]; //sensor标识名 isp_id_t isp_dev;//所在的设备编号 u8 in_format; //颜色解析格式 例如:GRBG.. isp_out_format_t out_format; //镜头输出的数据格式:YUV/RAW sen_mbus_type_t mbus_type; //V4L2总线类型枚举,通知主控csi接收端 u32 mbus_config; //总线配置位 例如:这里用的是并行数据线宽度,时钟采样边缘 u8 fps; //预览帧数配置 u32 real_fps; //最终实际输出帧数,可通过相应接口调用查看帧率,用于补偿 VTS/PCLK 偏差 pic_size_t sen_size; //DVP接口送到CSI的RAW有效像素 pic_size_t isp_size; //ISP输出的YUV分辨率像素 u8 cap_fps; //拍照时的帧率 pic_size_t sen_cap_size; //拍照时的RAW分辨率 pic_size_t isp_cap_size; //拍照时的YUV分辨率 sensor_ops_t ops; //各种操作的回调 } isp_sen_t; check逻辑链路
DVP_CHECK();{
里面进行镜头I2C设备的启动,复位 reset和掉电脚的配置
镜头复位函数DVP_RESET();{掉电脚和复位脚的重新启动,具体延迟见datasheet}
镜头PID和VER的检测DVP_ID_check();
I2C设备的关闭
}
DVP_INIT();{
SENSOR_CONFIG();{输出分辨率的配置
写INIT_REG初始化序列。
写AE_EV_INIT这种效果初始化。//这方面调试相关驱动代码后续给出
配置一下颜色解析格式
}
}
稳定出流
首先在DISPLAY_START中需要打开服务层相关SERVER,服务层给出了DISPLAY接口
struct vs_video_display { u16 left; //显示窗口坐标 u16 top; u16 width; //显示窗口大小 u16 height; u16 border_left; //四边边框 u16 border_top; u16 border_right; u16 border_bottom; u8 camera_type; //摄像头类型,例如NORMAL,UVC,VIRTUAL,JLC,CUSTOM. u8 three_way_type; //三路视频类型 u8 uvc_id; //uvc设备序号 const char *fb; //写到的缓存区 struct imc_presca_ctl *pctl; //IMC(图像拼接/预缩放)控制参数指针,这里传的NULL struct vs_camera_sca sca; //缩放/数字变焦控制 enum video_state state; //本次显示请求的动作 int (*camera_config)(u32 lv, void *arg);//摄像头配置回调,其中可初始化相关的ISP场景 u8 display_mirror; //镜像翻转 u8 win_type; //窗口类型,根据应用自己配置 u8 double720; u8 double720_small_scr; u8 src_crop_enable; //支持通过配置比例对IMC源数据进行裁剪的使能,使用数字变焦需要写1 u8 *sticker_name; u16 src_w; u16 src_h; };进行server_request请求。
***相关网络出流后面会给出***
***效果和场景驱动的配置会在我写完ISP调试后给出***