
简介Sony IMX678 CMOS图像传感器官方datasheet面向安防摄像头、计算机视觉与机器人视觉方向的硬件工程师、嵌入式开发者及图像算法学习者可用于快速核对芯片规格、设计选型与驱动开发。包内为1份PDF文档约592KB完整覆盖器件结构、有效像素与像素尺寸、供电与工作温度、读出模式、最大帧率、HDR、Sensor同步、可变速度快门、CDS/PGA增益及CSI-2 RAW10/RAW12输出等关键条目并给出推荐录像像素3840×2160与多路Lane配置说明。已有2773人学习下载。读者可据此梳理IMX678的寄存器配置思路、评估低照度与高动态范围表现并为原理图设计、时序调试和系统联调提供一手依据适合作为选型与开发过程中的案头参考。1. 8.86 mm 对角线与 2.0 μm一组“没变”的参数里藏着 12 dB两颗 1/1.8 型、840 万像素、2.0 μm 像素间距的 sensor 摆在同一条 0.2 lux 的暗巷里一颗要开到 60 dB 增益才够亮另一颗 48 dB 就够了。像素没变大镜头没换曝光时间都是 33.3 ms——按“像素尺寸决定灵敏度”那套流行说法这两张图本不该有差别。差别藏在像素内部的电荷收集路径、读出链路的噪声底以及 850 nm 附近被单独加强的量子效率里。IMX678 的 datasheet 把这套改动拆成了四条读出模式、两段式增益和一堆可编程行时序值不值得深挖取决于你想不想在 security camera 的暗光预算里省下那 12 dB。2. STARVIS 2 与 2.0 μm 像素暗光下那 12 dB 的来路2.1 背照式把布线层赶到背面开口率不再被金属吃掉前照式结构里光电二极管上方压着金属布线层和多晶硅栅光线要穿过这几层才能到达硅片开口率天然被扣掉一块斜入射的光还会被布线挡住形成阴影效应表现为画面四角偏暗、色彩偏移。背照式的做法是把硅衬底减薄到几微米从背面进光布线层挪到正面物理上不再遮挡感光区片上微透镜也能把更大角度的斜入射光汇聚到 PD 上。对 2.0 μm 这种小像素开口率的边际收益被放大了——像素越小布线占的面积比例越高前照式的损失越难接受。常见的实现思路是减薄之后在背面做 P 钝化层抑制界面态导致的暗电流再用深沟槽隔离DTI在像素之间挖槽填充阻断载流子的横向扩散。串扰下降的直接体现是 color shading 变轻、暗部信噪比抬升这也是手册敢写“low dark current and no smear”的物理基础。2.2 850 nm 那段单独加厚硅的吸收深度决定了工艺选择硅在 850 nm 的吸收深度在十几微米量级远大于蓝光那几百纳米。2.0 μm 厚的感光区对 850 nm 光子来说太薄了大部分光子直接穿过去根本不产生电子。业界常见做法是把 PD 的耗尽区尽量做深或者在背面加一层能级匹配的吸收/反射结构让近红外光子在耗尽区里多跑一趟再被吸收。手册里那组 850 nm 对比图同为 F1.6、33.3 ms、0 dB 增益就是这条工艺路线的成绩单同增益下图像更亮、细节更实说明同样照度下转换出的电子数更多。对安防场景的含义很直接——850 nm 补光灯可以用更低功率达到同样的画面亮度或者同等功率下把补光距离再推远一截。940 nm 的方案在隐蔽性上更好但硅的吸收更弱这条工艺路线的收益会更明显。2.3 0.2 lux 那组对比60 dB 与 48 dB 之间的 12 dB 怎么算增益差 4 倍20·log10(4) ≈ 12 dB。这个数字不是单一环节的功劳可以拆成几块来看对比项上一代同规格器件IMX678照度0.2 lux0.2 lux光圈F1.6F1.6曝光时间33.3 ms33.3 ms所需增益60 dB48 dB输出亮度基准相同把表读对很关键它是“同样的输出亮度下增益需求下降 12 dB”不是“图像质量相同”。增益低意味着噪声被放大的倍数少暗部颗粒感更轻后级降噪算法的压力小一大截。这 12 dB 大致可以分摊到三处——量子效率与填充因子带来的信号提升6 dB 量级、暗电流下降让长曝光时暗电流散粒噪声占比降低、读出链路等效输入噪声变小。三者叠加才有了 4 倍的增益余量。2.4 灵敏度 15886 Digit/lx/s 与饱和 3895 Digit 要放在一起读这两个数分开看都没什么意义。12 bit 满量程是 4095 个码值饱和信号 Min. 3895说明设计上留了约 200 个码值的余量5% 左右用来吸收像素间响应差异和黑电平漂移——不给这个余量高光一冲就削顶而且削得不整齐。灵敏度 15886 Digit/lx/s 的定义是在 F5.6、706 cd/m² 光源、1 s 积累的等效条件下折算出的 12 bit 码值输出。它把“光子 → 电子 → 电压 → 数字码”整条链路的转换效率打包成一个标量。用它能反推一个有用的量在 706 cd/m²、F5.6 下达到饱和码值需要多久。# 用灵敏度与饱和码值反推饱和所需曝光时间验证手册的测试基准是否自洽 sensitivity 15886 # Digit/lx/s12 bit 折算值 saturation_min 3895 # Digit饱和信号最小值 illuminance 706 # lxSTARVIS 2 定义里的测试照度 t_sat saturation_min / (sensitivity * illuminance / 1.0) print(f达到饱和码值所需积累时间 ≈ {t_sat*1000:.3f} ms) # 输出约 0.347 ms量级上说明这个灵敏度指标是在很短积累时间下测的这里要注意单位灵敏度里的 lx 已经包含了照度代码里除以illuminance是把“每 lx 每秒的码值”还原成绝对码值速率。算出来的数量级告诉你手册的 1 s 只是定义基准不是实际工作点——真实场景曝光在几十毫秒量级远没到饱和。反过来暗光下曝光拉长到 33 ms 甚至更久时暗电流散粒噪声就成了主导项这也是为什么第 2.1 节的钝化工艺值得单独讲。3. 读出链路CDS/PGA、1H 快门与 60 fps 的带宽账3.1 增益为什么拆成模拟 30 dB 加数字 42 dB 两段信号出像素后先过 CDS相关双采样把复位电平和信号电平相减kTC 噪声和像素级固定模式噪声在这一步被压掉大半。接着进 PGA 做模拟放大再送 ADC 量化。这里有个容易忽略的次序问题模拟增益在量化之前放大信号的同时也放大噪声但它降低了 ADC 量化噪声在总噪声里的相对占比——信号很小时模拟增益能把信号“顶”到更多码值上去避免被 LSB 吃掉。数字增益在 ADC 之后本质是纯乘法信号和量化噪声一起放大SNR 一点不变。所以工程惯例是先打满模拟段再动数字段。增益区段范围步进实现位置对 SNR 的影响模拟0 – 30 dB0.3 dBPGAADC 之前改善量化噪声占比数字30.3 – 72 dB0.3 dB数字乘法ADC 之后不改善仅提亮度手册把模拟段封顶在 30 dB30.3 dB 起步接数字段正是这个逻辑的体现。0.3 dB 的步进对应约 3.5% 的幅度变化比摄影里的 1/3 stop约 2.6 dB细得多好处是自动曝光收敛时不会在两级增益之间来回跳——增益阶梯太粗AE 就会在临界点反复震荡画面亮度像呼吸一样起伏这是调试时很典型的翻车场景。3.2 可变快门为什么用 1H 作单位而不是毫秒1H 就是一个行周期。曝光时间用行数表达等于用同一套像素时钟去计量光积分时间。这样做有三个实在的好处。第一时序同源。曝光长度和读出时序由同一个时钟派生不存在跨时钟域引入的 ±1 行抖动。用毫秒写曝光再换算成时钟周期遇到非整数就会截断累积起来就是帧间亮度微抖。第二抗工频闪烁好算。50 Hz 光源的半周期是 10 ms只要曝光行数对应的时间取 10 ms 的整数倍条纹就消失。整个计算在“行”这个域里做不用管像素时钟具体是多少。第三和帧率天然联动。一帧的总行数 VTS 定了最大曝光行数就定了寄存器配置不会互相打架。行周期本身由 HTS一行总像素时钟数和像素时钟决定。手册给的输入频率档位是 13.5 / 18 / 24 / 27 / 36 / 37.125 / 72 / 74.25 MHz这几个数不是随便挑的74.25 MHz 是 1080p60 像素时钟的一半也是 4K30 的常用时钟37.125 MHz 是它再减半13.5 MHz 来自标清时代的采样基准。意思是这颗器件可以直接挂到视频 SoC 现成的时钟树上不需要额外 PLL 去凑一个奇怪频率。# 估算行周期、帧率与 50 Hz 抗闪所需的曝光行数 PIXEL_CLOCK_HZ 74_250_000 # 手册可选输入频率之一 HTS 4400 # 一行总像素时钟数含 blanking实际值以寄存器手册为准 VTS 2200 # 一帧总行数含 OB 行与场消隐 line_time_s HTS / PIXEL_CLOCK_HZ frame_time_s line_time_s * VTS print(f1H {line_time_s*1e6:.3f} us) print(f帧时间 {frame_time_s*1e3:.3f} ms帧率 {1/frame_time_s:.2f} fps) # 50 Hz 光源抗闪曝光时间取 10 ms 的整数倍 target 0.010 print(f10 ms 对应约 {target/line_time_s:.1f} 行取整后回算曝光 {round(target/line_time_s)*line_time_s*1e3:.3f} ms)参数说明HTS 和 VTS 都是寄存器可编程的上面 4400 / 2200 只是量级示例真实值必须以原厂配置为准。逻辑上行周期只由 HTS 和像素时钟决定帧率只由 VTS 和行周期决定两者解耦改帧率不用动像素时钟。最后一次round是抗闪的关键——直接取整会让曝光偏差最多半行对 10 ms 来说完全可以接受但对 1 ms 量级的短曝光就要重新算。3.3 8.29 M 像素乘 12 bit 乘 60 fps 到底要多少带宽把裸数据率算出来Lane 数怎么选就没什么可争的了。W, H, FPS 3840, 2160, 60 for bits in (10, 12): gbps W * H * bits * FPS / 1e9 print(fRAW{bits}: {gbps:.3f} Gbps) raw12 W * H * 12 * FPS / 1e9 for lanes in (2, 4, 8): print(f{lanes} Lane 均分 RAW12每 Lane {raw12/lanes:.3f} Gbps)结果很干脆RAW12 约 5.97 GbpsRAW10 约 4.98 Gbps。分到 2 Lane 是每 Lane 2.99 Gbps超过常见 D-PHY 单 Lane 2.5 Gbps 的能力上限全像素 60 fps 根本跑不动4 Lane 是 1.49 Gbps能跑但余量不大8 Lane 是 0.75 Gbps宽松。手册同时列 4 Lane × 2ch是为了双路输出或者分区读出不是给你凑数的。这也解释了一个细节RAW10 和 RAW12 的最大帧率都是 60 fps。如果瓶颈在链路带宽降到 10 bit 应该能提速 20%既然没提速说明瓶颈在内部行周期ADC 列并行转换加水平扫描的固定开销输出接口反而有余量。想提速只能减行数。3.4 2/2 合并模式帧率还是 60 fps说明瓶颈不在读出带宽合并之后像素数掉到四分之一行数减半如果链路是瓶颈帧率应该翻倍才对。手册给的最大帧率仍然写 60 fps这是条很有信息量的“负结果”内部行周期是固定的合并换来的不是速度而是灵敏度和信噪比。想要高帧率路径是窗口裁剪减行数不是合并。对系统设计的含义如果你的应用是高速抓拍别指望开合并模式提速那只会让你损失分辨率还拿不到帧率。合并模式该用在哪下一章拆。4. 四种读出模式合并、裁剪、翻转、HDR 各自省下了什么4.1 2/2-line binning 是电荷域相加不等价于软件平均水平方向两个同色像素共用浮空扩散节点垂直方向两行同时被选中信号在进 ADC 之前就加起来了。信号乘 4散粒噪声按 √4 2 增长SNR 净提升 6 dB。这和后处理里的软件平均完全不是一回事。软件平均只能压随机噪声光子没多收一个散粒噪声主导时几乎没用电荷域相加是真的把四个像素收集的电子合到一起光子收集量翻了四倍。血泪经验是暗光下开合并比调降噪算法参数有效得多但很多人第一反应是去调 3DNR 强度。代价也要认。分辨率掉到 1920×1080Bayer 周期变宽摩尔纹和伪彩的抑制能力下降拍细密栅格类场景会更容易出彩纹。夜间模式 1080p 够用6 dB 信噪比很值钱这笔账在安防里通常是划算的。4.2 窗口裁剪ROI 读出和帧率提升的边界在哪只读出寄存器指定的矩形区域行数减少VTS 可以跟着调小帧率就上去了。但提升不是线性的关键在于水平方向的总像素时钟数 HTS 有没有同步缩小——如果 HTS 不动行周期不变裁掉的只是行数。两个典型用法。一是机器视觉取 ROI后级 ISP 和传输链路的压力直接降下来尤其在多路复用一个 SoC 的时候。二是电子 PTZ到底用全像素读出再裁还是直接裁剪读出换帧率取决于算力放在前端还是后端。有个坑必须提前说裁剪起点要按寄存器要求的对齐单位来常见是 4 或 8 像素并且起始坐标要落在 Bayer 相位正确的位置上。起点错一个像素整幅图的颜色就花了而且花得很规律容易被误判成去马赛克算法的问题排查半天。4.3 正常/倒置读出与内置时序把 driver 从 FPGA 搬回芯片水平、垂直方向各支持正常和倒置读出。模组倒装感光面朝下时图像是上下颠倒的硬件翻转省掉 ISP 的一次 flip也省掉一次 DDR 读写带宽——4K60 RAW12 的翻转在软件里做对内存带宽是实打实的消耗。多目拼接场景里这条更重要。几颗 sensor 的物理朝向不一致时硬件翻转能让所有输出落在同一坐标系下后级拼接不用为每一路单独维护一个变换矩阵标定流程能简化一大截。内置的 timing adjustment circuit、H/V driver 和串行通信电路本质是把过去要 FPGA 干的活搬回芯片里。模式切换从“重配 FPGA 时序逻辑”变成“写几个寄存器”。代价是寄存器数量爆炸初始化序列长到没法手写必须依赖原厂给的配置文件。这里有个反复踩的坑某些寄存器有前置条件比如改读出模式前必须先停流顺序错了不报错只是出图异常。4.4 Digital overlap HDR 与 Clear HDR两条路线的取舍手册列了两种 HDR没给曲线也没给具体档位但名字本身透露了路线差异。Digital overlap HDR 是多次曝光在数字域拼接长曝光负责暗部短曝光负责高光两段曝光在时间上有重叠合成在后端完成。动态范围扩展能力强代价是两次曝光之间存在时间差运动物体边缘会出现合成伪影——行走的人轮廓上会有一圈奇怪的边这是 DOL 最典型的症状。设一个运动检测阈值切回单曝光是常见工程折中。Clear HDR 更偏向单帧内的多次读出或多增益读出曝光间隙被压到最小运动伪影显著改善但动态范围的扩展幅度通常不如前者激进。选哪条取决于你的场景是“高反差的静态监控”还是“有快速运动的出入口”。手册只给名字不给参数具体档位和合成方式得去查寄存器手册别照抄别的型号的配置。4.5 多传感器同步主从引脚解决的是相位问题synchronizing sensors function 面向的是多目场景双目测距、全景拼接、多光谱成像。它的核心不是让几颗 sensor 帧率一致而是让它们的曝光起始时刻对齐到同一个时钟基准上。帧率一致容易做到各自跑各自的定时器就行曝光时刻对齐才是难点。差半行双目视差计算就会引入系统性误差差一帧运动目标在两个视角里的位置对不上拼接直接出鬼影。实现上通常是选一颗做主机输出同步信号其余从机把内部时序发生器挂到外部同步输入上主从的 XVS/XHS 走等长布线。布线不等长是这里最常见的翻车点。几厘米的走线差在 74.25 MHz 的时钟下就是几个周期的偏移看起来只是轻微不同步测出来的视差数据却怎么标定都对不上。5. 避坑把 IMX678 焊上板子之后最容易翻车的五件事5.1 上电顺序反了I2C 有应答但出图全黑现象板子上电后 I2C 能读到器件 ID寄存器读写都正常但怎么配都不出图或者出来的第一帧全黑。原因三路供电模拟 3.3 V、数字 1.1 V、接口 1.8 V有先后要求。数字核 1.1 V 先于接口 1.8 V 建立时内部复位逻辑可能停在不确定状态寄存器能访问是因为 I2C 挂在 1.8 V 域上但模拟通路的偏置没建立起来。这种“能通信但不出图”最容易误导人往寄存器配置上找问题。解决严格按手册的上电顺序做用 PGpower good信号串成链或者 RC 延时保证间隔。掉电顺序也要管反着来同样会出问题。调试阶段可以在每路电源上单独加测试点用示波器看建立时序别靠猜。5.2 把像素间距当成 3.0 μm 去选镜头边缘解析力直接塌现象换上镜头后中心解析力正常边缘明显发虚彩边严重换了几颗镜头都一样。原因这颗器件的 unit cell size 是 2.0 μm × 2.0 μm不是某些二手资料里传的 3.0 μm。按 3.0 μm 算出来的像元密度和 MTF 要求全错选的镜头在边缘根本喂不饱 2.0 μm 的像元。同时 1/1.8 型的像圈是 8.86 mm 对角线镜头像圈不够会有暗角。解决以手册的 2.0 μm 和 8.86 mm 对角线为准重新核对镜头的 MTF 曲线和 CRA主光线角匹配。CRA 不匹配的后果比想象中严重——边缘的相对照度掉得快还会引入色彩偏移后期校正只能补亮度补不了相位。5.3 Lane 数配少了RAW12 全像素 60 fps 出花屏现象低帧率、裁剪模式下一切正常一开全像素 60 fps RAW12 就开始花屏、丢行偶尔整帧撕裂。原因按第 3.3 节算的账RAW12 全像素 60 fps 需要约 5.97 Gbps2 Lane 均分是每 Lane 2.99 Gbps超过 D-PHY 单 Lane 的常见能力。链路已经跑在极限之外误码率上升表现出来就是花屏。解决全像素 60 fps 至少 4 Lane 起步长走线或者连接器质量一般时直接上 8 Lane。降 bit 深度也能缓解RAW10 约 4.98 Gbps但要接受动态范围损失。排查时先看误码是随机的还是集中在特定行——集中特定行往往是时序余量问题随机分布才是带宽不够。5.4 曝光按毫秒写50 Hz 光源下滚出一条条黑带现象室内日光灯下画面有横向明暗条纹缓慢滚动改成手动曝光后依然存在。原因曝光时间没对齐光源周期。50 Hz 的半周期是 10 ms曝光不是 10 ms 的整数倍时每次曝光覆盖的亮暗相位不同条纹就出现了。用毫秒写曝光再换算成行数四舍五入的截断让实际曝光偏离目标值条纹滚得更没规律。解决把曝光配置改成按行数写直接取 10 ms 对应的行数整数倍第 3.2 节的代码可以直接用。室外或者直流供电场景不需要这一步但产品要覆盖室内场景就得默认打开抗闪。5.5 假设四边都有光学黑区黑电平校正算法跑偏现象黑电平校正后画面整体偏亮或偏色暗部噪点分布不均匀换个批次更明显。原因这颗器件的光学黑区OB布局是不对称的——垂直方向前 20 行有 OB后 0 行水平方向前后都是 0 像素。也就是说四边只有上边一条能用来估黑电平。很多黑电平校正算法默认四边都有 OB 行、取平均拿到这份布局直接失效或者把有效像素当 OB 算进去。解决按实际布局改算法只用垂直前 20 行做黑电平估计并且要注意这 20 行在不同增益下的响应——高增益时 OB 行本身的噪声也会被放大单帧估计不够得做时域滤波。DPC坏点校正的阈值也要按这个布局重新标定别把 OB 行的正常噪声当成坏点。6. 2.0 μm 这条路的天花板拿到手册先验算哪三个数光学格式锁死在 1/1.8 型、分辨率锁死在 3840×2160像素间距就被算成 2.0 μm没有第二种选择。这是硬约束8.86 mm 对角线除以约 3900 个像素宽答案只能是 2.0 μm 上下。想加大像素提升满阱就得牺牲分辨率想提分辨率就得缩小像素。厂商的选择是不动像素尺寸改像素内部的电荷收集效率和读出链路的噪声底再用 HDR 多曝光去补动态范围——这条路线的天花板很清楚满阱容量受像素体积物理限制动态范围只能靠时间维度的多曝光去换。拿到一份 datasheet我通常先算三个数再谈方案。第一是等效满阱用饱和码值 3895 反推电子数需要知道转换增益但至少能算出“码值/照度/秒”的绝对量级判断这颗器件在你的照度预算里够不够。第二是输入参考噪声用暗光下的码值波动反推决定了你的最低可用照度。第三是动态范围用饱和码值除以噪声底12 bit 下理论上限约 72 dB实际会被噪声吃掉一截这个差额就是你要靠 HDR 补的部分。验算项需要的数据用途等效满阱饱和码值、转换增益判断高光余量、ND 滤镜选型输入参考噪声暗场码值标准差推算最低可用照度、增益上限单帧动态范围饱和码值 / 噪声底决定要不要开 HDR、开哪一档链路余量帧率 × 像素 × bit 深 / Lane 数决定 Lane 配置和走线要求有一件事我吃过亏早期拿到新 sensor 的手册习惯性先看分辨率和帧率把噪声和时序放到最后。结果板子打回来才发现上电顺序写反了返工重画电源树。从那以后我每次拿到一份新的 sensor datasheet第一遍不看出图能力先把电源时序、OB 布局、Lane 带宽这三个数抄到设计检查表上强制走一遍验算再动手。希望帮到你。本文还有配套的精品资源点击获取