易百纳的一个开发板,以及GC2053的摄像头。
4. 摄像头
GC2053 是一个遵循MIPI CSI标准的2 lane摄像头。通过I2C可以控制对其进行控制。
没找到摄像头数据是怎么进来的资料,只能从板子里反推了。MIPI进的是RAW10的数据,到PIPE被转为RGB(有些PIPE不支持yuv),最后再在VI chn转为sp422出去。
基于VIO的第一个例子函数进行修改:
MIPI模式,进RAW10的数据。
lane的划分模式用第二个,第一个设备就用0,2,第二个用1,3。
combo_dev_attr_t MIPI_GC2053_ATTR =
{/* input mode */.devno = 0,.input_mode = INPUT_MODE_MIPI, .data_rate = MIPI_DATA_RATE_X1,.img_rect = {0, 0, 1920, 1080},{.mipi_attr = {DATA_TYPE_RAW_10BIT, HI_MIPI_WDR_MODE_NONE, {0, 2, -1, -1}}}
};
VI设备和MIPI好像差不多,由于是10bit的,掩码前10位为1,类型也是RGB。
VI_DEV_ATTR_S DEV_ATTR_GC2053_1080P_BASE ={/* interface mode */VI_MODE_MIPI,/* multiplex mode */VI_WORK_MODE_1Multiplex,/* r_mask g_mask b_mask*/{0xffc00000, 0x0000000},/* progessive or interleaving */VI_SCAN_PROGRESSIVE, /*逐行*//*AdChnId*/{-1, -1, -1, -1},/*enDataSeq, only support yuv*/VI_DATA_SEQ_UVUV,/* synchronization information */{/*port_vsync port_vsync_neg port_hsync port_hsync_neg */VI_VSYNC_PULSE,VI_VSYNC_NEG_HIGH,VI_HSYNC_VALID_SINGNAL,VI_HSYNC_NEG_HIGH,VI_VSYNC_NORM_PULSE,VI_VSYNC_VALID_NEG_HIGH,/*hsync_hfb hsync_act hsync_hhb*/{0, 0, 0,/*vsync0_vhb vsync0_act vsync0_hhb*/0, 0, 0,/*vsync1_vhb vsync1_act vsync1_hhb*/0, 0, 0}},/* input data type */VI_DATA_TYPE_RGB,/* bReverse */HI_FALSE,/* input size */{1920, 1080},{{{1920, 1080},},{VI_REPHASE_MODE_NONE, VI_REPHASE_MODE_NONE}},{WDR_MODE_NONE, 1080},DATA_RATE_X1};
像素格式这里要选择bayer格式,是相机的原始数据格式。
VI_PIPE_ATTR_S PIPE_ATTR_GC2053_10800P_RGB = {/* bBindDev bYuvSkip */VI_PIPE_BYPASS_NONE, HI_FALSE, /*YUV skip enable */HI_FALSE, /* ISP Bypass */1920,1080,PIXEL_FORMAT_RGB_BAYER_10BPP,COMPRESS_MODE_NONE,DATA_BITWIDTH_10, /* bit_width width: 16 illegal, should be when YUV!*/HI_FALSE,{PIXEL_FORMAT_RGB_BAYER_10BPP, DATA_BITWIDTH_10, VI_NR_REF_FROM_RFR,COMPRESS_MODE_NONE},HI_FALSE,{-1, -1}
};
这里的这一步主要是配置摄像头,输出RAW格式的数据,否则是没有数据输出或者输出的数据不是我们相要的(要看厂家的手册)。用的是卖家的代码,这里主要配置一个sensor类型就可以了。
基于海思的一个VIO的例子,进行sensor配置信息的添加,完成了图像的输入。使用ISP配置GC2053输出10bit的RAW数据(Bayer),VI接收的时候是RGB。
做了一半的时候发现是有GC2053的配置的,错怪了卖家。还有就是ISP获取结构体有一个函数没有传感器类型的枚举值,而是一个id,实际的传感器类型是通过Makfile传过来的。总之,看代码的时候还是要认真一点。