AE (5)_auto exposure的驱动控制

发布时间:2024年01月06日

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

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

确认最大曝光行:

帧长地址:

帧长数值:

【配置最大曝光行: 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。

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

补一个驱动设置:

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

??

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

GBRG 变成 RGGB。

??

文章来源:https://blog.csdn.net/search7/article/details/135422405
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。