news 2026/5/8 15:06:37

保姆级教程:在Firefly RK3399开发板上点亮OV13850 MIPI摄像头(Android 11)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
保姆级教程:在Firefly RK3399开发板上点亮OV13850 MIPI摄像头(Android 11)

从零实战:Firefly RK3399开发板OV13850 MIPI摄像头全流程适配指南(Android 11)

在嵌入式开发领域,摄像头模块的适配一直是硬件集成的重要环节。本文将手把手带你完成Firefly RK3399开发板与OV13850 MIPI摄像头的完整适配流程,涵盖从硬件引脚分析到Android HAL层配置的全套实战操作。无论你是刚接触Rockchip平台的开发者,还是需要快速验证摄像头功能的工程师,这份指南都能帮你避开常见陷阱,高效完成任务。

1. 硬件准备与原理图解析

1.1 硬件连接检查清单

在开始软件配置前,确保以下硬件连接正确:

  • MIPI接口:使用TX1/RX1通道(对应开发板MIPI CSI接口)
  • I2C总线:连接至I2C4(地址0x10)
  • 控制引脚
    • 复位引脚RST:GPIO2_D2
    • 电源使能PWDN:GPIO1_C7
    • 主时钟MCLK:GPIO3_B7
  • 电源供应:确认摄像头模组3.3V供电正常

提示:使用万用表测量各电源引脚电压,避免因供电不足导致初始化失败。

1.2 关键信号测量

通过示波器验证以下信号波形:

# 查看MCLK时钟信号(应显示24MHz方波) $ cat /sys/kernel/debug/clk/clk_summary | grep cif_out

2. 设备树配置深度解析

2.1 摄像头节点配置

rk3399-sapphire.dtsi中添加OV13850节点:

ov13850: ov13850@10 { compatible = "ovti,ov13850"; reg = <0x10>; clocks = <&cru SCLK_CIF_OUT>; clock-names = "xvclk"; reset-gpios = <&gpio2 RK_PD2 GPIO_ACTIVE_HIGH>; pwdn-gpios = <&gpio1 RK_PC7 GPIO_ACTIVE_HIGH>; rockchip,camera-module-index = <1>; rockchip,camera-module-facing = "front"; port { ucam_out0: endpoint { remote-endpoint = <&mipi_in_ucam0>; >&mipi_dphy_tx1rx1 { status = "okay"; ports { port@1 { dphy_tx1rx1_out: endpoint@0 { remote-endpoint = <&isp1_mipi_in>; }; }; }; };

2.3 ISP相关配置

确保ISP和V4L2子系统正常工作:

&isp1_mmu { status = "okay"; }; &rkisp1_1 { status = "okay"; port { isp1_mipi_in: endpoint@0 { remote-endpoint = <&dphy_tx1rx1_out>; }; }; };

3. 内核驱动调试技巧

3.1 关键日志过滤方法

使用dmesg观察驱动加载情况:

# 过滤摄像头相关日志 $ dmesg | grep -E "ov13850|mipi|v4l2"

预期成功日志示例:

[ 5.231445] ov13850 4-0010: Detected OV13850 sensor [ 5.236778] rkisp1: Registered sensor subdev ov13850 on i2c4

3.2 设备节点验证

检查生成的设备节点:

$ ls -l /dev/video* $ ls -l /dev/media*

正常情况应看到类似输出:

crw-rw---- 1 root video 81, 0 Jan 1 00:00 /dev/video0 crw-rw---- 1 root video 81, 1 Jan 1 00:00 /dev/video1

4. Android HAL层适配

4.1 Camera Profiles配置

修改camera3_profiles_rk3399.xml关键参数:

<Profiles cameraId="0" name="ov13850" moduleId="m01"> <sensor.orientation value="0"/> <lens.facing value="FRONT"/> <scalar.availableStreamConfigurations> <!-- 添加支持的分辨率配置 --> <item>640x480/RAW_OPAQUE</item> <item>1280x720/YUV_420_888</item> </scalar.availableStreamConfigurations> </Profiles>

4.2 权限配置

privapp-permissions-platform.xml中添加相机权限:

<privapp-permissions package="com.android.camera2"> <permission name="android.permission.SYSTEM_CAMERA"/> </privapp-permissions>

4.3 IQ文件部署

确保图像质量配置文件正确拷贝:

PRODUCT_COPY_FILES += \ $(call find-copy-subdir-files,*,$(CUR_PATH)/camera/rkisp1/,$(TARGET_COPY_OUT_VENDOR)/etc/camera/rkisp1/)

5. 功能验证与问题排查

5.1 基础功能测试

通过v4l2-utils进行快速验证:

# 查看支持格式 $ v4l2-ctl -d /dev/video0 --list-formats # 捕获测试图像 $ v4l2-ctl -d /dev/video0 --set-fmt-video=width=1280,height=720,pixelformat=NV12 \ --stream-mmap=3 --stream-to=/sdcard/test.yuv --stream-count=1

5.2 常见问题解决方案

问题现象排查步骤解决方案
无视频设备节点检查dmesg确认ISP驱动加载正常
图像倒置验证sensor.orientation修改寄存器0x3820/0x3821
画面条纹测量MIPI时钟调整dphy时序参数

5.3 高级调试技巧

使用media-ctl分析管道拓扑:

$ media-ctl -p -d /dev/media0

典型输出示例:

- entity 1: ov13850 4-0010 (1 pad, 1 link) type V4L2 subdev subtype Sensor device node name /dev/v4l-subdev0 pad0: Source [fmt:SBGGR10_1X10/2104x1560] -> "rockchip-mipi-dphy-rx":0 [ENABLED]

完成所有配置后,建议进行72小时稳定性测试,重点关注长时间运行时的图像传输稳定性。在实际项目中,我们发现适当降低MIPI时钟频率(通过修改dphy时序参数)可以有效提升高低温环境下的可靠性。

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

解密Sketch MeaXure:重构设计标注工作流的技术架构与实践指南

解密Sketch MeaXure&#xff1a;重构设计标注工作流的技术架构与实践指南 【免费下载链接】sketch-meaxure 项目地址: https://gitcode.com/gh_mirrors/sk/sketch-meaxure 设计交付的最后一公里&#xff1a;当效率成为瓶颈 在现代数字产品开发流程中&#xff0c;设计标…

作者头像 李华
网站建设 2026/5/8 15:01:47

2026届学术党必备的五大降重复率助手推荐

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 在内容创作进程里&#xff0c;若想切实降低AIGC比例&#xff0c;就得从源头着手优化&#x…

作者头像 李华
网站建设 2026/5/8 15:01:32

在ubuntu系统中用nodejs调用taotoken实现多模型对话应用

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 在 Ubuntu 系统中用 Node.js 调用 Taotoken 实现多模型对话应用 1. 环境准备与项目初始化 在 Ubuntu 服务器上开始之前&#xff0…

作者头像 李华
网站建设 2026/5/8 15:01:32

终极ThinkPad风扇控制指南:TPFanCtrl2让你的笔记本静音又高效

终极ThinkPad风扇控制指南&#xff1a;TPFanCtrl2让你的笔记本静音又高效 【免费下载链接】TPFanCtrl2 ThinkPad Fan Control 2 (Dual Fan) for Windows 10 and 11 项目地址: https://gitcode.com/gh_mirrors/tp/TPFanCtrl2 还在为ThinkPad风扇的噪音烦恼吗&#xff1f;…

作者头像 李华
网站建设 2026/5/8 15:00:48

从科幻到现实:便携式医疗诊断设备的技术实现与工程实践

1. 项目概述&#xff1a;当《星际迷航》的医疗幻想照进现实如果你和我一样&#xff0c;是个既爱鼓捣电子元件又对科幻电影着迷的工程师&#xff0c;那你肯定对《星际迷航》里麦考伊医生手中的“三录仪”印象深刻。那个巴掌大的小玩意儿&#xff0c;对着人一扫&#xff0c;生命体…

作者头像 李华
网站建设 2026/5/8 15:00:48

de4dot免费开源工具:3分钟快速解密.NET混淆代码的终极方案

de4dot免费开源工具&#xff1a;3分钟快速解密.NET混淆代码的终极方案 【免费下载链接】de4dot .NET deobfuscator and unpacker. 项目地址: https://gitcode.com/gh_mirrors/de/de4dot 你是否曾经遇到过这样的情况&#xff1f;拿到一个.NET程序集&#xff0c;却发现代码…

作者头像 李华