
简介面向摄像头模组、嵌入式视觉与安全监控方案开发者这份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、recommendeddatasheet 把像素数拆成四个层级每一层都是一次减法。把它们并排列出来减法关系就一目了然了。层级水平垂直像素数减掉了什么Total385622008.48 M全部物理像素含光学黑区与 dummyEffective385621808.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 Gbps12 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 dB30.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 laneRAW10/RAW12 输出输入频率那八档。这些是可以做到的清单但每一项都需要你正确配置才成立。手册写支持 8 lane不代表你随手配就跑到 8 lane 满速。最软的是特性表里的典型值灵敏度 15886 Digit/lx/s、饱和信号最小 3895 Digit12 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 手册都强制先把有效像素、对角线、行时间这三个数反推一遍对不上就停下来重新读——因为对不上的地方往往就是后面要翻车的地方。希望帮到你。本文还有配套的精品资源点击获取