Toybrick

imx415适配60帧

troy

版主

积分
2354
楼主
发表于 2023-7-11 12:40:35 | 显示全部楼层
首先你要知道帧率是怎么来的,受到哪些因素的影响。
1. sensor本身支持的最大mipi传输速率,每秒传输的数据量是width * height * 10bit * fps,这个也是有上限,不能无限制提高。IMX415的DateSheet上写的就是支持3864x2192@30fps。
2. mipi传输链路的限制,lane的数量,和每个lane每秒能传输的最大数据量,这个一般不会到达上限。
3. cpu端的phy接收性能和isp处理速度的限制,就像有些CPU支持4K,有些支持8K,具体要看下你的板子是什么芯片,翻下芯片的TRM说明。你总不能要求51单片机处理8K 60fps吧。
4. 曝光时间的限制,你代码贴出来的30fps,是当前sensor的初始化序列下,sensor本身输出的是30fps的帧率图像,你总不能要求CPU能读到60fps的图像吧。在弱光条件下,帧率有可能会低于30fps,是因为曝光时间拉长了,当前曝光时间 + 图像数据的传输时间 > 33ms时,帧率就会被拉低。

提升帧率的措施:
据我所知imx415所能支持的帧率就是4K@30fps,要调整为60帧,只能是重新找模组厂商拿一组低分辨率的sensor配置,比如1080P@60fps,然后添加到supported_modes,设置max_fps为60fps,初始序列就是其中的global_reg_list和reg_list。这些寄存器配置会通过I2C设置到sensor中,控制sensor输出的fps。
回复

使用道具 举报

troy

版主

积分
2354
沙发
发表于 2023-7-12 09:17:00 | 显示全部楼层
wudiking 发表于 2023-7-11 13:27
3588平台,使用imx415,摄像头支持1920*1080分辨率60fps,当前只能每秒读30帧,如何调整到60帧,哪里能知 ...

上面说了,只能找模组厂商拿低分辨率的配置。
或者自己对照imx415的芯片文档自己改,但是厂商提供的文档寄存器大部分都不全,自己基本不可能改好,还有计算各个参数,比如mipi速率之类的。
回复

使用道具 举报

troy

版主

积分
2354
板凳
发表于 2023-7-18 09:23:35 | 显示全部楼层
wudiking 发表于 2023-7-17 08:09
您好,我从sonyfae拿到了60帧的序列,但是他不分globa_reg和reg,我如何调整啊 ...

global_reg和reg是由多个初始序列拆出来,把多个初始序列相同部分放到global_reg,差异部分放到reg。你完全可以不管global_reg,把你的60fps序列都放到reg中,反正最终reg会覆盖global。
还有需要修改获取确认的
1. 你的lane数和现在硬件连接的lane数是否一致,现在是4lane的
2. supported_modes中新增一个60fps序列的结构体,或者把原来的结构体都删了,只留下60fps的结构体。
    a) 修改max_fps的denominator为60
    b)    根据你的序列修改width和height
    c)    修改hts_def和vts_def代码里面有计算公式,你可以先算一下原来的值,学会怎么算以后再改
    d)    global_reg_list和reg_list都改成你的序列,实际写两遍序列到sensor也没影响
    e)    mipi_freq_idx是用来表示使用link_freq_items中哪个的频率,你可以在link_freq_items新加一个60fps使用的mipi freq,这个很重要,如果mipi频率对应不上,会无法正确接收数据。
     f)    bpp是填写60pfs序列输出的是10bit还是12bit,如果是10bit,  bpp = 10, .bus_fmt = MEDIA_BUS_FMT_SGBRG10_1X10。如果是12bit,bpp = 12, bus_fmt = MEDIA_BUS_FMT_SGBRG12_1X12。


再次提醒: mipi freq是非常重要的参数,关系到mipi数据能不能正常接收,时钟对不上,mipi中断会一直报错。还有宽高如果设置错误,mipi中断也会不断报错。

需要更多支持,请贵公司联系申请redmine账号,会有工程师进行处理。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

产品中心 购买渠道 开源社区 Wiki教程 资料下载 关于Toybrick


快速回复 返回顶部 返回列表