hi3519多sensor设置说明

mipi接口模式与设备号

3519总共有12-lane输入,从手册上看支持12lane,8lane+4lane,4lane+4x2lane
SDK中从mipi_rx.c文件mipi_print_lane_divide_mode函数可以区分mipi模式

static const char *mipi_print_lane_divide_mode(lane_divide_mode_t mode)
{switch (mode) {case LANE_DIVIDE_MODE_0:return "12";case LANE_DIVIDE_MODE_1:return "8+4";case LANE_DIVIDE_MODE_2:return "8+2+2";case LANE_DIVIDE_MODE_3:return "4+8";case LANE_DIVIDE_MODE_4:return "4+4+4";case LANE_DIVIDE_MODE_5:return "4+4+2+2";case LANE_DIVIDE_MODE_6:return "4+2+2+2+2";default:break;}return "N/A";
}

LANE_DIVIDE_MODE_4对应的是3个4lane接口
LANE_DIVIDE_MODE_6对应的是5个4lane+2lane+2lane+2lane+2lane接口
目前我只测试了LANE_DIVIDE_MODE_6模式的1个4lane sensor和LANE_DIVIDE_MODE_4模式的2个4lane sensor
由于最开始不了解,默认代码里一个sensor时是使用的LANE_DIVIDE_MODE_6模式
然后通过mipi_rx_hal.c中mipi_rx_drv_is_lane_valid函数可以确认每个通道对应的设备号

int mipi_rx_drv_is_lane_valid(combo_dev_t devno, short lane_id, lane_divide_mode_t mode)
{int lane_valid = 0;switch (mode) {case LANE_DIVIDE_MODE_0:if (devno == 0) {if (0 <= lane_id && lane_id <= 11) {lane_valid = 1;}}break;case LANE_DIVIDE_MODE_1:if (devno == 0) {if (0 <= lane_id && lane_id <= 7) {lane_valid = 1;}} else if (devno == 3) {if (8 <= lane_id && lane_id <= 11) {lane_valid = 1;}}break;case LANE_DIVIDE_MODE_2:if (devno == 0) {if (0 <= lane_id && lane_id <= 7) {lane_valid = 1;}} else if (devno == 3) {if (lane_id == 8 || lane_id == 10) {lane_valid = 1;}} else if (devno == 4) {if (lane_id == 9 || lane_id == 11) {lane_valid = 1;}}break;case LANE_DIVIDE_MODE_3:if (devno == 0) {if (0 <= lane_id && lane_id <= 3) {lane_valid = 1;}} else if (devno == 1) {if (4 <= lane_id && lane_id <= 11) {lane_valid = 1;}}break;case LANE_DIVIDE_MODE_4:if (devno == 0) {if (0 <= lane_id && lane_id <= 3) {lane_valid = 1;}} else if (devno == 1) {if (4 <= lane_id && lane_id <= 7) {lane_valid = 1;}} else if (devno == 3) {if (8 <= lane_id && lane_id <= 11) {lane_valid = 1;}}break;case LANE_DIVIDE_MODE_5:if (devno == 0) {if (0 <= lane_id && lane_id <= 3) {lane_valid = 1;}} else if (devno == 1) {if (4 <= lane_id && lane_id <= 7) {lane_valid = 1;}} else if (devno == 3) {if (lane_id == 8 || lane_id == 10) {lane_valid = 1;}} else if (devno == 4) {if (lane_id == 9 || lane_id == 11) {lane_valid = 1;}}break;case LANE_DIVIDE_MODE_6:if (devno == 0) {if (0 <= lane_id && lane_id <= 3) {lane_valid = 1;}} else if (devno == 1) {if (lane_id == 4 || lane_id == 5) {lane_valid = 1;}} else if (devno == 2) {if (lane_id == 6 || lane_id == 7) {lane_valid = 1;}} else if (devno == 3) {if (lane_id == 8 || lane_id == 9) {lane_valid = 1;}} else if (devno == 4) {if (lane_id == 10 || lane_id == 11) {lane_valid = 1;}}break;default:break;}return lane_valid;
}

最终模式设置是在sample_comm_vi.c中SAMPLE_COMM_VI_StartMIPI函数
会调用SAMPLE_COMM_VI_SetMipiHsMode(LANE_DIVIDE_MODE_4)设置mipi模式

接口配置主要代码

sample_comm_vi.c文件SAMPLE_COMM_VI_GetComboAttrBySns函数
根据上面设置的mipi模式对各通道参数进行设置,以LANE_DIVIDE_MODE_4模式进行说明

combo_dev_attr_t MIPI_4lane_CHN0 =
{.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, 1, 2, 3, -1, -1, -1, -1}}}
};
combo_dev_attr_t MIPI_4lane_CHN1 =
{.devno = 1,.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,{4, 5, 6, 7, -1, -1, -1, -1}}}
};
combo_dev_attr_t MIPI_4lane_CHN2 =
{.devno = 3,.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,{8, 9, 10, 11, -1, -1, -1, -1}}}
};

分别对应硬件接口MIPI0,MIPI1,MIPI2
最后面那个devno为3具体是根据mipi_rx_hal.c中mipi_rx_drv_is_lane_valid函数LANE_DIVIDE_MODE_4模式中的代码进行确认

测试代码vi配置

双sensor主要配置

SAMPLE_COMM_VI_GetSensorInfo(&stViConfig);stViConfig.s32WorkingViNum                                   = 2;
stViConfig.as32WorkingViId[0]                                = 0;
stViConfig.astViInfo[0].stSnsInfo.s32BusId        = 1;
stViConfig.astViInfo[0].stSnsInfo.MipiDev         = ViDev[0];
stViConfig.astViInfo[0].stDevInfo.ViDev           = ViDev[0];
stViConfig.astViInfo[0].stDevInfo.enWDRMode       = enWDRMode;
stViConfig.astViInfo[0].stPipeInfo.enMastPipeMode = enMastPipeMode;
stViConfig.astViInfo[0].stPipeInfo.aPipe[0]       = ViPipe[0];
stViConfig.astViInfo[0].stPipeInfo.aPipe[1]       = -1;
stViConfig.astViInfo[0].stPipeInfo.aPipe[2]       = -1;
stViConfig.astViInfo[0].stPipeInfo.aPipe[3]       = -1;
stViConfig.astViInfo[0].stChnInfo.ViChn           = ViChn;
stViConfig.astViInfo[0].stChnInfo.enPixFormat     = enPixFormat;
stViConfig.astViInfo[0].stChnInfo.enDynamicRange  = enDynamicRange;
stViConfig.astViInfo[0].stChnInfo.enVideoFormat   = enVideoFormat;
stViConfig.astViInfo[0].stChnInfo.enCompressMode  = enCompressMode;stViConfig.as32WorkingViId[1]                                = 1;
stViConfig.astViInfo[1].stSnsInfo.MipiDev         = ViDev[1];
stViConfig.astViInfo[1].stSnsInfo.s32BusId        = 5;
stViConfig.astViInfo[1].stDevInfo.ViDev           = ViDev[1];
stViConfig.astViInfo[1].stDevInfo.enWDRMode       = enWDRMode;
stViConfig.astViInfo[1].stPipeInfo.enMastPipeMode = enMastPipeMode;
stViConfig.astViInfo[1].stPipeInfo.aPipe[0]       = ViPipe[1];
stViConfig.astViInfo[1].stPipeInfo.aPipe[1]       = -1;
stViConfig.astViInfo[1].stPipeInfo.aPipe[2]       = -1;
stViConfig.astViInfo[1].stPipeInfo.aPipe[3]       = -1;
stViConfig.astViInfo[1].stChnInfo.ViChn           = ViChn;
stViConfig.astViInfo[1].stChnInfo.enPixFormat     = enPixFormat;
stViConfig.astViInfo[1].stChnInfo.enDynamicRange  = enDynamicRange;
stViConfig.astViInfo[1].stChnInfo.enVideoFormat   = enVideoFormat;
stViConfig.astViInfo[1].stChnInfo.enCompressMode  = enCompressMode;

其中ViDev对应上面说到的devno
s32BusId为具体硬件接口上的i2c总线
主要修改就是这些地方.
主要测试了mipi0掊一路4lane sensor
mipi0,mipi1各接一路4lane sensor
mipi0,mipi2各接一路4lane sensor
都能正常进行编码

======================================
作者:hclydao
http://blog.csdn.net/hclydao
版权没有,但是转载请保留此段声明

===========================================

hi3519多sensor设置说明相关推荐

  1. OpenMV感光元件参数设置

    sensor模块,用于设置感光元件的参数. 举个例子: import sensor#引入感光元件的模块# 设置摄像头 sensor.reset()#初始化感光元件 sensor.set_pixform ...

  2. RK3568 Sensor驱动开发移植(2)

    RK3568 Camera 使用 RK3568 Sensor驱动开发移植(1) RK3568 Sensor驱动开发移植(2) RK3568 Sensor驱动开发移植(3) v4l2_subdev_op ...

  3. ossim-agent代理和要监控的服务器的配置

    一.Open***安装部署 1.Open*** for Windows 安装软件包中的open***-2.0.9-gui-1.0.3-install.exe,拷贝安装包中的client.o***文件到 ...

  4. MSP430F149的ADC12应用

    MSP430F149的ADC12应用 1 概述 MSP430F149的ADC12为SAR型12位AD,共有16路输入通道,其中8路独立的外部输入通道,2路接外部Vref+,Vref-,3路内部通道可分 ...

  5. Egret中使用P2物理引擎

    游戏中的对象按照物理规律移动,体现重力.引力.反作用力.加速度等物体特性,实现自由落体.摇摆运动.抛物线运动,以及物理碰撞现象的模拟.用于模拟物理碰撞.物理运动的引擎称为物理引擎.  来自瑞典斯德哥尔 ...

  6. DM368+聚林200W的并口机芯正常出图

    由于第一次设计的IPC方案DM368+FPGA+(SONY 机芯.唐光机芯.聚林机芯),但是为了精减电路,设计一款本安型的可调焦的IPC;精减目标DM368+并口机芯直接出图: 简单从原理上是没有问题 ...

  7. 海思平台ISP与图像的IQ调试(1)

    目录 一.何为ISP何为IQ调试 1.ISP概念剖析 2.在哪里做ISP 3.何为IQ 4.ISP和IQ总结 二.海思MPP中ISP的实现框架 1.官方文档 2.sample中ISP相关部分再次解读 ...

  8. sonar-scanner扫描代码出错 SonarQube svn: E170001

    问题报错: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Caused by: org.tmatesoft.svn.core.SVNAuthen ...

  9. 重力感应器BMA250源代码执行分析

    重力传感器是根据压电效应的原理来工作的. 所谓的压电效应就是 "对于不存在对称中心的异极晶体加在晶体上的外力除了使晶体发生形变以外,还将改变晶体的极化状态,在晶体内部建立电场,这种由于机械力 ...

  10. STK中的传感器、雷达、发射机、接收机、天线

    1. 来自STK官网的解释 主要信息来源:https://help.agi.com/stk/ STK在线帮助版本:12.0 Google在线翻译,有补充. 1.1 Sensor(传感器) Sensor ...

最新文章

  1. 设置linux查看历史命令显示两个小时内,linux系统中history历史命令显示执行日期和时间...
  2. 51 时间片系统 纯c语言,51单片C语言学习.doc
  3. Logtail提升采集性能
  4. (转)base64编码(严格说来,base64不算作加解密算法)
  5. C++ struct 与 union
  6. setSystemUiVisibility() 与 getSystemUiVisibility() 显示隐藏状态栏
  7. spring boot--拦截器实现
  8. linux目录存 xml文件,将IDEA maven项目中src源代码下的xml等资源文件编译进classes文件夹...
  9. OD点击寄存器变色OD
  10. Mac Sublime Text设置中文
  11. 每月自评之一:2013年1月
  12. latex去心领域符号
  13. AntV G2 Tooltip
  14. 如何用c语言串口通讯,串口通信入门
  15. 图像风格迁移-DSTN
  16. 基于vue的组织架构树组件_Vue组件基于D3.js布局显示树
  17. 红帽子服务器虚拟化技术只要是,红帽子企业版.Linux.5
  18. 在线教育:直播视频有哪些运营方式呢?
  19. 静态链表(C++实现)——基于数据结构(沈俊版)(初学者食用)
  20. STM32 OLED显示屏

热门文章

  1. android手机空间占用,安卓手机清理数据八种方法教程,解决占用手机空间的烦恼!...
  2. Unity ToLua LuaFramework_UGUI学习笔记
  3. 非线性最小二乘法曲线拟合
  4. 全球15个免费卫星遥感数据源
  5. 牛头刨床设计matlab生成图片,牛头刨床matlab程序---机械原理课程设计
  6. delphi10 ftp文件名乱码问题
  7. 基于C/C++的PCM编码与解码简单实现
  8. Python学习路线(课程大纲+Python视频教程+下载地址)
  9. (转载)3. 飞控与惯性导航系统
  10. 如何批量清理DWG文件?DWG文件清理教程