【RK3576】【Android14】摄像头&MIPI开发调试

获取更多相关的【RK3576】【Android14】驱动开发,可收藏系列博文,持续更新中:
【RK3576】Android 14 驱动开发实战指南


简介

RK3576支持摄像头相关功能:

MIPI DCPHY CSI RX:一路 4Lane DPHY 或者一路 3Trios MIPI CPHY 信号输入,通过 80pin 座子接入。

 MIPI DPHY CSI RX:两路 4Lane DPHY 信号输入,均支持可拆分成 2x2Lane,通过 80pin 座子接入。

硬件接口

驱动开发

【RK3576】【Kernel 6.1】Camera驱动目录说明:

Linux Kernel-6.1:|
        |-- arch/arm64/boot/dts/rockchip  //DTS 配置文件
        |-- drivers/phy/rockchip/
                |-- phy-rockchip-mipi-rx.c  //mipi dphy 驱动
        |-- drivers/media
                |-- platform/rockchip/isp1 rkisp1 isp 驱动
        |-- i2c/ 
                |-- ov13850.c  //CIS(cmos image sensor)驱动
                |-- vm149c.c  //VCM driver ic 驱动
        |-- spi/ rk1608  //ap driver 驱动
                |-- rk1608.c  //注册 rk1608 spi 设备
                |-- rk1608_dev.c  //注册/dev/rk_preisp misc 设备
                |-- rk1608_dphy.c  //注册 v4l2 media 节点,与 rk1608 和 AP 端交互

DTS配置

RK3576 平台的 Camera Interface (CIF) 设备树配置,分成好几个部分,分别为Sensor → DPHY0 → MIPI CSI2 → RKCIF → ISP → VPSS。

传感器部分dts配置

imx415: imx415@1a {
 compatible = "sony,imx415";  // 驱动匹配
 reg = <0x1a>;                // I2C从地址
 clocks = <&cru 56>;          // 传感器时钟源
  pinctrl-names = "default";
  pinctrl-0 = <&cam_clk0m0_clk0>;  //管脚复用
 power-domains = <&power 15>; // 电源域控制
 avdd-supply = <&vcc_mipidcphy0>; // 模拟电压
 port {
  imx415_out0: endpoint {
   remote-endpoint = <&mipi_in_ucam0>; // 与DPHY绑定
   data-lanes = <1 2 3 4>;  // 通道映射
  }
 }
}

//如果项目需求新增sensor(如q03p模组),做以下配置:

&i2cX {  // 根据硬件连接选择I²C通道(如i2c4)
    status = "okay";
    q03p: camera-sensor@XX {  // Q03P的I²C地址
        compatible = "techpoint,q03p";
        reg = <0xXX>;
        clocks = <&cru CLK_MIPI_CAM_XXX>;
        clock-names = "xvclk";
        pinctrl-names = "default";
        pinctrl-0 = <&mipi_pwr>;  // 关联Pinctrl
        reset-gpios = <&gpioX Y GPIO_ACTIVE_LOW>;
        // MIPI DPHY配置
        csi2_dphy: csi2-dphy {
            rockchip,lanes = <4>;  // 匹配Lane数量
        };
        port {
            q03p_out: endpoint {
                remote-endpoint = <&mipi_csi2_input>;  // 连接MIPI CSI2控制器
                data-lanes = <1 2 3 4>;
            };
        };
    };
};

DPHY部分dts配置(数据采集)

配置MIPI CSI-2 DPHY0物理层接口,用于连接多个摄像头传感器。5路摄像头通过MIPI CSI-2 DPHY0输入

&csi2_dcphy0 {
 status = "okay";  // 启用物理层接口
 ports {
  port@0 {        // 传感器输入端口
   endpoint@1 {   // IMX415 传感器
    data-lanes = <1 2 3 4>;  // 4通道MIPI
   }
   ...            // 其他5个传感器端点
  }
  port@1 {        // 输出到协议层
   csidcphy0_out: endpoint@0 {
    remote-endpoint = <&mipi0_csi2_input>;
   }
  }
 }
}

MIPI CSI部分dts配置(协议处理)

MIPI CSI-2协议层控制器,处理来自DPHY的数据流。MIPI CSI2控制器MIPI协议解析与数据包重组(实现 CSI-2 协议到 V4L2 标准的转换)。

ports {
 port@0 {
  mipi0_csi2_input: endpoint@1 {
   remote-endpoint = <&csidcphy0_out>;  // 接收物理层数据
  }
 }
 port@1 {
  mipi0_csi2_output: endpoint@0 {
   remote-endpoint = <&cif_mipi_in0>;  // 输出到CIF
  }
 }
}

RKCIF部分dts配置(图像处理)

启用摄像头接口核心。原始数据接收和格式转换。

&rkcif_mipi_lvds {
 port {
  cif_mipi_in0: endpoint {
   remote-endpoint = <&mipi0_csi2_output>;  // 接收CSI2数据
  }
 }
}

ISP部分dts配置(图像处理)

启用ISP(图像信号处理器)核心。执行HDR、3A(自动对焦/曝光/白平衡)等处理。

&rkisp_vir0 {
 port {
  isp_vir0: endpoint@0 {
   remote-endpoint = <&mipi_lvds_sditf>;  // 接收CIF数据
  }
 }
}

VPSS部分dts配置(图像处理)

启用VPSS(用于缩放、去噪等后处理)。后处理优化(如缩放、锐化)。

&rkvpss_vir0 {
 status = "okay";  // 启用视频后处理
}

你可能感兴趣的:(【RK3576】【Android14】摄像头&MIPI开发调试)