news 2026/10/6 1:27:39

联咏NT98566+IMX335硬件开发复盘:从电源设计到MIPI调试

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
联咏NT98566+IMX335硬件开发复盘:从电源设计到MIPI调试

做摄像头硬件好几年,这两年最明显的感受就是SoC选型越来越像“开盲盒”。尤其是IPC方案上,供应和性价比的一进一出,逼着不少工程师开始尝试联咏平台。我手上的运动相机和入门级IPC项目,目前长期用的就是联咏NT98566配索尼IMX335,从原理图、PCB打样到SDK适配、图像出图,整套流程基本都跑顺了。这篇文章是整个开发过程的复盘,重点放在硬件配置和接口调试上,包括电源、MIPI、I2C这些关键链路怎么设计才稳,SDK里Sensor驱动怎么配,以及出问题之后怎么一步步用日志和工具把故障锁死。适合正在做IPC、运动相机、边缘视觉模组的硬件或嵌入式工程师,也适合刚转联咏平台想少走弯路的朋友。

1. 为什么选NT98566+IMX335,我先算了一笔账

1.1 这颗SoC在IPC和运动相机里的真实定位

联咏的NT98566是一颗面向安防监控、运动相机、智能门铃这类单路视频产品的SoC,集成了ARM Cortex-A9双核处理器,主频能跑到1GHz左右,内置了ISP、H.264/H.265编码器,以及足够用的智能加速单元。它的定位非常明确:主打单路4K或者双路1080P的实时编码,而不是去拼多路NVR那种高密度接入场景。

选它之前我也对比过瑞芯微RV1126、君正T41,甚至海思的一些老方案。RV1126的AI算力确实强,但代价是外围设计复杂、DDR颗粒要求高,做小批量运动相机成本压不下来;君正T41的功耗和成本很友好,但在4K编码和ISP调试生态上,成熟度跟联咏还是差一截。NT98566最打动我的是两点:一是SDK里已经带了一套相对完整的Sensor适配框架,Sony的IMX335驱动基本是现成的;二是联咏这颗料在缺芯那段时间供应还相对稳定,开发套件和参考设计也好拿。

从性能数字看,NT98566跑IMX335的4K30编码问题不大,H.265编码下码率控制做得比较稳,整板功耗含DDR和Sensor我实测能做到3W以内。这个功耗水平对运动相机这种电池供电设备非常关键,直接决定了续航和散热结构的设计难度。如果你的产品是电池供电又要求4K,NT98566这条线值得重点关注。

1.2 IMX335为什么是这套方案的“黄金搭档”

索尼IMX335是一颗1/2.8英寸、约500万像素的CMOS图像传感器,最高支持2592x1944(5MP)全分辨率输出,也能出4K 16:9的画面,实际常用模式是2688x1520@30fps这种4K裁切输出。它采用背照式结构,暗光表现比同年代的堆栈式稍弱,但胜在成熟、便宜、货量大,现在市面上大量IPC和运动相机都在用。

IMX335输出RAW10格式,通过MIPI CSI-2接口传输,MIPI通道数支持2-lane或4-lane。我实际项目里固定用4-lane,因为4K30下2-lane的速率太紧,布线稍差就容易出花屏。它支持PDAF相位对焦,不过IPC和运动相机基本都用定焦镜头,这个功能基本闲置。

为什么说它是NT98566的黄金搭档?因为联咏BSP里对Sony Sensor的适配框架本来就是重头戏,IMX335这种量大管饱的型号,寄存器配置、AE/AWB算法参数都是经过市场验证的,你拿过来跑通的时间远小于调试一颗冷门Sensor。开发最怕的不是难,而是未知的坑太多,IMX335正好是那个“已知的坑很少”的成熟选项。

1.3 和NT98533等兄弟型号怎么取舍

联咏近两年在NT98533、NT98566这条产品线上的迭代很频繁,大家搜相关方案时也经常看到“Novatek NT98533”这类词。NT98533和NT98566的关系通俗点说就是同门师兄弟:前者偏向更高路数、更强外设扩展的场景,比如双摄或者带屏显的复杂产品;后者更聚焦单路视频流,把成本和外围体积压得更低。

我自己的划分标准很简单:如果产品只需要一路4K、不需要双Sensor、不需要复杂显示,NT98566就够了;如果要做双目深度相机、电子稳像配合陀螺仪、或者需要更充裕的外设资源,我会上NT98533。两者SDK风格高度统一,很多应用层代码可以直接平移,所以从NT98566起步再做NT98533,迁移成本并不会太高。如果你只是做单目IPC,上来直接啃NT98533反而有点浪费。

2. 硬件配置全拆解:电源、时钟、复位、MIPI一个不能少

2.1 电源树和上电时序,别让Sensor先偷跑

IMX335的供电其实很简单,核心就三路:AVDD模拟电源2.8V、DOVDD数字IO电源1.8V(也可以按手册用2.8V)、DVDD数字核心电源1.2V。三路电源都需要低纹波,尤其是AVDD,直接决定图像的噪点和横纹水平,我实际要求纹波控制在30mV以内。电源芯片我用过RT6150B这类升降压,也用过SY8088这种纯Buck,关键是PCB上电容的摆放位置,比电源芯片型号本身还重要。

上电时序是很多第一次接Sensor的人翻车的地方。IMX335手册要求的推荐顺序是:先DOVDD,再AVDD,再DVDD,最后拉高RESET并解除XCLK。如果你用同一颗LDO同时拉三路电源,上电时序天然没法满足,虽然偶尔也能出图,但长时间工作可能出现图像偶发抽风。我的做法是用电源管理芯片的独立通道,分别延迟5ms、10ms、15ms输出,再用一个RC延时控制RESET释放时间,保底让DVDD稳定后再释放Sensor。

NT98566这边同样要注意AVDD、VDDCORE、DDR电源的时序。联咏参考设计里一般会有POC(Power over Coax)或普通IPC供电的方案,从12V转过来后在每个DC-DC的反馈脚加一点软启动电容,让各路电压依次建立,这样可以避免上电瞬间的大电流冲击把Sensor的I2C地址锁错。这里面有个细节:有些Sensor的I2C地址是靠一个引脚的上下拉电平决定的,如果这个脚供电没起来,Sensor可能把地址跳到另一个值,导致驱动一直枚举不到,这类问题排查起来相当隐蔽。

2.2 MIPI CSI-2布线,这几个点最容易翻车

MIPI信号是高速差分串行链路,IMX335在4K30 RAW10下的数据率并不低,我算过一笔账:按一帧实际有效像素2688x1520,加上blanking后的总像素约2764x1540,帧率30,位深10bit,4条lane平均每条lane的速率大约在320Mbps左右。听起来不高,但这个频率下布线不规范一样会出问题。

布线时我一般抓三个点:差分阻抗控制到100欧姆左右、等长控制到正负5mil以内、所有MIPI走线尽量走内层且避开时钟源和DDR区域。很多打样的板子MIPI线走得过长,又没有做地孔包裹,结果4K30下偶尔出花屏,降帧率又正常,最后查了半天是MIPI信号质量不行。另外一个容易被忽略的地方是MIPI的lane映射,IMX335的D0-D3跟SoC的MIPI RX lane顺序如果接反,图像会出现典型的左右分屏或上下半屏异常,但又不会完全无图,这类问题软件配置再怎么调也修不好。

MIPI通道还有一个PHY供电问题。NT98566的MIPI RX需要一路独立的模拟电源,如果这路电源和Sensor的AVDD共用一颗LDO,高负载下互耦会把图像搞出干扰条纹。我后期设计的版本都单独用一颗低噪声LDO给MIPI PHY供电,效果立竿见影。

2.3 I2C控制通道与摄像头ID电阻

IMX335的控制通道是标准I2C,速率一般用100K或者400K。联咏平台默认的I2C总线驱动对400K支持不错,但我在调试初期一直用100K,减少干扰对识别的影响。Sensor的I2C地址通常由引脚的上下拉状态决定,IMX335常见的7-bit地址是0x1A,换算成8位写地址就是0x34。如果你的设计里把地址甄别脚接对了,驱动里就不用改,如果接反了,就要把驱动里的slave地址改成对应的值。

I2C上拉电阻的取值也要注意。我之前有块板子I2C上拉用了4.7K,结果线长了以后波形沿变缓,导致偶尔识别不到Sensor。后来改成2.2K,再把上拉电阻接到DOVDD,问题就消失了。I2C总线上的对地电容也不能太大,长走线加TVS管的结电容一旦叠加起来,100K都会波形畸变。所以做模组时,I2C两根线尽量短、尽量靠近,中间不要串任何滤波器件,除非你有充分的EMC理由。

时钟部分,IMX335的MCLK一般是27MHz,由SoC的Sensor时钟引脚提供,NT98566的对应Pin可以直接配置输出27MHz。这里要注意MCLK的幅度和占空比,我实测占空比偏离5%以内问题不大,但如果MCLK走线太长、负载电容太大,Sensor内部PLL会抖,导致输出帧频不稳。调试时用示波器看MCLK波形,峰峰值如果低于1.5V,就得考虑缩短走线或者加驱动。

3. SDK环境与IMX335驱动移植实操

3.1 从拿到SDK到第一版固件

联咏的SDK结构跟常见IPC方案很相似,主要分Bootloader、Kernel、Application、Driver几个大块。拿到SDK后第一件事不是急着改代码,而是先把编译工具链和基础镜像跑通。我一般会在干净的Ubuntu 18.04/20.04环境里,按官方文档配好交叉编译工具链,然后直接用默认配置编译一版release镜像,先烧录到开发板上确认串口能起来、网口能ping通,再做后续改动。

编译命令上,联咏的Makefile封装比较友好,一般在SDK根目录执行特定目标即可生成镜像。第一次编译可能需要十几分钟,如果能顺利生成boot和kernel镜像,说明环境没问题。烧录方式我常用串口烧录,因为前期调试板上网口驱动可能还没跑起来。串口烧录工具会把boot、kernel、rootfs按分区地址写入,注意不同DDR容量的板子,分区表地址可能不一样,一定要用对应的配置。

我第一次烧完板子,串口只打印了一个Logo就停住,排查下来是Uboot的环境变量里DDR参数跟实际颗粒不匹配。这种问题在参考设计上基本不会有,一旦你自己改了DDR容量或型号,就要同步改DDR初始化参数。联咏SDK里对常见DDR颗粒都有配置模板,照着自己板子用的型号去查表替换就行。

3.2 Sensor驱动文件到底改了些什么

IMX335驱动在SDK里一般放在Sensor驱动目录下,文件名通常是imx335.c之类的。第一遍看这个文件,我建议重点先看三个结构体:一个是Sensor的基本信息结构,里面定义了Sensor名称、I2C地址、分辨率、帧率这些;第二个是模式结构体,会列出所有支持的分辨率和时序参数;第三个是寄存器初始化序列,这是最关键的部分。

寄存器初始化序列本质上就是一堆“寄存器地址-值”的数组,驱动初始化时一次性写给Sensor。IMX335的寄存器地址是16位的,比如关闭输出用0x0100,软复位用0x0103,具体取值要以Sony官方Datasheet和推荐配置为准。SDK里自带的驱动通常是联咏调试过的能直接出图的一版,如果你的板子MIPI线序、晶振频率有差异,就要在这个数组里调整对应的PLL和时序寄存器。

我自己移植时习惯先保持SDK默认配置不变,直接编译烧录,确认能出图后再根据需求改分辨率、帧率和曝光参数。千万不要一上来就大改寄存器列表,否则你没法区分是驱动问题还是硬件问题。改分辨率时,要同步修改MIPI时序参数和VTS/HTS寄存器,这两个寄存器控制帧长度和行长度,直接影响帧率。IMX335的输出时钟是由MCLK和内部PLL决定的,只要PLL配置对了,MIPI速率会自动跟着变。

3.3 ISP/MIPI参数联调:把图像从黑白变彩色

Sensor驱动跑通、能输出RAW数据后,图像大概率是灰蒙蒙或者偏色的,因为ISP还没做正确的白平衡和颜色校正。联咏的ISP调校工具可以在PC上实时调曝光、增益、Gamma、降噪等参数,然后导出配置头文件给SDK。这个流程对IPC产品来说几乎必须做,因为Sony Sensor的RAW输出本身不讨喜,需要ISP做大量处理。

MIPI参数联调里有个核心点叫MIPI时钟和HS战斗时间的匹配。如果MIPI初始化时的时钟频率跟Sensor实际输出频率对不上,图像会花屏或者闪烁。联咏SDK里通常有一个MIPI配置工具,输入Sensor输出模式、位深、lane数,它会自动计算推荐的MIPI时钟值。我第一次调试时图省事直接用了SDK默认的2Mega参数跑4K Sensor,结果图像撕裂严重,后来用工具算了一版就正常了。

ISP联调还要注意AE(自动曝光)和AWB(自动白平衡)的收敛速度。IMX335在室内荧光灯下的频闪问题很常见,需要在AE模块里设置防频闪频率,国内用50Hz,部分地区用60Hz。如果你发现画面亮度忽明忽暗,多半是防频闪没配对,对应的曝光行数限制没有设置正确。

4. 接口调试全过程:I2C、串口、图像异常一个都不放过

4.1 第一步永远是读Sensor ID

不管硬件设计多自信,新板子贴片回来后第一件事永远是确认I2C通不通、Sensor ID能不能读上来。IMX335的芯片ID寄存器通常是地址0x0000和0x0001,读出来应该是个固定的型号编码,不同批次基本不变。在联咏平台下,我习惯在系统起来后用调试工具直接执行I2C读命令,或者在驱动加载的日志里看初始化返回值。

如果ID读不到,先别怀疑Sensor芯片坏了,按照“供电-时钟-复位-I2C”四个方向去查。用示波器量AVDD、DOVDD、DVDD是否在规定范围,再量MCLK有没有27MHz波形,再看RESET引脚拉高的时机对不对,最后用示波器抓I2C的SDA和SCL,看波形上是否有应答位。我遇到过最奇葩的一次是ID偶尔能读偶尔读不到,最后查出是Sensor的复位脚电容太大,导致复位释放时间超过了I2C枚举的时间窗口。

I2C时序还有一个验收标准:SDA和SCL的上升沿、下降沿不能太缓。用示波器看,如果上升沿超过几百纳秒,就要怀疑上拉电阻阻值过大或者总线电容过高。正常100K速率下,边沿时间应当远小于一位的宽度。这个点看起来基础,实际排障时能卡住大半天。

4.2 日志工具与调试命令

联咏平台的调试日志,大体上可以从串口、内核日志、以及业务应用日志三个层面看。串口默认一般映射到调试串口,打印开机阶段bootloader和kernel的启动信息,这个阶段能看出DDR初始化、文件系统挂载、Sensor探测是否成功。重点关注有没有“sensor init failed”、“I2C error”这类关键字。

系统起来后,联咏通常会提供一套硬件调试工具和系统信息节点,用来查看内存、编码器状态、sensor状态。比如执行类似cat某个proc节点信息,可以看到Sensor当前的分辨率、帧率、曝光值、增益值,甚至能实时看到AE和AWB的状态值。调试图像问题特别依赖这类信息,因为黑屏、花屏、暗光偏色这些现象背后对应的是完全不同的模块。

我调图像问题时的习惯是一层层剥:先在应用层看sensor图像是否输出正常,再往下看ISP算法参数是否收敛,再查编码器是否有丢帧。如果sensor输出正常而编码后的码流有问题,问题大概率在编码器配置或DDR带宽,而不是Sensor本身。利用好日志的时间戳,很多偶发问题其实在日志里能发现线索。

4.3 图像异常速查表与我的排障顺序

调试过程中积累了不少图像异常现象和处理方向,我整理成一张表放在下面,新项目遇到问题时可以照着排查,能省很多重复试错的时间。

现象常见原因优先排查方向
全黑无图Sensor供电/复位异常、MCLK缺失先量电源和时钟,再确认I2C能否读ID
全白或过曝曝光配置不对、AE未收敛查看当前AE的曝光和增益值
图像偏色严重AWB未收敛、色彩矩阵没有加载确认色温条件,检查ISP的AWB统计
画面有横条纹电源纹波大、MIPI信号质量差示波器看AVDD纹波,查MIPI差分对
屏幕上半或下半异常MIPI lane映射错误核对D0-D3与SoC接收端的连接对应关系
轻微的周期性闪烁防频闪设置与实际光源频率不匹配把AE里Band改为50Hz或60Hz测试
画面卡顿、丢帧DDR带宽不足、编码器配置过高降码率或分辨率,查看编码丢帧计数
图像右侧撕裂MIPI时钟设置偏快/偏慢用联咏工具重新计算MIPI时钟

我自己的排障顺序是:先确认输入侧,也就是Sensor到SoC这段,能读ID、MIPI有信号、图像能出;再处理输出侧,包括ISP效果和编码码流;最后才去调应用层的交互逻辑。很多工程师一上来就怀疑编码器或软件,结果查了很久发现是MIPI时钟配置错了,顺序错了非常浪费时间。

最后再分享一个小技巧:调试阶段建议把IMX335的帧率先降到15fps来调,因为低帧率下MIPI速率压力小,很多信号完整性问题会被掩盖,先把流程跑通,再逐步拉高帧率去暴露和解决高速信号问题。我在运动相机项目里就是靠着这套顺序,把MIPI布线缺陷、电源干扰、ISP参数这些坑挨个趟平,最终稳定出了4K30的高画质图像。联咏平台的整体上手难度并不算高,只要你把电源、时钟、复位、I2C、MIPI这几条主干捋清楚,剩下的事基本就是时间问题。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/6 1:27:34

运放当比较器用?三种经典电路设计与避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/6 1:27:26

硬盘盒桥接芯片怎么选:ASM235CM/ASM1352R/ASM1153E对比

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/6 1:27:12

RF-ADC前端为何必须配DSA?过压保护与动态增益协同机制解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/6 1:27:00

分立元件搭MOS放大电路:从选型到调试的完整指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/6 1:26:21

无人机巡检销钉故障检测:小目标、数据与深度学习部署实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/6 1:26:05

伺服系统刚性惯量调节实战:三环控制与参数优化指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华