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

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


Arduino提供的PWM控制功能入门(2)
中国政府支持开展车联网和自动驾驶地图应用
什么是运维标准化和流程化呢?运维工作梳理
无人机设计中STM32库实现的模拟i2c代码
旧手机扔了很可惜吧,教你家中那些闲置的旧手机还有这些利用的方法
SS928V100(SD3403)处理器之红外成像调试
保密局总工程师:核心人员禁用3G手机
你会在车上找到哪一些物联网技术
变电所运维云平台的简单介绍
5G时代的来临会使得WIFI消失吗
使用 OpenVINO™ 工具套件进行物体尺寸检测
无线蓝牙模块CC2540使用心得
触摸屏的性能测试可选择大电流弹片微针模组
专业扩声的声场环境要求及调试方法的详细介绍
魅蓝E3怎么样 到底值不值得买
先进封装成为半导体厂商争相竞逐的新战场
模具界大佬眼中的工业4.0与模具智能制造
小米6或被爆了个精光,高通835处理器5.7寸2K屏双摄
简析电场辐射发射试验测试系统噪声计算
三星GalaxyNote7开箱实拍 附送USB Type-C接口转换器