资讯动态

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

发布时间:2026/10/6 1:27:39 来源:尧图企业网站定制
做摄像头硬件好几年这两年最明显的感受就是SoC选型越来越像“开盲盒”。尤其是IPC方案上供应和性价比的一进一出逼着不少工程师开始尝试联咏平台。我手上的运动相机和入门级IPC项目目前长期用的就是联咏NT98566配索尼IMX335从原理图、PCB打样到SDK适配、图像出图整套流程基本都跑顺了。这篇文章是整个开发过程的复盘重点放在硬件配置和接口调试上包括电源、MIPI、I2C这些关键链路怎么设计才稳SDK里Sensor驱动怎么配以及出问题之后怎么一步步用日志和工具把故障锁死。适合正在做IPC、运动相机、边缘视觉模组的硬件或嵌入式工程师也适合刚转联咏平台想少走弯路的朋友。1. 为什么选NT98566IMX335我先算了一笔账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以内。这个功耗水平对运动相机这种电池供电设备非常关键直接决定了续航和散热结构的设计难度。如果你的产品是电池供电又要求4KNT98566这条线值得重点关注。1.2 IMX335为什么是这套方案的“黄金搭档”索尼IMX335是一颗1/2.8英寸、约500万像素的CMOS图像传感器最高支持2592x19445MP全分辨率输出也能出4K 16:9的画面实际常用模式是2688x152030fps这种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电源的时序。联咏参考设计里一般会有POCPower over Coax或普通IPC供电的方案从12V转过来后在每个DC-DC的反馈脚加一点软启动电容让各路电压依次建立这样可以避免上电瞬间的大电流冲击把Sensor的I2C地址锁错。这里面有个细节有些Sensor的I2C地址是靠一个引脚的上下拉电平决定的如果这个脚供电没起来Sensor可能把地址跳到另一个值导致驱动一直枚举不到这类问题排查起来相当隐蔽。2.2 MIPI CSI-2布线这几个点最容易翻车MIPI信号是高速差分串行链路IMX335在4K30 RAW10下的数据率并不低我算过一笔账按一帧实际有效像素2688x1520加上blanking后的总像素约2764x1540帧率30位深10bit4条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这几条主干捋清楚剩下的事基本就是时间问题。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑