☰
IMX678像素边界、CSI-2带宽与HDR调试解析
2026/10/28 22:12:34 网站建设 项目流程

简介:面向摄像头模组、嵌入式视觉与安全监控方案开发者,这份PDF提供Sony IMX678 CMOS图像传感器的官方datasheet,可用于器件选型、硬件设计、驱动配置与联调前的参数核对。压缩包内共1个PDF文件,约592KB,便于按规格项检索。文档围绕Type 1/1.8、约840万有效像素和3.0μm像素尺寸展开,给出模拟3.3V、数字1.1V、接口1.8V供电条件,内置时序调整、H/V驱动与串行通信电路;同时梳理全像素扫描、水平/垂直2/2线合并、窗口裁剪等读出模式,以及60帧/秒输出、HDR、可变速度快门、CDS/PGA增益和CSI-2 RAW10/RAW12输出等能力,并列出安全摄像头、计算机视觉与机器人视觉应用方向。已有2762人学习下载,可作为方案对比与联调排查的规格依据。

1. 840 万像素的传感器,为什么你只能拿到 829 万

翻 IMX678 的 datasheet,第一页写着"对角线 8.86 mm、Type 1/1.8、840 万有效像素",翻到第二页 Device Structure,推荐记录像素变成 3840×2160,约 829 万。一颗标称 840 万的 CMOS 图像传感器,到 camera 模组手里少了十一万像素,还有 20 行被划成了光学黑区。这不是厂商留一手,而是从晶圆到 4K 输出之间必须穿过的四道边界:总像素、有效像素、激活像素、推荐记录像素。搞懂这四层各差在哪,才能明白 datasheet 里每一个数字是承诺、是上限、还是仅供参考;这也是后面所有时序、带宽、增益计算的地基。

2. 像素阵列的分层边界:3856×2200 到 3840×2160 之间砍掉的到底是什么

2.1 四次减法:total、effective、active、recommended

datasheet 把像素数拆成四个层级,每一层都是一次减法。把它们并排列出来,减法关系就一目了然了。

层级水平垂直像素数减掉了什么
Total385622008.48 M全部物理像素,含光学黑区与 dummy
Effective385621808.40 M减掉垂直前 20 行光学黑区
Active385621768.39 M再减掉 4 行边界保护行
Recommended384021608.29 M再减掉 16 列、16 行,对齐 4K

垂直方向的账很干净:2200 减 2180 是那 20 行光学黑区,2180 减 2176 是 4 行过渡区,2176 减 2160 是 16 行余量。水平方向没有光学黑区(前后都是 0),但 3856 减 3840 同样是 16 列余量。也就是说,真正能拿去做图像处理的像素只有 3856×2176,输出 4K 时还要再主动裁掉一圈。

这 16 行 16 列的余量不是浪费。常见的实现思路是:读出电路在行首行尾需要几个像素的建立时间,列 ADC 的参考电压在边缘列也容易失配;留一圈不用的像素,等于给模拟前端留了一段"缓冲区"。datasheet 用推荐记录像素这个说法把它们排除在外,同时允许你在窗口裁剪模式下自行发挥。

2.2 光学黑区为什么只放在垂直方向的前 20 行

光学黑区(Optical Black)是被遮光层盖住的像素,它们照不到光,但和其他像素走同一套读出通路、同一套 PGA 和 ADC。输出值理论上就是暗电流加电路失调。

datasheet 写得很明确:水平方向前后都是 0 像素,垂直方向只有前面 20 行。这个不对称的布置是有讲究的。

黑电平校正需要一个"当前这一帧、当前这个增益、当前这个温度下"的暗参考。温度每升高几度,暗电流就翻一倍;模拟增益从 0 dB 拉到 30 dB,失调也被同比放大。所以黑参考必须每帧现采。放在垂直方向前 20 行,好处是它出现在每帧读出的最前面,后端拿到帧头就能立刻算出本帧的黑电平偏移,不必缓存整帧再回头修。

20 行这个数量是按列方向取平均用的。单行做平均,随机噪声压不下去;20 行累加平均,噪声降到 1/√20 左右,对 12 bit 输出(满量程 4095)来说够用了。水平方向不放光学黑区,通常意味着列方向的失调靠列内 CDS 在像素读出阶段就抵掉了,不需要额外的列参考。这个设计取舍在低照度场景里尤其关键——黑电平校歪一点,暗部就被抬灰或者压死。

2.3 2.0 μm 像素与 1/1.8 型光学格式的对齐验算

datasheet 说单位像素 2.0 μm × 2.0 μm,对角线 8.86 mm。这两个数字能不能对上?拿有效像素算一遍就知道。

宽度 3856 × 2.0 μm = 7.712 mm,高度 2180 × 2.0 μm = 4.360 mm。对角线 = √(7.712² + 4.360²) = √(59.475 + 19.010) = √78.485 ≈ 8.86 mm。

分毫不差。注意这里用的是 2180 行(有效像素),不是 2200 行(总像素)。如果拿总像素算,高度是 4.400 mm,对角线约 8.88 mm,就对不上标称值了。换句话说,datasheet 里的"对角线 8.86 mm"这个光学规格,定义在有效像素区上,而不是物理感光区上。

这个验算的价值在于:镜头选型、法兰距、CRA(主光线角)匹配,全部以这个 8.86 mm 为基准。如果按 total 区域去算光学格式,算出来的像圈会偏大两三个百分点。在广角镜头上,这个偏差足以让边缘照度掉一档、色彩阴影跑出来。血泪经验是:拿到任何一颗 sensor 的 datasheet,先用有效像素乘像素尺寸反推对角线,能对上再往下看。

3. 60 fps 的带宽预算:从 74.25 MHz 输入时钟到 CSI-2 lane 数

3.1 全像素 60 fps 到底要多少带宽

全像素扫描模式 3840×2160、60 帧,每秒要搬运的像素数是 3840 × 2160 × 60 ≈ 4.98 亿个。12 bit 输出就是 5.97 Gbps 的纯像素载荷,10 bit 输出是 4.98 Gbps。这些是"有效载荷",还没算 CSI-2 协议的包头包尾。

用一段脚本把不同位宽、不同 lane 数下的单 lane 速率摊开算,比在脑子里估要靠谱得多。

# IMX678 全像素扫描模式的链路预算估算 # 假设:CSI-2 长包协议开销约 10%(包头、包尾、短包、行结束填充) WIDTH, HEIGHT, FPS = 3840, 2160, 60 OVERHEAD = 1.10 for bpp in (10, 12): payload = WIDTH * HEIGHT * FPS * bpp # bit/s,纯像素载荷 for lanes in (2, 4, 8): per_lane = payload * OVERHEAD / lanes # 每 lane 需要承载的速率 print(f"{bpp} bit | {lanes} lane -> {per_lane / 1e9:5.2f} Gbps/lane")

跑出来是这样一组数:10 bit 下 2/4/8 lane 分别需要 2.74 / 1.37 / 0.68 Gbps,12 bit 下分别是 3.28 / 1.64 / 0.82 Gbps。datasheet 支持 2 Lane、4 Lane、8 Lane 和 4 Lane×2ch 四种接法,从这里就能看出每一种接法对应的速率档位——12 bit 60 fps 走 4 lane,单 lane 要 1.6 Gbps 以上;如果主控的 D-PHY 只能跑到 1.5 Gbps,那就必须上 8 lane,或者退回 10 bit。

注意:datasheet 正文没有给 CSI-2 的单 lane 速率,它只承诺了"全像素 12 bit 60 fps 可以输出"。具体 lane 速率要去配置表或主控端的接收能力里对,别拿上面的估算值当规格用。

3.2 4 Lane×2ch 是为多目同步准备的

datasheet 里除了常规的 2/4/8 lane,还列了"4 Lane × 2ch"。这不是给单颗 sensor 提速用的,而是给两颗 sensor 挂同一个 CSI-2 控制器用的。文档里同时列了"Synchronizing sensors function",两者是配套的:两颗 sensor 共享一个同步信号,各自用 4 lane 输出,主控端一个 CSI-2 接收器分两个虚拟通道收。

这个设计对双目测距、多目环视很实用。硬件上少一组 MIPI 接口,PCB 布线压力小一半;软件上两路数据带同一时间戳进来,立体匹配不用额外做时间对齐。代价是两颗 sensor 的帧率、曝光时间、增益必须联动配置,任何一颗改了曝光,另一颗不跟,视差就全乱了。

常见的坑是:只配了同步信号,忘了把两路的曝光起始位置对齐到同一个 1H 边界。结果两帧数据时间戳一样,实际曝光窗口错开几个行周期,运动物体边缘的视差算出来是发散的。

3.3 12 bit 和 10 bit 都是 60 fps,瓶颈在哪

datasheet 写得很清楚:全像素扫描模式下,12 bit 是 60 帧/秒,10 bit 也是 60 帧/秒。这个"两个都写 60"看起来像偷懒,其实是关键信息。

如果瓶颈在接口带宽,10 bit 的载荷比 12 bit 少六分之一,帧率应该能提到 72 fps 附近。既然两者相同,说明限制不在 CSI-2,而在像素读出本身——行时间是固定的。

倒推一下行时间:垂直方向总共 2200 行,60 帧每秒,行频就是 2200 × 60 = 132 kHz,单行时间 1/132000 ≈ 7.58 μs。这个数字后面还会用到,它是可变快门的最小步进,也是所有曝光时间计算的原子单位。想提帧率只有两条路:减少垂直总行数(窗口裁剪或 2/2-line binning),或者接受更短的行时间(通常要牺牲动态范围)。

这也解释了为什么 2/2-line binning 模式把分辨率砍到 1920×1080 之后,帧率还是 60 fps。因为 binning 模式省下的是每行的像素数,垂直方向的行数没变,行时间还是那个数。真要跑高帧率,得去翻窗口裁剪模式的行数配置,而不是指望位宽。

4. HDR 的两条路线:Digital Overlap 与 Clear HDR 的时序差别

4.1 Digital Overlap HDR:一帧里塞进几段不同长度的曝光

Digital Overlap(数字重叠)的思路是:在同一个帧周期内,让不同行的像素以不同的起始时刻开始曝光,长曝光先开始、短曝光后开始,读出时各段窗口互相重叠。这样输出的一帧里,实际上包含了多组不同曝光时长的数据,按行交错排列。

关键在"重叠"两个字。读出电路不是等长曝光全部结束再读短曝光,而是长曝光还在积分的时候,短曝光的行已经在往下读了。这样一帧时间只比单次曝光多一点点,帧率基本不掉。运动物体在不同曝光段里的位置偏差被压缩到一行以内,融合时的鬼影比"两帧拼接"小一个量级。

代价全在后端。sensor 吐出来的是一帧交错了多种曝光的原始数据,必须由 ISP 知道行序规则才能拆开重建。配置错一行偏移,融合出来就是横条纹。

4.2 Clear HDR:片上合成,输出就是线性化后的一帧

Clear HDR 走的是另一条路:长短曝光在 sensor 内部就合成好了,输出端口只看到一帧数据。ISP 拿到的就是已经做过动态范围压缩的线性或准线性图像,不需要知道内部曝光比例。

这条路对后端友好,对 sensor 内部电路要求高。要在模拟域或数字前端完成两段曝光的加权合并,权重要跟着场景亮度自适应,还要避免合成点附近出现"接缝"。常见的实现思路是用一个阈值判断:低照度区用长曝光数据,高亮度区切换到短曝光数据,中间过渡区按比例混合。

选择哪条路线,本质是"把复杂度放在 sensor 里还是放在 ISP 里"。做一体化 camera 模组、后端算力紧张的方案,倾向 Clear HDR;做可调参数多的专业成像方案,倾向 Digital Overlap,因为每一段曝光的比例、行序都还能在驱动里改。

4.3 8 dB 动态范围提升是怎么算出来的

datasheet 里关于背照式像素工艺的描述给了两个数:灵敏度 2000 mV/μm² 以上(彩色产品、706 cd/m² 光源、F5.6、等效 1 秒累积),以及单次曝光下 12 bit ADC 的动态范围比同像素尺寸的上一代产品提升 8 dB 以上。

12 bit 的理论动态范围是 20log₁₀(2¹²) ≈ 72 dB。提升 8 dB,等于 72 + 8 = 80 dB。反过来验算:10^(8/20) ≈ 2.51,也就是线性动态范围扩了约 2.5 倍。这 2.5 倍从哪来?背照式把光电二极管的有效感光面积做大,同样光强下积累的电荷更多,散粒噪声对应的信噪比抬高;同时读出链路的噪声底没变,两下一挤,动态范围就上去了。

这个 8 dB 不是白给的营销数字,它决定了 HDR 合成时的阈值位置。如果后端还按老款 sensor 的阈值切长短曝光,就会在中间亮度区反复横跳,出现"呼吸"式的明暗闪烁。

4.4 850 nm 近红外下的表现差异

datasheet 给了两组对比图。一组是 0.2 lux 极暗环境:上一代产品需要 60 dB 增益,IMX678 只需要 48 dB,就能输出相同亮度。另一组是 850 nm 近红外、F1.6、33.3 ms、0 dB 增益下的成像对比。

0.2 lux 那组差了 12 dB,换算成线性是 4 倍——正好对应文档里"增益设定是 4 倍"的说明。这就是背照式工艺加像素微透镜优化的直接结果,灵敏度提升了 4 倍。

850 nm 那组更有意思。硅在 850 nm 的吸收深度是可见光的十几倍,光生载流子产生在离表面很深的地方。前照式传感器的金属布线层会挡住一部分,背照式把衬底减薄、从背面进光,长波长光子的收集效率明显更高。对安防 camera 来说这是刚需——红外补光灯的功耗和散热,直接决定整机能不能做小。

5. 排查清单:拿到 IMX678 配置表后最容易翻车的五处

5.1 时钟、接口与地址相关的三处翻车

第一处:输入时钟选错档,帧率对不上。

现象:图像能出,但帧率是 60 的整数倍分之一,或者干脆黑屏、只出几行。

原因:datasheet 列了 13.5 / 18 / 24 / 27 / 36 / 37.125 / 72 / 74.25 MHz 这一串输入频率,每个频率对应的内部 PLL 分频比不一样。板子上焊了 27 MHz 晶振,驱动里却按 74.25 MHz 配 PLL,行频就整个偏了。这几个数字看着杂,其实都有出处:74.25 MHz 是 1080p60 体系里的常用像素时钟,37.125 MHz 是它的一半,27 MHz 和 24 MHz 是通用视频时钟,13.5 MHz 更低一档。

解决:先量板上实际晶振频率,再回头查配置表里对应的分频参数。别信原理图标注,焊错料是常事。

第二处:lane 数和位宽不匹配,画面花屏或丢行。

现象:图像上半部分正常、下半部分撕裂,或者整帧出现规律性的彩色噪点带。

原因:每条 lane 承载的行内像素是均分的,lane 数配错(比如硬件走 4 lane、驱动按 2 lane 配),CSI-2 解包时行边界就错位了。另一种情况是 12 bit 数据走了只支持 10 bit 的接收通道,高位被截掉。

解决:用主控端的 CSI-2 错误计数器看有没有 ECC/CRC 报错,有就是打包层的问题;没有报错但图像错位,就是 lane 分配或位宽配置的问题。

第三处:binning 模式下按全像素坐标裁窗,画面错位。

现象:开了 2/2-line binning,输出 1920×1080,但设置的裁剪窗口位置和预期差一倍。

原因:binning 之后每个输出像素对应 2×2 个物理像素,坐标原点、步长、边界全部换了尺度。驱动里如果沿用全像素模式的寄存器值,裁剪窗口就落到错误的位置上,甚至裁到光学黑区里去。

解决:窗口裁剪的起始行、起始列、宽高,全部按当前读出模式的坐标系重算一遍。binning 模式下所有坐标除以 2。

5.2 画质与增益相关的两处翻车

第四处:黑电平随温度漂移,暗部发灰。

现象:机器冷启动时画面正常,连续跑两小时后暗部整体抬亮,夜视场景一片雾。

原因:暗电流随温度指数上升,而黑电平校正用的还是开机时那一帧的参考值。datasheet 里那 20 行垂直光学黑区就是为每帧重算黑电平准备的,如果驱动只在上电时读一次,后面就全靠猜。

解决:每帧从光学黑区重新统计黑电平,至少也要按温度区间做分段补偿。Tj 从 25 ℃ 爬到 60 ℃,暗电流能差好几倍,这个必须动态跟。

第五处:高增益段噪点爆炸,以为数字增益能救。

现象:照度降到 0.1 lux 以下,把增益从 48 dB 一路推到 72 dB,画面越来越亮,但噪点同步放大,细节一点没多。

原因:datasheet 的增益结构是分段的——0 到 30 dB 是纯模拟增益(步进 0.3 dB),30.3 到 72 dB 是"模拟固定 30 dB + 数字增益 0.3 到 42 dB"。模拟增益在像素读出前就把信号抬起来,信噪比基本不变;数字增益是 ADC 之后乘系数,信号和噪声一起放大,信噪比只会更差。

解决:把 30 dB 当作模拟增益的天花板,超过之后就别指望画质。真要提亮,得靠延长曝光时间(可变快门,1H 步进、单行约 7.58 μs)或者补光。48 dB 就能达到上一代 60 dB 的亮度,已经是这颗 sensor 的红利了,别硬推到 72 dB 把红利吃回去。

6. 把 datasheet 当契约读:哪些是承诺,哪些是要自己验的

一份 sensor datasheet 里,参数的"硬度"是分层的。分不清这个层次,选型和调试都会踩空。

最硬的是器件结构那一节:3856×2200 总像素、2.0 μm 像素、132 pin LGA、三路电源 3.3/1.1/1.8 V。这些是物理事实,改不了,也决定了你的 PCB 能怎么画。上电时序尤其要按手册来,1.1 V 数字核心先塌下去再上电,闩锁不是闹着玩的。

中等硬度的是接口能力:CSI-2 支持 2/4/8/4×2 lane,RAW10/RAW12 输出,输入频率那八档。这些是"可以做到"的清单,但每一项都需要你正确配置才成立。手册写"支持 8 lane",不代表你随手配就跑到 8 lane 满速。

最软的是特性表里的典型值:灵敏度 15886 Digit/lx/s、饱和信号最小 3895 Digit(12 bit 满量程 4095 的 95% 左右)、Tj = 60 ℃ 条件下的指标。典型值意味着"这个条件下大部分片子能做到",不是"每一片都保证"。做产品要留余量,尤其是饱和信号这种只给 Min 值的参数。

参数类型例子能拿来干什么不能拿来干什么
结构参数2.0 μm、8.86 mm 对角线镜头选型、机械堆叠推断画质
接口能力8 lane、RAW12主控选型、带宽规划保证满速无错
典型特性15886 Digit/lx/s估算低照度表现写进验收标准

验证的方法其实很朴素:拿一颗样片,把曝光时间固定成整 1H 的倍数,增益从 0 dB 逐档拉到 72 dB,每档采一张平场,把均值除以增益倍数,曲线平不平一看就知道模拟段和数字段的分界在哪;再把温度往上推,看黑电平漂多少。这两个实验做下来,手册上那些数字就变成了你自己的经验值。从那以后我每次拿到新的 sensor 手册,都强制先把有效像素、对角线、行时间这三个数反推一遍,对不上就停下来重新读——因为对不上的地方,往往就是后面要翻车的地方。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询