rk3399 android8.1 配置双目摄像头

本文详细介绍了在RK3399平台上,如何配置和调试采用MIPI接口的XC6130和XC7022摄像头模组。内容包括模组的HAL层代码结构、传感器配置、调试过程,如i2c通信、模组注册以及图像显示问题的解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目场景:

使用了赛威思 XC6130, XC7022模组,双mipi yuv输出

XC7022使用 i2c7通信, XC6130使用i2c6通信

一、MIPI驱动添加

1. rk3399hal层代码结构

hardware/rockchip/camera/CameraHal             //camera hal层应用代码

hardware/rockchip/camera/Config                //camera 前后置摄像头,旋转角度等参数配置

hardware/rockchip/camera/SiliconImage          //camera驱动代码

使用的两个摄像头模组厂商提供了 sensor驱动,我们只需要添加到对应目录下,然后调试

2. sensor模组配置

以XC7022为例, 配置 cam_board_rk3399.xml

<Sensor>
	<SensorName name="XC7022" ></SensorName>
	<SensorDevID IDname="CAMSYS_DEVID_SENSOR_1A"></SensorDevID>
	<SensorHostDevID busnum="CAMSYS_DEVID_MARVIN" ></SensorHostDevID>
	<SensorI2cBusNum busnum="6"></SensorI2cBusNum>
	<SensorI2cAddrByte byte="2"></SensorI2cAddrByte>
	<SensorI2cRate rate="100000"></SensorI2cRate>
	<SensorAvdd name="NC" min="0" max="0" delay="0"></SensorAvdd>
	<SensorDovdd name="NC" min="0" max="0" delay="0"></SensorDovdd>
	<SensorDvdd name="NC" min="0" max="0" delay="0"></SensorDvdd>
	<SensorMclk mclk="27000000" delay="0"></SensorMclk>
	<SensorGpioPwen ioname="NC" active="1" delay="1000"></SensorGpioPwen>
	<SensorGpioRst ioname="RK30_PIN2_PA2" active="0" delay="1000"></SensorGpioRst>
	<SensorGpioPwdn ioname="NC" active="0" delay="1000"></SensorGpioPwdn>
	<SensorFacing facing="back"></SensorFacing>
	<SensorInterface interface="MIPI"></SensorInterface>
	<SensorMirrorFlip mirror="0"></SensorMirrorFlip>
	<SensorOrientation orientation="90"></SensorOrientation>
	<SensorPowerupSequence seq="1234"></SensorPowerupSequence>					
	<SensorFovParemeter h="60.0" v="60.0"></SensorFovParemeter>
	<SensorAWB_Frame_Skip fps="0"></SensorAWB_Frame_Skip>					
	<SensorPhy phyMode="CamSys_Phy_Mipi" lane="2"  phyIndex="0" sensorFmt="CamSys_Fmt_Yuv422_8b"></SensorPhy>
</Sensor>

主要配置参数: 

    1. I2cBus   所使用的i2c

    2. facing    前后置摄像头

    3. orientation  摄像头旋转角度

    4.   lane="2"  phyIndex="0" sensorFmt="CamSys_Fmt_Yuv422_8b">

          分别对应了  接口数据通道数; mipi phy编号; sensor输出数据格式

二、调试过程

通过logcat | grep CameraHal等查看打印日志

dmesg查看系统日志

1. i2c写失败

如果 i2c 配置错误或者 在i2c开始读写数据时摄像头没完成上电初始化,系统会打印 i2c写失败错误

[  326.735166] E:camsys_i2c_write(92): i2c write dev(addr:0x20) failed!,err = -6

2. sensor连接

i2c读写成功后,模组注册成功可以在 logcat中看到

 两个模组的 connect 为 1时说明注册成功, 为0 则考虑是否是 i2c读写失败等原因

3. i2c延迟导致 相机app无法正常打开sensor显示图像
 

问题描述:

因为相机上电最开始是使用的 GPIO 引脚拉高,因此在系统启动后 i2c会一直读写失败,当时在i2c子系统的写函数开头中加了一个 延迟,导致app打开相机时只能偶尔出现图像的严重问题。

删除延迟后,成功出现图像

4. 前后置摄像头拍照成像,左右镜像问题

修改其中一个模组输出图像左右镜像

 在sensor开流之前修改

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值