SS928V100(SD3403)处理器之红外成像调试

电子说

1.3w人已加入

描述

SS928V100(SD3403)处理器之红外成像调试

 

一、视频接入

参数说明:视频输入接口

支持 8-Lane image sensor 串行输入,支持 MIPI/LVDS/Sub-LVDS/HiSPi 多种接口

支持 2x4-Lane 或 4x2-Lane 等多种组合,最高支持 4 路 sensor 串行输入

最大分辨率 8192 x 8192

支持 8/10/12/14 Bit RGB Bayer DC 时序视频输入,时钟频率最高 150MHz

支持 BT.601、BT.656、BT.1120 视频输入接口

支持主流 CMOS 电平热成像传感器

 

1.1数字摄像头(DC)接口时序

水平时序

VICAP 接数字摄像头时,VI_HSYNC_VD 表示数据有效信号,数据有效信号极性可

配,水平时序所示。

红外成像

 

1.2垂直时序

VICAP 支持两种垂直时序脉冲方式和行有效方式,如下图所示。垂直同步极性可配

 

数字摄像头垂直时序脉冲方式

红外成像

数字摄像头垂直时序行有效方式

红外成像

对于 VICAP 内部处理来说,这两种时序相同,VICAP 内部检测到一个上升沿或下降

沿,这认为是一帧的开始,然后检测数据有效信号,来判断当前数据是否有效。

 

二、复用寄存器

 

管脚复用

查看手册mipi dev/vi dev/vi chn/vi pipe/所支持的编号;

mipi配置,设置接入模式为cmos;(dc接口不需要lain id)

设置vi离线还是在线模式;

设置vi属性,使能vi设备;

vi绑定pipe;

设置pipe属性,创建并开始pipe;

设置通道属性,使能通道;

 

2.1详细说明

参考SS928V100 VI 输入场景详细说明.xlsx 中DC接入需要复用的寄存器

红外成像

 

2.1.1复用寄器

static void vi_DC_mode_mux(void)

{

   void *iocfg2_base = sys_config_get_reg_iocfg2();

 

   sys_writel(iocfg2_base + 0x0158, 0x0206); /* VI_CLK */

   sys_writel(iocfg2_base + 0x0168, 0x0005); /* VI_VS */

   sys_writel(iocfg2_base + 0x0170, 0x0005); /* VI_HS */

   sys_writel(iocfg2_base + 0x016C, 0x0006); /* VI_DATA0 */

   sys_writel(iocfg2_base + 0x0178, 0x0006); /* VI_DATA1 */

   sys_writel(iocfg2_base + 0x017C, 0x0006); /* VI_DATA2 */

   sys_writel(iocfg2_base + 0x0174, 0x0006); /* VI_DATA3 */

   sys_writel(iocfg2_base + 0x0160, 0x0206); /* VI_DATA4 */

   sys_writel(iocfg2_base + 0x015C, 0x0206); /* VI_DATA5 */

   sys_writel(iocfg2_base + 0x0164, 0x0206); /* VI_DATA6 */

   sys_writel(iocfg2_base + 0x0154, 0x0206); /* VI_DATA7 */

   sys_writel(iocfg2_base + 0x0194, 0x0006); /* VI_DATA8 */

   sys_writel(iocfg2_base + 0x0190, 0x0006); /* VI_DATA9 */

   sys_writel(iocfg2_base + 0x0184, 0x0006); /* VI_DATA10 */

   sys_writel(iocfg2_base + 0x0180, 0x0006); /* VI_DATA11 */

   sys_writel(iocfg2_base + 0x0188, 0x0006); /* VI_DATA12 */

   sys_writel(iocfg2_base + 0x018C, 0x0006); /* VI_DATA13 */

}

 

2.2.2选择类型

static void vi_pin_mux(int vi_intf_type)

{

   switch (vi_intf_type) {

       case VI_MIPI_RX_MODE:

           mipi_rx_pin_mux(MIPI_RX_0);

           mipi_rx_pin_mux(MIPI_RX_1);

           break;

       case VI_CMOS_BT1120_MODE:

           mipi_rx_pin_mux(MIPI_RX_0);

           vi_bt1120_mode_mux();

           break;

       case VI_THERMO_MODE:

           mipi_rx_pin_mux(MIPI_RX_0);

           thermo_sensor_pin_mux();

           break;

       case VI_THERMO_T3_MODE:

           mipi_rx_pin_mux(MIPI_RX_0);

           thermo_t3_pin_mux();

           break;

       case VI_MODE_1_DC:

           mipi_rx_pin_mux(MIPI_RX_0);

           vi_DVP_mode_mux();

sys_config_print("==========   DVP  ==========n");

           break;

       default:

           break;

    }

}

 

2.2.3选择COMS

static int is_coms(const char *name, unsigned int name_len)

{

   unsigned int len;

 

   if (name_len == 0) {

       sys_config_print("name len is 0!n");

       return 0;

    }

   len = SENSOR_NAME_LEN;

 

   if ((strncmp("bt1120", name, len) == 0) || (strncmp("bt656", name, len) == 0) ||

       (strncmp("bt601", name, len) == 0) || (strncmp("DC", name, len) == 0)) 

    {

       return 1;

    } else {

       return 0;

    }

}

 

三、加载驱动

红外成像SS928 热成像驱动加载

 

四、修改mpp代码                                                                                            

根据 MPP 媒体处理软件 V5.0 开发参考.pdf中所说的绑定关系确定DC的videv、MIPI选择3

红外成像

 

4.1comm_vi配置

static ot_vi_dev_attr g_DC_dev_attr = {

   .intf_mode = OT_VI_INTF_MODE_DC,

   /* Invalid argument */

   .work_mode = OT_VI_WORK_MODE_MULTIPLEX_1,   // 1 路复合工作模式

   /* mask component */   

   .component_mask = {0xFF0000, 0x0},

   .scan_mode = OT_VI_SCAN_PROGRESSIVE,   // VI 输入为逐行图像        OT_VI_SCAN_INTERLACED // VI 输入为隔行图像

   /* Invalid argument */

   .ad_chn_id = {-1, -1, -1, -1},

   /* data seq */

   .data_seq = OT_VI_DATA_SEQ_UYVY,

 

 

   /* sync param */

   .sync_cfg = {

       .vsync           = OT_VI_VSYNC_PULSE,           // 垂直同步脉冲模式,即一个脉冲到来表示新的一帧或一场

       // .vsync           = OT_VI_VSYNC_FIELD,           // DC 模式下表示行有效信号

       .vsync_neg       = OT_VI_VSYNC_NEG_HIGH,        // OT_VI_VSYNC_FIELD 表示偶数场的 vsync 信号为高电平  // OT_VI_VSYNC_PULSE 表示vsync 同步脉冲为正脉冲

       .hsync           = OT_VI_HSYNC_VALID_SIG,       // 水平同步数据有效信号     // OT_VI_HSYNC_PULSE

       .hsync_neg       = OT_VI_HSYNC_NEG_HIGH,        // OT_VI_HSYNC_VALID_SIG 表示高电平表示有效数据

       .vsync_valid     = OT_VI_VSYNC_VALID_SIG,       // 表示垂直同步时序行有效信号      // OT_VI_VSYNC_NORM_PULSE 表示垂直有效同步标识

       .vsync_valid_neg = OT_VI_VSYNC_NORM_PULSE,  // OT_VI_VSYNC_VALID_SIG 表示高电平为有效信号

       .timing_blank    = {

           //水平前消隐区宽度  水平有效宽度    水平后消隐区宽度

           /* 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

       }

   },

 

   /* data type */

   .data_type = OT_VI_DATA_TYPE_RAW, //OT_VI_DATA_TYPE_YUV,   //OT_VI_DATA_TYPE_RAW

 

   /* data reverse */

    .data_reverse = TD_FALSE,

 

   /* input size */

   .in_size = {640, 512},

 

   /* data rate */

   .data_rate = OT_DATA_RATE_X1,

};

 

4.2static combo_dev_attr_t g_mipi_DC_attr =

{

   .devno         = 0,

   .input_mode    = INPUT_MODE_MIPI,  //    /* input mode */

   .data_rate = MIPI_DATA_RATE_X1,

   .img_rect = {0, 0, 640, 512},

   .mipi_attr =

    {

       DATA_TYPE_RAW_12BIT,

       OT_MIPI_WDR_MODE_NONE,

       {0, 1, 2, 3, 4, 5, 6, 7}

    }

};

 

 

4.3sample_vi_cfg配置


 

根据输入格式选择不同的类型

例如:

 

vi_cfg[i].pipe_info[j].pipe_attr.pixel_format                   = OT_PIXEL_FORMAT_YUV_400;

vi_cfg[i].pipe_info[j].isp_need_run                                                = TD_FALSE;

vi_cfg[i].pipe_info[j].pipe_attr.isp_bypass                     = TD_TRUE;          // yuv true

 

vi_cfg[i].pipe_info[j].chn_info[0].chn_attr.pixel_format        = OT_PIXEL_FORMAT_YUV_400;

 

配置完vpss和venc就可以输出视频了

 

五、输出红外视频

红外成像


 

六、备货选型参考

6.1后端处理器:

   1、SS524即 22AP10 平替 Hi3521DV200

   2、SS522即 22AP09 平替 Hi3520DV500

   3、SS528即 22AP30 平替 Hi3531DV200

   4、SS626即22AP20  平替 Hi3536AV100

6.2越影系列

    5、SS928 即 108DC2910 平替 SD3043

    6、SS927 即 107DC2910 平替 SD3402

    7、Hi3519DV500

    8、Hi3516DV500

    9、 Hi3559CV100

    10、Hi3559AV100


  审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分