HI3516DV300 图像输入

HI3516DV300 图像输入

易百纳的一个开发板,以及GC2053的摄像头。
在这里插入图片描述

硬件

  1. 海思
    海思sensor接口如下,用的是差分信号,共4对数据线(或者说4条lane),两对差分时钟。
    在这里插入图片描述
  2. 连接器
    海思核心板和扩展板之间通过板件连接器相连,数据线和时钟线在之间连接。另外注意两个I2C也被接过去了,用于控制sensor。
    核心板:
    在这里插入图片描述
    扩展板:
    在这里插入图片描述
  3. 扩展板
    由于要对接两个摄像头,采用2lane+2lane的方式,一个时钟和2条lane对接一个摄像头,具体的可以参考海思手册。出了两个接口。对接的是MIPI CSI接口
    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
4. 摄像头
GC2053 是一个遵循MIPI CSI标准的2 lane摄像头。通过I2C可以控制对其进行控制。

在这里插入图片描述
在这里插入图片描述

程序

没找到摄像头数据是怎么进来的资料,只能从板子里反推了。MIPI进的是RAW10的数据,到PIPE被转为RGB(有些PIPE不支持yuv),最后再在VI chn转为sp422出去。
在这里插入图片描述

在这里插入图片描述
基于VIO的第一个例子函数进行修改:
在这里插入图片描述

MIPI

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 DEV

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};

PIPE

像素格式这里要选择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}
};

ISP

这里的这一步主要是配置摄像头,输出RAW格式的数据,否则是没有数据输出或者输出的数据不是我们相要的(要看厂家的手册)。用的是卖家的代码,这里主要配置一个sensor类型就可以了。

在这里插入图片描述

总结

基于海思的一个VIO的例子,进行sensor配置信息的添加,完成了图像的输入。使用ISP配置GC2053输出10bit的RAW数据(Bayer),VI接收的时候是RGB。

其它

做了一半的时候发现是有GC2053的配置的,错怪了卖家。还有就是ISP获取结构体有一个函数没有传感器类型的枚举值,而是一个id,实际的传感器类型是通过Makfile传过来的。总之,看代码的时候还是要认真一点。

参考文章

  1. camera的mipi-csi接口简单理解
  2. 图像bayer格式介绍
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值