当前位置: 首页 > news >正文

rk3568 适配摄像头 (CIF协议)

rk3568 适配摄像头 (CIF协议)

在RK3568处理器中,支持CIF协议的摄像头可以通过CSI接口连接到处理器,实现视频数据的采集和处理。同时,RK3568还支持多种图像处理算法和编解码器,可以对采集到的视频数据进行实时处理和压缩,提高系统性能和效率。CIF(Camera Interface Format)协议是一种用于数字摄像头和处理器之间通信的协议。它定义了数据传输的格式和时序,包括像素数据、同步信号、时钟信号等。CIF协议支持多种分辨率和帧率,可以满足不同应用场景的需求。


提示:rk3568 cif支持8、10、12、16bits,可根据实际情况调整总线深度。

文章目录

  • rk3568 适配摄像头 (CIF协议)
  • 圈重点 看想学
  • 1. 核查硬件,适配gc2145
    • 1.1 核查硬件
    • 1.2 内核设备树适配 gc2145
  • 2 适配 lt8619
    • 2.1 内核设备树适配 lt8619
  • Tips
  • 总结


圈重点 看想学

a) 适配 gc2145 摄像头
b) 适配 lt8619,HDMI-IN 转DVP


1. 核查硬件,适配gc2145

原理图中使用是高性能的摄像头gc2145,它适用于各种数字相机、手机、平板电脑等消费电子产品。gc2145还支持多种输出格式,包括YUV、RGB、JPEG等,可以满足不同应用场景的需求。此外,它还具有低功耗、小尺寸、易于集成等特点,可以方便地集成到各种消费电子产品中。gc2145的分辨率为640x480,支持最高30帧/秒的视频录制。它还具有自动曝光、自动白平衡、自动对焦等功能,可以自动调整图像的亮度、色彩和清晰度,使得拍摄出的照片和视频更加清晰、自然。它采用了先进的CMOS技术,具有高分辨率、低功耗、高灵敏度、低噪声等优点。

1.1 核查硬件

  • 核查摄像头供电、传输协议
    在这里插入图片描述

CIF_PWREN 是 gc2145 供电CIF_5V控制,受控于 GPIO0_C1。
CIF_PWDN 是 gc2145 休眠控制,受控于 GPIO4_A6。
CIF_RST 是gc2145 复位控制,受控于 GPIO3_B5。
IR_LED_EN 是红外补光灯控制,受控于 GPIO4_B3。

  • rk3568 CIF总线连接
    在这里插入图片描述
    细心通许会发现 gc2145 仅有8bits总线,而rk3568则是16bits总线,如何连接呢?
  • CIF 总线位数适配
    在这里插入图片描述
    本文中采用8bits 总线,需连接高8位数据线。

1.2 内核设备树适配 gc2145

/ {vcc_camera: vcc-camera-regulator {compatible = "regulator-fixed";gpio = <&gpio0 RK_PC1 GPIO_ACTIVE_HIGH>;pinctrl-names = "default";pinctrl-0 = <&camera_pwr>;regulator-name = "vcc_camera";enable-active-high;regulator-always-on;regulator-boot-on;};
};&i2c4 {/* i2c4 sda conflict with camera pwdn */status = "okay";/** gc2145 needs to be disabled,* when gmac1 is enabled;* pinctrl conflicts;*/gc2145: gc2145@3c {compatible = "galaxycore,gc2145";reg = <0x3c>;clocks = <&cru CLK_CIF_OUT>;clock-names = "xvclk";power-domains = <&power RK3568_PD_VI>;pinctrl-names = "default";/* conflict with gmac1m1_rgmii_pins & cif_clk*/pinctrl-0 = <&cif_clk &cif_dvp_clk &cif_dvp_bus16>;/*avdd-supply = <&vcc2v8_dvp>;*//*dovdd-supply = <&vcc1v8_dvp>;*//*dvdd-supply = <&vcc1v8_dvp>;*/reset-gpios = <&gpio3 RK_PB5 GPIO_ACTIVE_LOW>;pwdn-gpios = <&gpio4 RK_PA6 GPIO_ACTIVE_HIGH>;rockchip,camera-module-index = <0>;rockchip,camera-module-facing = "back";rockchip,camera-module-name = "CameraKing";rockchip,camera-module-lens-name = "Largan";port {gc2145_out: endpoint {remote-endpoint = <&dvp_in_bcam>;};};};
};&rkcif {status = "okay";
};&rkcif_dvp {status = "okay";port {/* Parallel bus endpoint */dvp_in_bcam: endpoint {remote-endpoint = <&gc2145_out>;bus-width = <8>;vsync-active = <0>;hsync-active = <1>;};};
};&rkcif_mmu {status = "okay";
};&rkcif_dvp_sditf {status = "okay";
};

2 适配 lt8619

Lontium的LT8619C是一款基于ClearEdge®技术的高性能HDMI/双模DP接收器芯片,符合HDMI1.4规范。TTL输出可支持RGB,BT656,BT1120,输出分辨率可支持高达4Kx2K@30Hz的分辨率。LT8619 可转换为DVP信号,而再拓展出一路HDMI-IN。

2.1 内核设备树适配 lt8619

/ {vcc_camera: vcc-camera-regulator {compatible = "regulator-fixed";gpio = <&gpio0 RK_PC1 GPIO_ACTIVE_HIGH>;pinctrl-names = "default";pinctrl-0 = <&camera_pwr>;regulator-name = "vcc_camera";enable-active-high;regulator-always-on;regulator-boot-on;};ext_cam_clk: external-camera-clock {compatible = "fixed-clock";clock-frequency = <25000000>;clock-output-names = "CLK_CAMERA_25MHZ";#clock-cells = <0>;};
};&i2c2 {status = "okay";pinctrl-names = "default";pinctrl-0 = <&i2c2m1_xfer>;lt8619c: lt8619c@32 {compatible = "lontium,lt8619c";reg = <0x32>;clocks = <&ext_cam_clk>;clock-names = "xvclk";pinctrl-names = "default";pinctrl-0 = <&cif_dvp_clk &cif_dvp_bus16 &cif_dvp_bus8>;power-gpios = <&gpio0 RK_PD5 GPIO_ACTIVE_HIGH>;reset-gpios = <&gpio4 RK_PD2 GPIO_ACTIVE_LOW>;plugin-det-gpios = <&gpio0 RK_PD6 GPIO_ACTIVE_LOW>;hpd-output-inverted;rockchip,dvp-mode = <3>; /* 3:BT1120, 4:BT656, 5:BT1120_8bit */rockchip,dual-edge = <1>; /* 0:single edge, 1:dual edge */rockchip,camera-module-index = <0>;rockchip,camera-module-facing = "back";rockchip,camera-module-name = "LT8619C";rockchip,camera-module-lens-name = "NC";port {lt8619c_out: endpoint {remote-endpoint = <&cif_para_in>;bus-width = <16>;pclk-sample = <1>;};};};
};&rkcif_dvp {status = "okay";port {/* Parallel bus endpoint */cif_para_in: endpoint {remote-endpoint = <&lt8619c_out>;};};
};&rkcif {status = "okay";
};&rkcif_mmu {status = "okay";
};&rkcif_dvp_sditf {status = "okay";
};

Tips

  1. camera I2C通信无应答
    先核查硬件供电,再核查上电时许、reset、pwdn等。然后是必须有要有的 clk 时钟,别问为什么,问就是不专业。
  2. camera clk信号没有
    先排查GPIO 复用,再排查是否被正常申明,然后测量上电时许是否为开始正常然后消失。
    camera 设备在注册失败,或者关闭camera时会主动关闭 clk。再测量则不会有信号。
  3. camera 正常注册,但是无法打开
    HAL1和HAL3不仅需要内核正常注册,还需要匹配 camera列表。你的camera_default.xml 匹配了?

总结

活学活用,做个合格的搬运工。

http://www.lryc.cn/news/61050.html

相关文章:

  • 今天面试招了个25K的测试员,从腾讯出来的果然都有两把刷子···
  • Redis---集群环境准备
  • 数据结构考研版——队列的配置问题
  • 【SOAP-WebService系列】SOAP学习笔记
  • 材料科学|名词解释终版!!!
  • 永久免费内网穿透不限制速度
  • JAVA开发运维(云基础设备监控)
  • 现在备考2023年5月软考网络工程师时间够吗?
  • webp怎么转换成png,4个方法教你快速处理
  • 程序员能干多久?程序员能干到多大年龄?
  • 采购系统是如何管理供应商的?
  • Linux学习笔记(2)--一些内核接口
  • 学习风`宇博客用户权限菜单模块
  • centos7.6部署ELK集群(一)之elasticsearch7.7.0集群部署
  • leetcode142. 环形链表 II
  • Linux: network: dummy 类型网络接口
  • java记录-lambda表达式、接口应用、方法引用
  • AI写作机器人-ai文章生成器在线
  • HarmonyOS原子化服务卡片整改、下架、升级失败部分原因及处理办法
  • 博客系统测试报告【可上线】
  • shell中的for循环和if判断
  • 【Unity入门】16.脚本引用组件
  • 无线蓝牙耳机哪款音质好?目前音质最好的无线蓝牙耳机推荐
  • 【云原生进阶之容器】第六章容器网络6.6.1--Cilium网络方案概述
  • 集中式版本控制工具 —— SVN
  • 【Dom获取属性操作】JavaScript 全栈体系(十)
  • C# 中的多态和虚方法,如何实现多态和使用虚方法?
  • R软件使用一些常见的问题
  • 为什么需要uboot?
  • Qt布局实战:实现高效、美观的GUI应用程序