瑞芯微Camera调试避坑指南:从Sensor到MIPI的常见问题全解析 电子说
今天这篇文章,基于瑞芯微(Rockchip)官方 Camera External FAQ(V2.1),梳理从 Sensor 初始化到 MIPI 传输、ISP 处理的全链路常见问题,附带现象分析与分平台解决方案,帮你少走弯路,快速定位问题!
Camera 的核心是 Sensor,若 Sensor 初始化或输出异常,后续链路再完美也无用。以下是 4 类高频 Sensor 问题的速解方案(适配瑞芯微 RV1108/RV1126/RK356X 等平台)。
问题现象:软件日志报“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”,需在驱动中关闭该功能。
问题现象:环境亮度骤变时,画面低概率闪烁,但最终曝光能收敛(亮度和速度正常)。
关键原因:曝光时间与增益的“生效帧不同步”——OV2710 的曝光时间在 N 帧设置、N+2 帧生效,而增益在 N 帧设置、N+1 帧生效,两者变化趋势相反时就会闪。
分平台解决方案:
•RV1108(Linux 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函数中,给曝光时间与增益的设置加“帧率对应的延时”。
问题现象:画面蒙一层淡红,色卡色调正常,遮黑后 Raw 图黑电平异常。
原因:Sensor 输出黑电平与 ISP 校正值不匹配,或数据位宽压缩(如 A-Law 算法)导致线性失真。
解决:
•测 Raw 图黑电平:ON2 Sensor(8bit=10,10bit=42)、OV Sensor(8bit=[3,4])、IMX327(10bit=60,12bit=240),按规格配置寄存器;
•关闭压缩功能:如 AR0144 需将R0x31D0设为 0,禁用 A-law 压缩,确保数据线性化。
问题现象:配置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。
问题现象:示波器测 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 是 Sensor 与主控之间的核心链路,一旦出错会导致 “花屏”“采不到数据”“FIFO 溢出”。先明确 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),重点看:
•RxClkActiveHS:1=CLK Lane 有有效高速时钟;
•StopstateData:0/1 交替 = Data Lane 正常传输(高速与停止状态切换);
•RxUlpsExc:0=Data Lane 未进入超低功耗(高速传输时需为 0)。
问题现象:I2C 通讯正常,Sensor 已输出数据,但主控端无 MIPI 错误提示,VICAP/ISP 报 “未采集到数据”。
排查步骤:
1.先查RxClkActiveHS:
◦若为 0:用示波器测 CLK Lane 是否有高速时钟,检查 Sensor 是否Stream on,硬件连接是否断连;
◦若为 1:查StopstateData,若某 Lane 无 0/1 变化,测该 Lane 信号幅度是否符合 DPHY Spec(如 LP 态 1.2V,HS 态 200mV)。
1.特殊情况(CLK Lane Continue 模式):
◦若UlpsActiveNotClk为 0(CLK Lane 进入 ULPS),需排查上电波形是否有异常的LP10→LP00(导致误触发 ULPS);
◦若 SOT 序列(LP11→LP01→LP00→HS-0)发送早于 DPHY 初始化,需让 Sensor 在主控 DPHY 就绪后再输出 SOT。
问题现象:日志报“D-PHY Level Error: ErrsotHS/ErrSotSyncHS”,画面花屏或采不到数据。
原因:SOT(传输起始)时序不符合 MIPI Spec,或Ths-settle(HS 接收稳定时间)配置错误。
解决:
1.满足时序要求:
◦Ths-settle > Ths-prepare(40ns+4UI);
◦Ths-settle < Ths-prepare + Ths-zero(145ns+10UI);
◦CLK Lane 需提前 8UI 输出 HS 时钟(TCLK-PRE)。
1.配置Ths-settle:
◦DPHY-I(RK3326/RV1108):按 bitrate 选寄存器,如 1.25Gbps 对应4b'1100,Ths-settle=128UI;
◦DPHY-S(RK3399/RK3288):1.3-1.5Gbps 对应4b'1100,Ths-settle=63×received_DDR_clock。
问题现象:日志报“CSI-2 Controller Error: CSIFIFOOVERFLOW”,数据丢失。
原因:ISP 吞吐率跟不上 MIPI 传输速率,或多 Lane 数据时延不同步。
解决:
1.先查 DPHY 错误:若有底层错误(如 SOT 错误),优先解决;
2.验证速率匹配:按公式计算(保守值):
ISP时钟(Hz) × 80% > (MIPI bitrate × Lane数) / 12
例:ISP 时钟 500MHz,MIPI 1Gbps×2Lane → 500e6×0.8=400e6,(1e9×2)/12≈166e6,满足要求;
3.多 Lane 同步:用示波器测各 Data Lane 的 SOT 时序,时延差需≤1UI,否则调整硬件走线。
Sensor 和 MIPI 正常后,ISP 处理异常会导致 “丢帧”“画质差”,以下是 2 类核心问题。
问题现象:日志报“CIF_ISP_PIC_SIZE_ERROR”,ISP 采集数据量与设置分辨率不符。
排查步骤:
1.先查 MIPI/DPHY 错误:若有则优先解决(如数据传输不完整);
2.验证分辨率设置:确保ISP采集分辨率 ≤ Sensor输出分辨率(如 Sensor 输出 1920×1080,ISP 不能设 2560×1440);
3.后级限制:若前两步正常,排查 ISP 输出链路(如 DDR 带宽不足),参考 “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.硬件工具:示波器(测 MCLK、MIPI 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 层:先确保供电、I2C、MCLK 正常;
•MIPI 层:先查 DPHY 状态,再按错误级别排查;
•ISP 层:先解决前级数据传输问题,再优化速率与优先级。
你在 Camera 调试中遇到过哪些 “奇葩” 问题?比如 “正对太阳出现纵向黑条”(SC410AI)、“HDR 低光下带状条纹”(IMX415)?欢迎在评论区分享,一起避坑!
全部0条评论
快来发表一下你的评论吧 !