瑞芯微Camera调试避坑指南:从Sensor到MIPI的常见问题全解析

电子说

1.4w人已加入

描述

在智能硬件领域,Camera 模块是安防监控、车载影像、消费电子的核心组件 —— 但调试过程中,“I2C 不通”“画面偏绿”“MIPI 数据采不到” 等问题往往让工程师头大。

 

今天这篇文章,基于瑞芯微(Rockchip)官方 Camera External FAQV2.1,梳理从 Sensor 初始化到 MIPI 传输、ISP 处理的全链路常见问题,附带现象分析与分平台解决方案,帮你少走弯路,快速定位问题!

 

 

一、Sensor 调试:先解决 源头” 问题

 

Camera 的核心是 Sensor,若 Sensor 初始化或输出异常,后续链路再完美也无用。以下是 类高频 Sensor 问题的速解方案(适配瑞芯微 RV1108/RV1126/RK356X 等平台)。

 

 

1. 最基础:Sensor I2C 不通,提示 “NO ACK”

 

问题现象:软件日志报“I2C NO ACK”Sensor 无法被识别。

 

 

关键原因:硬件供电 / 时序异常,或软件配置不匹配。

 

 

排查步骤(按优先级)

 

 

1. Sensor 硬件输入:确认 AVDD/DVDD/DOVDD 电源是否符合规格,复位脚 待机脚电平是否正确;

 

 

2. I2C 硬件:上拉电平是否与 DOVDD 匹配(避免 3.3V 上拉接 1.8V DOVDD),MCLK 时钟频率 幅度是否正常;

 

 

3.查主控配置:确认 I2C 通道是否正确,设备地址是否匹配,尝试降低 SCL 频率(过高会导致信号质量差);

 

 

4.特殊情况:部分 Sensor 不支持 “I2C Repeat start”,需在驱动中关闭该功能。

 

 

2. 最影响体验:曝光调整时画面闪烁(以 OV2710 为例)

 

问题现象:环境亮度骤变时,画面低概率闪烁,但最终曝光能收敛(亮度和速度正常)。

 

 

关键原因:曝光时间与增益的生效帧不同步”——OV2710 的曝光时间在 帧设置、N+2 帧生效,而增益在 帧设置、N+1 帧生效,两者变化趋势相反时就会闪。

 

 

分平台解决方案

 

 

RV1108Linux SDK:在 Sensor 驱动中通过exposure_valid_frame定义生效帧数,参考《CIF_ISP11_Driver_User_Manual》,SDK 已优化间隔设置;

 

 

其他平台(Android 9.0/Linux:升级camera_engine_rkisp v2.0.0+,按手册配置生效时序;

 

 

旧系统(Android 8.1 及以前):在IsiExposureControlIss函数中,给曝光时间与增益的设置加帧率对应的延时

 

 

3. 最直观:预览画面偏色(偏红 偏绿)

 

情况 1:整体均匀偏红

 

问题现象:画面蒙一层淡红,色卡色调正常,遮黑后 Raw 图黑电平异常。

 

 

原因Sensor 输出黑电平与 ISP 校正值不匹配,或数据位宽压缩(如 A-Law 算法)导致线性失真。

 

 

解决

 

 

 Raw 图黑电平:ON2 Sensor8bit=1010bit=42)、OV Sensor8bit=[3,4])、IMX32710bit=6012bit=240),按规格配置寄存器;

 

 

关闭压缩功能:如 AR0144 需将R0x31D0设为 0,禁用 A-law 压缩,确保数据线性化。

 

 

情况 2:镜像 翻转后偏色(以 GC2375 为例)

 

问题现象:配置mirror/flip后偏色,Raw 图 Bayer 顺序异常。

 

 

原因:镜像后 Sensor 输出 Bayer 顺序变化(如 BGGR→GBRG),但 ISP 未同步更新。

 

 

解决

 

 

用宏定义配置镜像:避免直接改寄存器,如#define GC2375_MIRROR_NORMAL

 

 

更新驱动 Bayer 顺序:RV1108 struct ov_camera_module_config.frm_fmt.code,其他平台改IsiSensorCaps_t.BayerPatttern

 

 

4. 最隐蔽:MCLK 时钟幅度异常(仅 200mV 或无输出)

 

问题现象:示波器测 MCLK 幅度不足(正常需符合 Sensor Spec),或无时钟信号。

 

 

原因:主控 IO 复用配置错、电源域未供电,或软件与硬件电源域不匹配。

 

 

解决

 

 

1. IO 复用:按平台手册确认CIF_CLKOUT引脚配置(如 RK3326 CIF_CLKO_MO对应 GPIO2_B3_d);

 

 

2.查电源域:RK3326 CIF_CLKO_MO依赖VCCIO3,若硬件接 1.8V 则在 DTS 中配置vccio3-supply = <&vcc1v8_dvp>RK3399 APIO2_VDD 3.0V 则设bt656-supply = <&vcc_3v0>

 

 

二、MIPI 接口:数据传输的 命脉” 调试

 

MIPI 是 Sensor 与主控之间的核心链路,一旦出错会导致 花屏”“采不到数据”“FIFO 溢出。先明确 MIPI 错误分类,再按优先级排查!

 

 

1. 先搞懂:MIPI 错误分 级,排查有顺序

 

瑞芯微将 MIPI 错误按 链路层级” 分类,必须先解决底层错误,再处理上层

 

 

1.DPHY Level:物理层错误(如 SOT 错误、False Control Error);

 

 

2.CSI-2 Controller Level:控制器错误(如 CsiFifoOverflow);

 

 

3.CSI-2 Packet/Protocol Level:数据包 / 协议错误(如 CRC/ECC 错误、ErrFrameSync)。

 

 

若日志无明确错误,但采不到数据,先查DPHY 状态寄存器(如 RV1126 0xffb51c14),重点看:

 

 

RxClkActiveHS1=CLK Lane 有有效高速时钟;

 

 

StopstateData0/1 交替 = Data Lane 正常传输(高速与停止状态切换);

 

 

RxUlpsExc0=Data Lane 未进入超低功耗(高速传输时需为 0)。

 

 

2. 高频场景:MIPI 采不到数据,且无报错

 

问题现象I2C 通讯正常,Sensor 已输出数据,但主控端无 MIPI 错误提示,VICAP/ISP 报 未采集到数据

 

 

排查步骤

 

 

1.先查RxClkActiveHS

 

 

若为 0:用示波器测 CLK Lane 是否有高速时钟,检查 Sensor 是否Stream on,硬件连接是否断连;

 

 

若为 1:查StopstateData,若某 Lane 无 0/1 变化,测该 Lane 信号幅度是否符合 DPHY Spec(如 LP 态 1.2VHS 态 200mV)。

 

 

1.特殊情况(CLK Lane Continue 模式):

 

 

UlpsActiveNotClk 0CLK Lane 进入 ULPS),需排查上电波形是否有异常的LP10→LP00(导致误触发 ULPS);

 

 

 SOT 序列(LP11→LP01→LP00→HS-0)发送早于 DPHY 初始化,需让 Sensor 在主控 DPHY 就绪后再输出 SOT

 

 

3. 易错点:D-PHY 错误(ErrSotHS/ErrSotSyncHS

 

问题现象:日志报“D-PHY Level Error: ErrsotHS/ErrSotSyncHS”,画面花屏或采不到数据。

 

 

原因SOT(传输起始)时序不符合 MIPI Spec,或Ths-settleHS 接收稳定时间)配置错误。

 

 

解决

 

 

1.满足时序要求:

 

 

Ths-settle > Ths-prepare40ns+4UI);

 

 

Ths-settle < Ths-prepare + Ths-zero145ns+10UI);

 

 

CLK Lane 需提前 8UI 输出 HS 时钟(TCLK-PRE)。

 

 

1.配置Ths-settle

 

 

DPHY-IRK3326/RV1108):按 bitrate 选寄存器,如 1.25Gbps 对应4b'1100Ths-settle=128UI

 

 

DPHY-SRK3399/RK3288):1.3-1.5Gbps 对应4b'1100Ths-settle=63×received_DDR_clock

 

 

4. 致命错:CsiFifoOverflowFIFO 溢出)

 

问题现象:日志报“CSI-2 Controller Error: CSIFIFOOVERFLOW”,数据丢失。

 

 

原因ISP 吞吐率跟不上 MIPI 传输速率,或多 Lane 数据时延不同步。

 

 

解决

 

 

1.先查 DPHY 错误:若有底层错误(如 SOT 错误),优先解决;

 

 

2.验证速率匹配:按公式计算(保守值):

 

 

ISP时钟(Hz) × 80% > (MIPI bitrate × Lane) / 12

 

 

例:ISP 时钟 500MHzMIPI 1Gbps×2Lane → 500e6×0.8=400e6(1e9×2)/12≈166e6,满足要求;

 

 

3. Lane 同步:用示波器测各 Data Lane 的 SOT 时序,时延差需≤1UI,否则调整硬件走线。

 

 

三、ISP 与数据传输:避免 最后一公里” 问题

 

Sensor 和 MIPI 正常后,ISP 处理异常会导致 丢帧”“画质差,以下是 类核心问题。

 

 

1. PIC_SIZE_ERROR:分辨率不匹配

 

问题现象:日志报“CIF_ISP_PIC_SIZE_ERROR”ISP 采集数据量与设置分辨率不符。

 

 

排查步骤

 

 

1.先查 MIPI/DPHY 错误:若有则优先解决(如数据传输不完整);

 

 

2.验证分辨率设置:确保ISP采集分辨率 ≤ Sensor输出分辨率(如 Sensor 输出 1920×1080ISP 不能设 2560×1440);

 

 

3.后级限制:若前两步正常,排查 ISP 输出链路(如 DDR 带宽不足),参考 “Data loss” 解决方案。

 

 

2. Data loss:数据丢失(最常见)

 

问题现象:日志报“CIF_ISP_DATA_LOSS”,预览闪粉屏 绿屏,或录制丢帧。

 

 

原因ISP 内部 Latency FIFO 溢出,多因 DDR 速率不足或 AXI 优先级低。

 

 

解决

 

 

1.优化 DDR:提高 DDR 频率,禁用 DDR 变频(传输中变频会导致卡顿);

 

 

2.提高 ISP 优先级:在 DTS 中设 ISP AXI Master 优先级最高(如rockchip,priority=<33>);

 

 

3.增加 Sensor H-blanking 时间:减少数据传输压力;

 

 

4.旧系统修复:Android 8.1 及以前版本,升级 kernel-3.10 驱动至 v0.0x26.0+,解决绿屏无法恢复问题。

 

 

四、调试必备:工具与参考文档

 

1.硬件工具:示波器(测 MCLKMIPI Lane 波形)、逻辑分析仪(抓 I2C 时序);

 

 

2.软件工具:查看 MIPI 错误寄存器(如 RK3399 ISP0 寄存器0xff911c0c)、DPHY 状态寄存器(参考文档附录 G);

 

 

3.官方手册

 

 

CIF_ISP11_Driver_User_Manual》(RV1108 驱动);

 

 

RKISP_Driver_User_Manual》(其他平台);

 

 

mipi_D-PHY_specification_v2.1》《mipi_CSI-2_specification_v2.0》(MIPI 标准)。

 

 

最后:调试的核心逻辑

 

Camera 问题看似杂乱,实则有章可循 ——先定位层级(Sensor→MIPI→ISP),再抓关键信号(电源、时钟、数据)

 

 

Sensor 层:先确保供电、I2CMCLK 正常;

 

 

MIPI 层:先查 DPHY 状态,再按错误级别排查;

 

 

ISP 层:先解决前级数据传输问题,再优化速率与优先级。

 

 

你在 Camera 调试中遇到过哪些 奇葩” 问题?比如 正对太阳出现纵向黑条SC410AI)、“HDR 低光下带状条纹IMX415)?欢迎在评论区分享,一起避坑!


 


打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分