3288android_5.1
《RK3288_Camera_User_Manual_v1.4》
版本获取方式
[sys_graphic.OV13850.ver]: [0.9.0] sensor 驱动版本号
[sys_graphic.OV5640.ver]: [0.8.0] sensor 驱动版本号
[sys_graphic.cam_camboard.ver]: [0.13.0] 支持 cam_board.xml 的版本
[sys_graphic.cam_dri_v4l2.ver]: [3.10.0] camsys 驱动版本
[sys_graphic.cam_drv_camsys.ver]: [0.32.0] camsys 驱动版本
[sys_graphic.cam_hal.ver]: [1.55.1] CameraHal 版本
[sys_graphic.cam_isi.ver]: [0.10.0] ISI 接口版本
[sys_graphic.cam_libisp.ver]: [1.39.0] ISP 库版本
[sys_graphic.cam_trace]: [0]
我是接了一个OV5640(YUV)、OV13850(MIPI)、USB摄像头
由于各个源码以及库之间版本需要匹配使用,所以在代码中已经做了版本校验规则,
如果出现 panic 等信息,麻烦先关注是否是版本之间的不匹配导致! !
例如:
D/CameraHal( 1739): CamSys_Head.h Version Check:
D/CameraHal( 1739): Kernel camsys_head.h: v0.6.0
D/CameraHal( 1739): Kernel camsys_drv : v0.8.0
D/CameraHal( 1739): CameraHal camsys_head.h : v0.7.0
D/CameraHal( 1739):
D/CameraHal( 1739):
D/CameraHal( 1739):
F/CameraHal( 1739): static int
camera_board_profiles::RegisterSensorDevice(rk_cam_total_info*):
F/CameraHal( 1739): VERSION-WARNING: camsys_head.h version isn't match in Kernel and CameraHal
如何注册 DVP/MIPI Sensor
注册 DVP/MIPI Sensor 方式通过填写 cam_board.xml 来实现,该文件使用简要说明
如下:
注:如果机器中没有 DVP/MIPI Sensor,删除 cam_board.xml 文件即可;
<BoardXmlVersion version="v0.2.0">
以上标识的为当前 xml 文件的版本号, 如果与 sys_graphic.cam_camboard.ver 不一致,
可能导致错误,麻烦更新 cam_board.xml。
Sensor 注册信息
<SensorName name="OV2659" ></SensorName>
填写 Sensor 名字,该名字必须与 Sensor 驱动的名字一致,目前提供的 Sensor 驱动如下:
<SensorDevID IDname="CAMSYS_DEVID_SENSOR_1A"></SensorDevID>
填写 Sensor 软件 ID,注册的 ID 只需要不一致即可,可填写以下值:
CAMSYS_DEVID_SENSOR_1A
CAMSYS_DEVID_SENSOR_1B
CAMSYS_DEVID_SENSOR_2
从这里猜测最多可以接三个摄像头,待取证
<SensorHostDevID busnum="CAMSYS_DEVID_MARVIN" ></SensorHostDevID>
填写采集控制器名称,目前只支持填写:
CAMSYS_DEVID_MARVIN
<SensorI2cBusNum busnum="3"></SensorI2cBusNum>
填写 Sensor 所连接的主控 I2C 通道号
<SensorI2cAddrByte byte="2"></SensorI2cAddrByte>
填写 Sensor 寄存器地址长度,单位:Byte
<SensorI2cRate rate="100000"></SensorI2cRate>
填写 Sensor 的 I2C 频率,单位:Hz
<SensorMclk mclk="24000000"></SensorMclk>
填写 Sensor 输入时钟频率, 单位:Hz
<SensorAvdd name="NC" min="0" max="0"></SensorAvdd>
填写 Sensor AVDD 的 PMU LDO 名称,如果不是连接到 PMU,那么只需填写 NC
<SensorDovdd name="NC" min="18000000" max="18000000"></SensorDovdd>
填写 Sensor DOVDD 的 PMU LDO 名称,如果不是连接到 PMU,那么只需填写 NC,注意 min
以及 max 值必须填写,这决定了 Sensor 的 IO 电压;
<SensorDvdd name="NC" min="0" max="0"></SensorDvdd>
填写 Sensor DVDD 的 PMU LDO 名称,如果不是连接到 PMU,那么只需填写 NC
<SensorGpioPwdn ioname="RK30_PIN2_PB4" active="1"></SensorGpioPwdn>
填写 Sensor PowerDown 引脚,直接填写名称即可, active 填写休眠的有效电平
<SensorGpioRst ioname="RK30_PIN2_PB6" active="0"></SensorGpioRst>
填写 Sensor Reset 引脚,直接填写名称即可, active 填写复位的有效电平
<SensorGpioPwen ioname="RK30_PIN0_PC1" active="1"></SensorGpioPwen>
填写 Sensor Power 引脚,直接填写名称即可, active 填写电源有效电平
<SensorFacing facing="front"></SensorFacing>
填写 Sensor 作为前置还是后置,可填写如下值:
front
back
<SensorInterface mode="CCIR601"></SensorInterface>
这是文档中的
<SensorInterface interface="MIPI"></SensorInterface>
这是实际的
填写 Sensor 的接口方式,可填写如下值:
CCIR601
CCIR656,
MIPI,
SMIA
<SensorMirrorFlip mirror="0"></SensorMirrorFlip>
暂不支持
<SensorOrientation orientation="0"></SensorOrientation>
填写 Sensor 的角度信息
<SensorPowerupSequence seq="1234"></SensorPowerupSequence>
暂不支持
<SensorFovParemeter h="60.0" v="60.0"></SensorFovParemeter>
FOV 配置选项, h 代表水平视角度数,v 代表垂直视角度数
理论上,FOV 值可以由模组规格书中获得,由于可能不精确,在测试 Cts_Verify FOV
选项时,可以先测试一张全分辨率照片,查看具体的 FOV 值,然后将测试出的 FOV 值重新填
入该处,重新烧写固件测试。
<SensorAWB_Frame_Skip fps="15"></SensorAWB_Frame_Skip>
设置 Camera 进入时,过滤 awb 不稳定的最大帧数
如果 sensor 帧率可以达到 30 帧,建议设置成 15 帧;
如果 sensor 帧率只在 15 帧左右,建议跳桢数减少,避免刚进入黑屏时间较长。
DVP Sensor:
<SensorPhy phyMode="CamSys_Phy_Cif" sensor_d0_to_cif_d ="2" cif_num="0"
sensorFmt="CamSys_Fmt_Raw_10b"></SensorPhy>
phyMode:
Sensor 接口硬件连接方式,可填写如下值:
CamSys_Phy_Cif
sensor_d0_to_cif_d:
Sensor DVP 输出数据位 D0 对应连接的主控 DVP 接口的数据位号码
cif_num:
Sensor DVP 连接到主控 DVP 接口编号
sensorFmt:
Sensor 输出的数据格式,目前版本仅支持填写 CamSys_Fmt_Raw_10b
MIPI Sensor:
<SensorPhy phyMode="CamSys_Phy_Mipi" lane="1" phyIndex="0"
sensorFmt="CamSys_Fmt_Raw_10b"></SensorPhy>
phyMode:
Sensor 接口硬件连接方式,可填写如下值:
CamSys_Phy_Mipi
lane:
Sensor mipi 接口数据通道数
phyindex:
Sensor mipi 连接的主控 mipi phy 编号
sensorFmt
Sensor 输出数据格式,目前仅支持 CamSys_Fmt_Raw_10b
VCM 注册信息
<VCMDrvName name="NC"></VCMDrvName>
填写马达驱动 IC 的名称,如果 Sensor 集成马达驱动 IC 的话,请填写:
BuiltInSensor
<VCMName name="NC"></VCMName>
填写马达的名称
<VCMI2cBusNum busnum="0"></VCMI2cBusNum>
填写马达驱动 IC 的连接的主控 I2C 通道号,一般与 Sensor 同一个通道
<VCMI2cAddrByte byte="0"></VCMI2cAddrByte>
填写马达驱动 IC 的 i2c 地址字节数
<VCMI2cRate rate="0"></VCMI2cRate>
填写马达驱动 IC 的 i2c 速率
<VCMVdd name="NC" min="0" max="0"></VCMVdd>
填写模组上连接 AF_VCC(马达电源)的 PMU_LDO 名称
<VCMGpioPwdn ioname="NC" active="0"></VCMGpioPwdn>
填写模组上马达驱动 IC 的休眠使能 IO,一般与 Sensor 的休眠使能 IO 一致
<VCMGpioPower ioname="NC" active="0"></VCMGpioPower>
填写使能模组 AF_VCC 的使能 IO
<VCMCurrent start="20" rated="80" vcmmax="100" stepmode="13"
drivermax="100"></VCMCurrent>
填写马达的电流参数:
start: 马达的启动电流
rated: 马达的额定电流
vcmmax: 马达的最大电流
stepmode: 马达驱动 ic 的电流输出方式,该指标关系到马达的移动速度,麻烦参
考驱动 icdatasheet;
drivermax: 马达驱动 ic 的最大输出电流
注意事项:start、rated、stepmode 这 3 项指标有可能会导致马达在对焦过程中的异响问题;
软件功能配置信息
<Focus_Mode_Continuous_Picture support="1"></Focus_Mode_Continuous_Picture>
配置是否使能拍照预览界面的连续对焦功能
1: 使能该功能
0: 屏蔽该功能
<DigitalZoom support="1"></DigitalZoom>
配置是否使能数码变焦功能
1: 使能该功能
0: 屏蔽该功能
<Continue_SnapShot support="1"></Continue_SnapShot>
配置是否使能连拍功能
1: 使能该功能
0: 屏蔽该功能
<PreviewSize width="0" height="0"></PreviewSize>
配置客户强制需求的预览分辨率,一般来说,宽高各设置成 0,由系统来进行选择;但
是有可能系统选择出来的分辨率帧率过低,那么可以指定你所需要的分辨率;
注:目前 ov8825,建议将该项设置成 1920x1080;
FLASH 注册信息
<FlashName name="Internal"></FlashName>
Flash 的名称,采用默认值
<FlashI2cBusNum busnum="0"></FlashI2cBusNum>
暂不支持
<FlashI2cAddrByte byte="0"></FlashI2cAddrByte>
暂不支持
<FlashI2cRate rate="0"></FlashI2cRate>
暂不支持
<FlashTrigger ioname="NC" active="0"></FlashTrigger>
填写 ISP 的 FLASHTRIGOUT 使能的有效电平,对应 rk3288 GPIO 的 GPIO7‐B5
<FlashEn ioname="NC" active="0"></FlashEn>
填写 ISP 的 PRILIGHTTRIG 使能的有效电平,对应 rk3288 GPIO 的 GPIO7‐B6
<FlashLuminance luminance="0"></FlashLuminance>
暂不支持
<FlashColorTemp colortemp="0"></FlashColorTemp>
暂不支持
<FlashModeType mode="1"></FlashModeType>
填写 Flash 的工作方式,目前支持以下两种 flash 工作模式:
Mode 1:
该模式下 prelight_trig 和 flash_trig 的时序图如下:
prelight_trig 为高, flash_trig 为低时进入 movie/torch mode; prelight_trig 为低, flash_trig 为
高时进入 flash mode。
以 SGN3780 芯片为例:
ENF <‐‐‐‐‐‐> FlashTrigger <‐‐‐‐‐‐> GPIO7‐B5
ENM <‐‐‐‐‐‐> FlashEn <‐‐‐‐‐‐> GPIO7‐B6
ENM 为低, ENF 为高时进入 flash 模式; ENM 为高, ENF 为低时进入 Movie/Torch 模式。
Mode 2:
该模式下 prelight_trig 和 flash_trig 的时序图如下:
prelight_trig 为高, flash_trig 为低进入 movie/torch mode; prelight_trig 为高, flash_trig 为高
时进入 flash mode。
以 SGM3140 芯片为例:
FLASH <‐‐‐‐‐‐> FlashTrigger<‐‐‐‐‐‐> GPIO7‐B5
EN <‐‐‐‐‐‐> FlashEn <‐‐‐‐‐‐> GPIO7‐B6
EN 为高, FLASH 为高时进入 flash 模式; EN 为高, FLASH 为低时进入 torch 模式。
注意:在 mode2 情况下, FlashTrigger 和 FlashEn 的有效电平须配置一致,否则会导致panic 错误。
cam_board.xml 支持多个 sensor 配置
Cam_board.xml 支持多个 sensor device 配置, 在 xml 里添加自己可能用到的<CamDevie>,
填写上面所述相应所需的硬件信息即可。
例如下图:
如何测试 CTS_Verify FOV
麻烦参考( Sensor 注册信息)中关于<SensorFovParemeter>的说明
如何解决开启 Camera 最初几帧的偏色问题
参考( Sensor 注册信息)中关于<SensorAWB_Frame_Skip >的说明;