保姆级教程:在Rockchip RK3288上配置OV13850 Sensor、MIPI与ISP驱动的完整流程(附DTS详解)

张开发
2026/6/3 23:57:55 15 分钟阅读
保姆级教程:在Rockchip RK3288上配置OV13850 Sensor、MIPI与ISP驱动的完整流程(附DTS详解)
保姆级教程Rockchip RK3288平台OV13850摄像头驱动全流程配置指南在嵌入式Linux开发中摄像头驱动的配置往往是项目推进的关键环节。Rockchip RK3288作为一款广泛应用于智能硬件的中高端处理器其图像处理能力备受开发者青睐。本文将手把手带你完成OV13850 Sensor从硬件连接到软件驱动的完整配置过程特别针对MIPI接口与RKISP1图像处理单元的DTS配置进行深度解析。1. 开发环境准备与硬件连接在开始驱动配置前确保你的开发环境已经就绪。RK3288开发板需要运行Linux 4.4或更高版本内核建议使用官方推荐的Ubuntu 18.04作为开发主机系统。硬件连接检查清单OV13850模组的MIPI接口正确连接到RK3288的MIPI CSI接口确认电源供应满足以下要求AVDD (模拟电压)2.8V ±5%DVDD (数字电压)1.2V ±5%DOVDD (I/O电压)1.8V ±5%I2C控制线已正确连接通常使用I2C1或I2C2复位(RST)和电源使能(PWDN)GPIO已正确配置提示使用万用表测量各电源引脚电压确保在允许范围内。电压不稳是导致图像异常的最常见原因之一。2. OV13850 Sensor驱动配置详解OV13850的驱动配置主要通过设备树(DTS)完成。以下是完整的节点配置示例及关键参数说明ov13850: ov1385010 { status okay; compatible ovti,ov13850; reg 0x10; // I2C设备地址 clocks cru SCLK_VIP_OUT; clock-names xvclk; pinctrl-names rockchip,camera_default, rockchip,camera_sleep; pinctrl-0 cam0_default_pins; pinctrl-1 cam0_sleep_pins; reset-gpios gpio2 15 GPIO_ACTIVE_HIGH; pwdn-gpios gpio2 14 GPIO_ACTIVE_HIGH; avdd-supply vcc28_dvp; // 2.8V模拟供电 dovdd-supply vcc18_dvp; // 1.8V I/O供电 dvdd-supply dvdd_1v2; // 1.2V数字供电 rockchip,camera-module-index 0; rockchip,camera-module-facing back; rockchip,camera-module-name CMK-CT0116; rockchip,camera-module-lens-name Largan-50013A1; port { ucam_out0: endpoint { remote-endpoint mipi_in_ucam0; >mipi_phy_tx1rx1 { status okay; compatible rockchip,rk3288-mipi-dphy; reg 0x0 0xff968000 0x0 0x4000; rockchip,grf grf; clocks cru SCLK_MIPIDSI_24M, cru PCLK_MIPI_CSI; clock-names dphy-ref, pclk; ports { #address-cells 1; #size-cells 0; port0 { reg 0; mipi_in_ucam0: endpoint { remote-endpoint ucam_out0; >rkisp1 { status okay; compatible rockchip,rk3288-rkisp1; reg 0x0 0xff910000 0x0 0x4000; interrupts GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH; interrupt-names isp_irq; clocks cru SCLK_ISP, cru ACLK_ISP, cru HCLK_ISP, cru PCLK_ISP_IN, cru SCLK_ISP_JPE; clock-names clk_isp, aclk_isp, hclk_isp, pclk_isp_in, sclk_isp_jpe; assigned-clocks cru SCLK_ISP, cru SCLK_ISP_JPE; assigned-clock-rates 400000000, 400000000; power-domains power RK3288_PD_VIO; port { #address-cells 1; #size-cells 0; isp0_mipi_in: endpoint0 { reg 0; remote-endpoint dphy_rx0_out; }; }; };ISP时钟配置要点主时钟(SCLK_ISP)建议设置为400MHz过高会导致系统不稳定过低影响处理性能ACLK_ISPAXI总线时钟影响内存访问效率应与系统总线时钟协调电源域(RK3288_PD_VIO)确保VIO电源域已使能错误的电源域配置会导致ISP无法工作5. V4L2框架与Media Controller调试RK3288的摄像头驱动基于Linux V4L2框架和Media Controller子系统。了解这些框架对调试至关重要。关键调试命令# 查看已注册的media设备 media-ctl -p -d /dev/media0 # 查看视频设备节点 v4l2-ctl --list-devices # 获取摄像头能力信息 v4l2-ctl -d /dev/video0 --all # 设置采集格式 v4l2-ctl -d /dev/video0 --set-fmt-videowidth1920,height1080,pixelformatNV12 # 开始采集 v4l2-ctl -d /dev/video0 --stream-mmap3 --stream-totest.raw --stream-count10Media Controller拓扑分析Media controller API version 4.9.148 Media device information ------------------------ driver rkisp1 model rkisp1 serial bus info hw revision 0x0 driver version 4.9.148 Device topology - entity 1: rkisp1-isp-subdev (4 pads, 5 links) type V4L2 subdev subtype Unknown flags 0 device node name /dev/v4l-subdev0 pad0: Sink [fmt:SBGGR10_1X10/1920x1080 field:none crop.bounds:(0,0)/1920x1080 crop:(0,0)/1920x1080] - rockchip-mipi-dphy-rx:1 [ENABLED] pad1: Source [fmt:YUYV8_2X8/1920x1080 field:none] - rkisp1_mainpath:0 [ENABLED] pad2: Source [fmt:YUYV8_2X8/1920x1080 field:none] - rkisp1_selfpath:0 [ENABLED] pad3: Source [fmt:SBGGR10_1X10/1920x1080 field:none] - rkisp1_stats:0 [ENABLED]在实际项目中最常见的图像异常问题往往源于DTS配置错误。通过对比上述完整配置和你的实际配置结合系统日志(dmesg)和media-ctl工具输出可以快速定位问题根源。

更多文章