sensor笔记(一)imx415

本文主要内容

    • [IMX415简明笔记 - 前言](#IMX415简明笔记 - 前言)
      • 一、imx415驱动框架
      • 二、imx415数据手册阅读
        • [1. imx415三种主要模式](#1. imx415三种主要模式)
        • [(1)全像素模式(All pixel)](#(1)全像素模式(All pixel))
        • [(2)水平/垂直2x2行合并模式(Horizontal/Vertical 2/2-line binning)](#(2)水平/垂直2x2行合并模式(Horizontal/Vertical 2/2-line binning))
        • [(3)窗口裁剪模式(Window cropping mode)](#(3)窗口裁剪模式(Window cropping mode))
      • 三、寄存器配置

IMX415简明笔记 - 前言

✔️本篇主要是笔者为调试imx415不同的帧率而记录的相关笔记,内容相对之前文章简要,全文均为手动整理,也不可避免有所错漏,只希望能给到需要的读者一些参考。

一、imx415驱动框架

✔️sensor驱动比较复杂,涉及的框架比较多,如果有想了解这部分内容的读者,推荐b站up@自依止-法依止的《从驱动框架出发-结构化手搓IMX415驱动代码(一)》系列视频。

二、imx415数据手册阅读

1. imx415三种主要模式
(1)全像素模式(All pixel)

⚫️ 支持分辨率:3840x2160

⚫️ 支持帧率:4 lanes最高可支持90fps 此处均是数据手册提供的参数,非某一平台所支持

⚫️ 读出数据方式:全部像素逐行读出

⚫️ 一般使用场景:分辨率最高、画质完整、带宽要求高,需要高清晰度常见

⚫️ 阅读数据手册:

首先我们要了解数据手册提供的以上参数:

✔️1H period(单位:μs):读取一行的周期(像素+水平消隐)1H的计算十分关键,后面binning模式我们再聊

✔️VMAX:垂直总长度并不是指分辨率

由以上两个参数便可计算得到:

✔️DataRate(Mbps/lane):sensor输出图像数据时的传输速率,决定图像数据传输速度与帧率上限

✔️MDBIT:sensor输出的实际位宽

那么,由此就可以知道4k@60fps的DataRate为:3840×2160 ×12bit×60fps ≈ 5695Mbit/s ≈ 5.97Gbit/s

以4lanes的MIPI PHY来计算,每通道带宽为2.5Gbps,理论上可以支持4k90fps的imx415摄像头的数据量(约9Gbps;再考虑到ISP的带宽,我们可以大致计算出该平台能支持的4k帧率(以RK3588和RV1126B为例):

这里仅讨论全像素模式,也就是4k分辨率下

(2)水平/垂直2x2行合并模式(Horizontal/Vertical 2/2-line binning)

⚫️ 支持分辨率:1920x1080

⚫️ 支持帧率:4 lanes可支持90fps 笔者目前只测试到1080p90fps,此时的1H是5us

⚫️ 读出数据方式:合并水平和垂直方向各2个像素后读出也就是合并4k分辨率水平和垂直各2个像素,因此最高支持1080p

⚫️ 一般使用场景:1080分辨率以下的高帧率场景

⚫️ 阅读数据手册:

✔️可以发现,binning模式分辨率最高仅支持1080p,这里我们以1126B的ISP性能来计算,可以得到该模式下1080p分辨率下最高帧率可达182fps(360x1024x1024÷1920x1080);当然这里也是理论值,受限于其它因素,实际并无法达到,120fps都难以实现这里只讨论binning模式,不叠加window wropping

✔️回到imx415的数据手册,那么sensor的帧率如何计算?

  • 相关参数:VMAX、HMAX、1H period、1V period、Clock Frequency

  • Clock Frequency:sensor工作时钟(比如74.25MHz,不是唯一以实际为准)

    由于数据手册中时钟相关的寄存器配置不是开源的,所以此处并不需要关心太多,反而只需要关注以下参数

  • VMAX和HMAX:垂直和水平方向的时钟周期数,共同决定读取一帧图像的总时间,是时序的控制参数

    注意这两个值并不是描述sensor分辨率,在这里配置sensor时广义可以当成是一帧图像的长和宽,但是这并不准确

  • 1H period:一帧图像读取一行的时间/周期(读一行要多久)

  • 1V period:一帧图像垂直方向的周期长度(有多少行)

  • 例如,以数据手册第49页这里为例,90帧的计算过程如图

✔️如果是1080p120fps如何计算VMAX、HMAX、1H period?

取VMAX=2250,则fps=1/(2250*1H)=0.00012,计算得出1H≈3.75μs,此时HMAX≈266。这也是理论数值,实际配置到驱动里可以发现是有问题的,调整相关寄存器值均不能得到120fp。经过多次测试,笔者更倾向于该模式下无法支持1080p@120fps。

(3)窗口裁剪模式(Window cropping mode)

⚫️ Window cropping模式比较好理解,只需要配置下图里的几个寄存器(起始点、裁剪后的图像尺寸)即可。注意只是sensor很直接的裁剪方式,如果使用4k分辨率裁剪到1080,会得到一个放大的图像,比如下图就是4k@60fps cropping到1080@120fps的效果(帧率也只到100左右),类似为了提高帧率而选择牺牲分辨率,笔者也测试过该模式下获得的2k@60fps,实际效果并不是很好。如果是3568或1126B平台,不如选择imx335,理论上是可以配置到2k@60fps、1080@120fps,且图像效果不会有放大的痕迹。

三、寄存器配置

<略>

相关推荐
杨逢昌工厂6S管理7 小时前
116——杨逢昌:归位三定闭环法的旺季轻量化执行方案与工具清单
经验分享·笔记·职场和发展·学习方法
一滴泪的时间7 小时前
不同行业 RFID 硬件落地场景对比分析
经验分享
弈语道破AI7 小时前
一稿出片!双十一品牌宣传AI视频生成工具推荐:即梦 Seedance 2.5 全球首发
人工智能·音视频
赛博仓鼠7 小时前
Vidu Q4 Preview实测:15张参考图+3段音频驱动,2K/4K输出,国产视频生成新标杆
ai·aigc·音视频
Aurorar0rua7 小时前
CS50 x 2024 Notes Data structures - 08
c语言·开发语言·学习方法
小米里的大麦8 小时前
19 C、C++ 操作 MySQL
c语言·c++·mysql
小猴子爱上树8 小时前
跨马翻译:批量图片翻译+视频字幕+智能抠图,一站式跨境电商翻译工具
python·音视频
Logic1018 小时前
C语言/数据结构位运算题解:异或XOR找出套碗游戏中的“幸运碗“——只出现一次的数字
c语言·数据结构·算法·数组·位运算·时间复杂度·空间复杂度
番茄灭世神8 小时前
PN学堂GD32教程第12篇——SPI与Nor Flash
c语言·stm32·单片机·嵌入式·gd32·总线协议
Water_based8 小时前
水性滚涂漆应用于滚喷机小五金件喷涂工艺详解
经验分享·笔记·产品经理