AE (5)_auto exposure的驱动控制

#灵感# 有个项目,一开始驱动没配好,自动曝光乱飞。所以记下配置

参考链接:关于 bringup sensor 时,曝光时间异常的问题排查-CSDN博客

目录

确认最大曝光行:

1、曝光行配置

2、增益配置

raw 图发紫:


确认最大曝光行:

帧长地址:

帧长数值:

【配置最大曝光行: 0x4b0 - 8 = 1192

(frame_length(帧长) = exposure_line(曝光行) + dummy_line)

  

 像素阵列:

1、曝光行配置

先确认sensor 的曝光寄存器地址


 

曝光值在sensor 寄存器中存储的形式为:

一个值存在3个地址中,这就涉及移位操作,补一下移位操作的理论:

综上,此sensor的曝光时间应该这么写入:

sc223a_write_register(0x3e00, (Exposure_line>>12) & 0x0f); ( 右移12位后只剩3e00相关数值)

sc223a_write_register(0x3e01, (Exposure_line>>4) & 0xff);  (右移4位后剩3e00 和3e01数值,与&ff操作后,仅剩3e01相关数值。)

sc223a_write_register(0x3e02, ((Exposure_line>>0) & 0x0f) << 4);   (与&0f 后,剩3e02数值,再左移4位,写到[7:4]里)

附加的设置:这个sensor 的步长为半行时间,则曝光时间是半行*2。也就是写入数据需要*2再写入。之前算的曝光行,实际最大的写入= 0x4b0 *2 -10 = 2390。工具能读出max=2390/2=1195.

Exposure_line *= 2; // AEC 的调节步长为半行时间,半行时间为一行时间除以 2

2、增益配置

配置模拟gain,查 gain_table 写入寄存器regValTable 生效:

 

 

    ana_reg = ana_gain_regValTable_1[i];

    sensor_fine_gain = sensor_gain / ana_gain_regValTable_2[i];

    pRegInfo->settings[pRegInfo->settingSize].regAddr = 0x3e09;
    pRegInfo->settings[pRegInfo->settingSize].regData = ana_reg;

配置完模拟增益,需要再配置数字增益,也需要设置寄存器table 和 gain table。

当前这个sensor 的 again 只有表格对应的倍数,同时向下对齐取值。当total gain=8x时,模拟gain =7.24x, 剩下的由 dgain 补充, 约为 8/ 7.24=1.105,对应的dig gain 寄存器地址为0x8c。

---------------------我这糟心的代码能力。得赶紧补补

raw 图发紫:

补一个raw 图发紫的sensor驱动设置:

sensor的 first pixel 读取如果和ISP 的bayer pattern(RGGB ) 不匹配时,raw 颜色会异常。表现为全屏偏红,无明显可区分彩色。

  

需要修改sensor 的window location。比如此例按默认的读取会偏色,需要进行移位:

GBRG 变成 RGGB。

  

  • 18
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值