目录

  • 0.测试环境说明
  • 1.手动曝光时间的设置
  • 2.曝光参数设置位置
  • 3.曝光时间的获取

0.测试环境说明

环境 参数
海思芯片型号 Hi3516EV200
传感器型号 IMX307
MPP MPP4.0
SDK Hi3516EV200_SDK_V1.0.1.1

1.手动曝光时间的设置

对手动曝光的控制接口函数为 HI_MPI_ISP_SetExposureAttrHI_MPI_ISP_GetExposureAttr ,它们的说明在《HiISP 开发参考》P199。因为开发板环境为IMX307(无宽动态)所以使用这两个函数,如果涉及到宽动态可以看一下手册后面的HI_MPI_ISP_SetWDRExposureAttr和HI_MPI_ISP_GetWDRExposureAttr函数。

设置手动曝光时间的程序为:

VI_PIPE ViPipe=0;
ISP_EXPOSURE_ATTR_S ispExposureAttr;
s32Ret=HI_MPI_ISP_GetExposureAttr(ViPipe, &ispExposureAttr);
ispExposureAttr.bByPass = HI_FALSE;
ispExposureAttr.enOpType = OP_TYPE_MANUAL;
ispExposureAttr.stManual.enAGainOpType = OP_TYPE_MANUAL;
ispExposureAttr.stManual.enDGainOpType = OP_TYPE_MANUAL;
ispExposureAttr.stManual.enISPDGainOpType = OP_TYPE_MANUAL;
ispExposureAttr.stManual.enExpTimeOpType = OP_TYPE_MANUAL;
ispExposureAttr.stManual.u32AGain = 0x400;
ispExposureAttr.stManual.u32DGain = 0x400;
ispExposureAttr.stManual.u32ISPDGain = 0x400;
ispExposureAttr.stManual.u32ExpTime = 0x40000;
s32Ret=HI_MPI_ISP_SetExposureAttr(ViPipe, &ispExposureAttr);

这段程序来自ISP手册P201,和海思其他模块的属性设置套路一样,都是先读出,修改后再写入。

其中u32ExpTime变量就是设置的曝光时间,但是具体的值受其他参数和传感器影响,比如设置IMX307-30帧的情况下,该值的有效范围是0x59 ~ 0x81FA(89us ~ 33274us)。

另外该API内部会对设置值进行校正,所以设置的值和读出会有偏差,比如:

设置为10000(us),查询为10006(us)
设置为20000(us),查询为20012(us)
设置为30000(us),查询为29988(us)

2.曝光参数设置位置

上面手动曝光是针对ISP的设置,在MPP4.0中放在VI-ViPIPE设置部分。

VI部分的初始化流程是这样的:

1.设置并启动MIPI
2.设置VI/VPSS离在线模式
3.使能VI设备
4.绑定VI设备和PIPE
5.启动VI PIPE
6.启动VI通道(Chn)
7.创建ISP

设置函数在创建ISP的时候进行,创建ISP又分为如下小步(参照mpp例程):

1.更新ISP控制信息
2.注册3A库
3.ISP内存初始化
4.设置ISP公共属性
5.ISP初始化
6.启动对应VIPIPE的ISP线程

对ISP手动曝光的设置(上面那段程序)应该放在5、6步之间。

如果在第3步之前设置,会提示:

[Func]:HI_MPI_ISP_GetExposureAttr [Line]:303 [Info]:ISP[0] Mem NOT Init 0!

错误码为0xa01c8041(外部寄存器没有初始化)。

如果在第3~5步之间设置,会提示:

[Func]:HI_MPI_ISP_SetExposureAttr [Line]:126 [Info]:AGainMax/AGainMin should not be less than 0x400!

错误码为0xa01c8003(输入参数无效)。

3.曝光时间的获取

对当前曝光值的获取可以使用 HI_MPI_ISP_QueryExposureInfo 函数完成,它的说明在《HiISP 开发参考》P214。是一个很方便的查询接口:


#include "hi_comm_isp.h"//ISP相关数据类型
#include "mpi_ae.h"     //MPI-ISP函数声明VI_PIPE ViPipe=0;
ISP_EXP_INFO_S stExpInfo;
HI_MPI_ISP_QueryExposureInfo(ViPipe,&stExpInfo);
printf("u32ExpTime: %dus\n",stExpInfo.u32ExpTime);

需要查询的时候,例如获取抓拍的数据或者每一帧的码流包时,可以从上面函数得到当前曝光时间,实时刷新出来或作他用。

————2020-4-27 @燕卫博————

Hi3516EV200设置手动曝光时间相关推荐

  1. java 手动事务回滚_JAVA设置手动提交事务,回滚事务,提交事务的操作

    我就废话不多说啦,还是直接看代码吧! /** * 设置数据库是否自动提交事务 * @param flag * @throws SQLException */ public void setAutoCo ...

  2. rabbitmq设置手动ack报错:Channel closed; cannot ack/nack

    记一次rabbitmq设置手动ack报错:Channel closed; cannot ack/nack 报错内容 前置条件 出现错误情况 出现问题原因 解决办法 报错内容 java.lang.Ill ...

  3. 调整手动曝光时间,使24色卡白色块(第19个色块)的最大曝光亮度为理论最大亮度的80%

    调整手动曝光时间,使24色卡白色块(第19个色块)的最大曝光亮度为理论最大亮度的80% 通过调整曝光时间,使得图像直方图达到目标.

  4. java 事务提交_JAVA设置手动提交事务,回滚事务,提交事务的操作

    我就废话不多说啦,还是直接看代码吧! /** * 设置数据库是否自动提交事务 * @param flag * @throws SQLException */ public void setAutoCo ...

  5. 20211231 使用windows 10代理时,快捷设置“手动设置代理”的“不使用代理”条目

    step 1. 新建一个txt: step 2. 把下面内容复制到txt: @echo off reg add "HKCU\Software\Microsoft\Windows\Curren ...

  6. mysql数据库永久设置手动提交事务(InnoDB存储引擎禁止autocommit默认开启)

    mysql数据库InnoDB存储引擎(默认情况下是自动控制提交事务)与其他关系型数据库在默认事务处理与其他关系型数据库略有不同,之前已经习惯Oracle数据库的手动提交事务的处理方式,mysql数据库 ...

  7. 自定义dns服务器是什么,dns是什么意思?dns怎么设置(手动设置/软件设置)

    不知道大家有没使用过自己设置dns来最大化优化电脑网络速度,设置dns大家都比较陌生,因为一般也很少去提到,因为电脑一般默认的都是自动获取dns,无需我们去设置,但大家应该听说过电脑能上QQ但是打不开 ...

  8. HP LaserJet 305X 和 339X 系列一体机如何设置手动或自动接收传真?

    适用机型 HP LaserJet 3050 .HP LaserJet 3055 .HP LaserJet 3390 .HP LaserJet 3392 HP LaserJet 3052 不适用,因为H ...

  9. 安装完Oracle数据库之后设置手动启动方法

    1.右击"我的电脑",选择"管理",在管理窗口左边选择"服务",在右边的服务列表中查找有关Oracle的        服务项,右击&quo ...

  10. spring 事务控制 设置手动回滚 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

    如上: 当我们需要在事务控制的service层类中使用try catch 去捕获异常后,就会使事务控制失效,因为该类的异常并没有抛出,就不是触发事务管理机制.怎样才能即使用try catch去捕获异常 ...

最新文章

  1. python之路径拼接urljoin
  2. 数据库面试题【二、MYSQL的两种存储引擎区别(事务、锁级别等等)】
  3. ULONGLONG乘法分析
  4. PAT乙级(1028 人口普查)
  5. Shell expr的用法 bc 命令 let命令
  6. loadrunner11基础使用
  7. java arraylist 构造_深入理解java集合框架之---------Arraylist集合 -----构造函数
  8. mysql乱码加的一段代码_mysql乱码的解决方法
  9. 什么专业的会学python语言_还在纠结学什么编程语言吗?Python可能会“教”你做人...
  10. 【OSG】安装编译小结
  11. 【优化分类】基于matlab遗传算法结合爬山算法优化极限学习机分类【含Matlab源码 1660期】
  12. linux系统下安装搜狗输入法,搜狗拼音输入法 For Linux安装方法全程图解
  13. 概率论的学习和整理10:古典概型 和 二项分布(N重伯努利试验)
  14. 开源高手推荐十大最流行开源软件
  15. DSPE-PEG11-Mal含有马来酰亚胺基团的PEG试剂
  16. 初识人工智能AI(基本概念)
  17. 麻将与扑克的文化内涵
  18. 2021-2027全球与中国雌二醇(CAS 50-28-2)市场现状及未来发展趋势
  19. php语言指什么生肖,龇牙咧嘴的生肖 指什么生肖
  20. HikariCP数据库连接配置详解

热门文章

  1. 锆石 Hello FPGA 笔记——part1 数字电路篇
  2. qq邮箱sina邮箱服务器拒绝,为什么有的qq邮箱,新浪这边邮不过去呢?
  3. Python自动化办公 | 用Python自动生成数据日报
  4. 用angular Material 做统计表格
  5. 服务器的所有网站共用443,多个ssl证书共用443端口apache
  6. 第三代USRP 产品对比
  7. 冬幕节成就任务攻略指引
  8. POJ - 1679 The Unique MST (次小生成树) 板子
  9. 北京到济南的长途汽车一览表
  10. 公告栏模板php代码,destoon调用自定义模板及样式的公告栏_PHP教程