OV5648调试分享(mipi camera)

OV5648调试分享(mipi camera)板子 rk3568 平台 android11 1 kernel 修改 1 1 设备树 在设备树文件添加如下节点 amp i2c2 status okay pinctrl names default pinctrl 0

大家好,我是讯享网,很高兴认识大家。

1. kernel修改

1.1设备树

在设备树文件添加如下节点:

&i2c2 { 
    status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&i2c2m1_xfer>; ov5648: ov5648@36 { 
    status = "okay"; compatible = "ovti,ov5648"; reg = <0x36>; clocks = <&cru CLK_CIF_OUT>; clock-names = "xvclk"; /* avdd-supply = <&vcc2v8_dvp>; */ // dovdd-supply = <&vcc1v8_dvp>; // dovdd-supply = <&vcc1v8_dvp>; /* dvdd-supply = <&vcc1v8_dvp>; */ device_type = "v4l2-i2c-subdev"; power-domains = <&power RK3568_PD_VI>; // pinctrl-names = "default"; pinctrl-names = "rockchip,camera_default"; pinctrl-0 = <&cif_clk>, <&ov5648_rst_gpio>, <&ov5648_pwdn_gpio>; //<&ov5648_power_gpio>,  //reset pin control by hardware,used this pin switch to mipi input //1->2LANE(LANE 0&1) FRONT camera, 0->4LANE REAR camera // power-gpios = <&gpio0 RK_PB0 GPIO_ACTIVE_HIGH>; reset-gpios = <&gpio3 RK_PD4 GPIO_ACTIVE_HIGH>; pwdn-gpios = <&gpio3 RK_PD5 GPIO_ACTIVE_HIGH>; rockchip,camera-module-index = <0>; rockchip,camera-module-facing = "back"; rockchip,camera-module-name = "THDS11073_Largan"; // rockchip,camera-module-lens-name = "default"; rockchip,camera-module-lens-name = "40122a1"; port { 
    ov5648_out: endpoint { 
    remote-endpoint = <&mipi_in_ucam0>; data-lanes = <1 2>; }; }; }; }; 

讯享网
  • 我这里的供电是硬件指定好的所以不需要自己配置,关于dovdd,avdd,dvdd说明如下:
讯享网- dovdd-supply: Digital I/O voltage supply, - avdd-supply: Analog voltage supply, - dvdd-supply: Digital core voltage supply, 
  • power-domains = <&power RK3568_PD_VI>;这个是时钟的电源域
  • pwdn-gpios: 这个引脚的作用是复位设备寄存器
  • rockchip,camera-module-facing:指定前摄还是后摄
  • rockchip,camera-module-name,rockchip,camera-module-lens-name这两个参数决定使用哪一个IQ文件
  • remote-endpoint: mipi dphy 端的 port 名
  • data-lanes: mipi lane 数,1lane 为 <1>, 4lane 为 <1 2 3 4>

CSI设备树配置:

&csi2_dphy_hw { 
    status = "okay"; }; &csi2_dphy0 { 
    status = "okay"; ports { 
    #address-cells = <1>; #size-cells = <0>; port@0 { 
    reg = <0>; #address-cells = <1>; #size-cells = <0>; mipi_in_ucam0: endpoint@1 { 
    reg = <1>; remote-endpoint = <&ov5648_out>; data-lanes = <1 2>; }; }; port@1 { 
    reg = <1>; #address-cells = <1>; #size-cells = <0>; csidphy_out: endpoint@0 { 
    reg = <0>; remote-endpoint = <&isp0_in>; }; }; }; }; 

isp图像控制器设备树配置:

讯享网&rkisp { 
    status = "okay"; }; &rkisp_mmu { 
    status = "okay"; }; &rkisp_vir0 { 
    status = "okay"; port { 
    #address-cells = <1>; #size-cells = <0>; isp0_in: endpoint@0 { 
    reg = <0>; remote-endpoint = <&csidphy_out>; }; }; }; 

添加编译:

CONFIG_VIDEO_OV5648=y 


讯享网

讯享网Linux Kernel-4.19 |-- arch/arm/boot/dts #DTS配置文件 |-- drivers/phy/rockchip |-- phy-rockchip-mipi-rx.c #mipi dphy驱动 |-- phy-rockchip-csi2-dphy-common.h |-- phy-rockchip-csi2-dphy-hw.c |-- phy-rockchip-csi2-dphy.c |-- drivers/media |-- platform/rockchip/cif #RKCIF驱动 |-- platform/rockchip/isp #RKISP驱动 |-- dev #包含 probe、异步注册、clock、pipeline、 iommu及media/v4l2 framework |-- capture #包含 mp/sp/rawwr的配置及 vb2,帧中断处理 |-- dmarx #包含 rawrd的配置及 vb2,帧中断处理 |-- isp_params #3A相关参数设置 |-- isp_stats #3A相关统计 |-- isp_mipi_luma #mipi数据亮度统计 |-- regs #寄存器相关的读写操作 |-- rkisp #isp subdev和entity注册 |-- csi #csi subdev和mipi配置 |-- bridge #bridge subdev,isp和ispp交互桥梁 |-- platform/rockchip/ispp #rkispp驱动 |-- dev #包含 probe、异步注册、clock、pipeline、 iommu及media/v4l2 framework |-- stream #包含 4路video输出的配置及 vb2,帧中断处理 |-- rkispp #ispp subdev和entity注册 |-- params #TNR/NR/SHP/FEC/ORB参数设置 |-- stats #ORB统计信息 |-- i2 

整体的框架图:
在这里插入图片描述
各个节点的说明:
在这里插入图片描述
在这里插入图片描述

使用v4l2-ctl抓取camera数据帧

v4l2-ctl --verbose -d /dev/video0 --set-fmt-video=width=1920,height=1080,pixelformat='NV12' --stream-mmap=4 --set-selection=target=crop,flags=0,top=0,left=0,width=1920,height=1080 --stream-to=/data/out.yuv 

把out.yuv文件拷贝出来通过ubuntu去查看:

讯享网ffplay -f rawvideo -video_size 1920x1080 -pix_fmt nv12 out.yuv 

IQ文件

raw摄像头支持的iq文件路径external/camera_engine_rkaiq/iqfiles/isp21, 与以前不一样的地方是iq文件不再采用.xml的方式,而是采用.json的方式。虽有提供xml转json的工具, 但isp20的xml配置转换后也不适用isp21。

若使用raw摄像头sensor,请留意isp21目录所支持的iq文件

Android系统使用camera应用
Android系统使用camera的apk打开摄像头需要配置camera3_profiles*.xml,具体可参考Android SDK hardware/rockchip/camera/etc/camera目录下的文件

在hardware/rockchip/camera/etc/camera/camera3_profiles_rk356x.xml中

 </Profiles> <Profiles cameraId="0" name="ov5648" moduleId="m00"> .... <sensor.orientation value="90"/> 摄像头旋转的角度 

只有1个摄像头所以moduleId为0 ,sensor.orientation是旋转的角度值

未完,后面持续完善

小讯
上一篇 2025-02-13 13:38
下一篇 2025-01-29 22:49

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/28710.html