---
title: 完成AE配置
description: "AE配置，请按如下顺序实现："
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/others/ispdevug/ispdevug_0018.html
sourcePath: /source/zh/canncommercial/900/others/ispdevug/ispdevug_0018.html
indexId: c6f8a0627885daa6f096a5dc3d97a513a00f237167adf71bad1ad883b876353764
---
# 完成AE配置

#### 开发流程

AE配置，请按如下顺序实现：

- cmos_get_sns_regs_info
  该函数用于配置需要确保同步性的Sensor、ISP寄存器，如曝光时间、增益及总行数等。虽然这些寄存器可以通过直接调用sensor_write_register()来配置，但无法保证同步性，可能出现闪烁。所以这些寄存器必须使用该函数配置。配置的信息包括指定Sensor寄存器通信的类型（I2C还是SPI）、通信bus总线号、寄存器的地址以及是否更新等。

  delay_frame_num是寄存器配置延时。举个例子，很多Sensor的增益是下一帧生效，但曝光时间是下下帧生效，所以需要增益晚一帧配置，以使增益和曝光时间同时生效，这时就需要用Delay的功能。配置 cfg2_valid_delay_max 是控制ISP与Sensor同步，ISP包括ISP Dgain和WDR曝光比等参数，可通过检查ISP Dgain是否与Sensor gain同步来检查参数正确性。该参数的意义是生效时间，一般会比最大的Sensor寄存器延迟多1。

  update用于控制该寄存器是否更新，如果不用修改，可以置为false。


- cmos_get_ae_default,
  请根据Sensor修改参数。accuracy是计算精度的类型，常用HI_ISP_AE_ACCURACY_TABLE及HI_ISP_AE_ACCURACY_LINEAR。而HI_ISP_AE_ACCURACY_DB因为CPU计算精度问题，除非精度很低的，均由TABLE的方式代替。

  LINEAR方式是指曝光时间或增益以固定步长线性递增。比如每一步增长0.325倍，或曝光时间每一步增长1。步长由accuracy决定。

  TABLE方式一般用于增益，指每一步可以达到的增益通过查表的方式，在cmos_again_calc_table()或cmos_dgain_calc_table()函数中计算得到。此时accuracy失去意义，不生效。

  AE默认计算顺序是先分配曝光时间，其次again，然后dgain，最后isp dgain。可以通过设置AE Route或AE RouteEx来调整分配顺序。

- cmos_again_calc_table(), cmos_dgain_calc_table
  这两个函数输入、输出完全一致，分别对应Again和Dgain的TABLE方式。下面以Again为例说明。

  again_lin同时做输入和输出。做输入是AE计算出来的期望增益，1024表示1倍。在该函数中，要查询到一个Sensor可以实现的，小于该增益的最大增益。并重新赋给该参数作为向AE的输出。

  again_db是输出，AE内部不用于运算，只是作为函数cmos_gains_update()的输入。一般用于传递当前增益的Sensor寄存器值。

  例如：某Sensor增益按0.3dB递增。Sensor寄存器值从0开始，每增加1，对应增益分别为0dB, 0.3dB, 0.6dB, 0.9dB…

  离线算出一个将dB转化为线性倍数的查找表，为1024, 1060, 1097, 1136…

  在函数中将输入的增益与查找表比对，假如输入为1082，那查出来可用的最大增益是1060，返回1060 为实际生效的增益。

- cmos_get_inttime_max
  该函数只在xto1 WDR模式下生效，用于计算不同曝光比的时候，曝光时间的最大值。

  一般是行合成模式才需要。因为行合成模式，曝光时间的限制为长曝光时间加短曝光时间的和要小于一帧长度。所以不同曝光比下，最大曝光时间有差异，需要重新运算。

- cmos_gains_update, cmos_inttime_update
  这两个函数，是根据输入的Again、Dgain或曝光时间配置Sensor寄存器。

  精度模式采用TABLE时，输入参数值为对应cmos_again_calc_table()/cmos_dgain_calc_table() 函数中返回的again_db、dgain_db。

  精度模式采用Linear时，输入参数为生效的增益、曝光时间除以accuracy。比如accuracy为0.0078125，实际生效增益为1.5倍时，输入值为1.5 / 0.0078125 = 192。

  Xto1 WDR模式，需要分别配置长短每一帧的曝光时间。cmos_inttime_update()会被调用X次，分别传入不同帧曝光时间，第一次传入短帧。

- cmos_fps_set, cmos_slow_framerate_set
  cmos_fps_set函数为手动帧率配置函数，需要根据传入的帧率配置Sensor对应的寄存器，实现改变Sensor帧率的功能，并返回实际生效的帧率及最大曝光行数。

  cmos_slow_framerate_set()函数为自动降帧配置函数，需要根据当前曝光实际需要的最大曝光行数配置Sensor对应的寄存器，实现Sensor的降帧功能，并返回实际生效的最大曝光行数。
