> 文章列表 > rk3568 适配摄像头 (CIF协议)

rk3568 适配摄像头 (CIF协议)

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 核查硬件

  • 核查摄像头供电、传输协议
    rk3568 适配摄像头 (CIF协议)

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

  • rk3568 CIF总线连接
    rk3568 适配摄像头 (CIF协议)
    细心通许会发现 gc2145 仅有8bits总线,而rk3568则是16bits总线,如何连接呢?
  • CIF 总线位数适配
    rk3568 适配摄像头 (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 匹配了?

总结

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