CIF ISP11 Driver User Manual V1.0

CIF_ISP11_Driver_User_Manual_v1.0

CIF_ISP11_Driver_User_Manual_v1.0

User Manual:

Open the PDF directly: View PDF PDF.
Page Count: 12

福州瑞芯微电子股份有限公司
级状态:绝( ) 秘密( ) 内部( ) 公开(√ )
CIF_ISP11_Driver_User_Manual
(技术部,图形显示中心)
文件状态:
[√] 正在修改
[ ] 正式发布
当前版本:
V1.0
作 者:
张云龙、黄春
完成日期:
2017-12-19
审 核:
完成日期:
2017-12-19
福州瑞芯微电子股份有限公司
Fuzhou Rockchips Electronics Co . , Ltd
(版本所有,翻版必究)
2
福州瑞芯微电子股份有限公司
历史版本
版本
日 期
描 述
审核
V1.0
2017-12-19
发布初版
3
福州瑞芯微电子股份有限公司
目 录
1. 文档适用平台.............................................................................................................................. 1
2. 硬件说明...................................................................................................................................... 1
2.1. MIPI Camera Sensor................................................................................................. 1
2.2. Camera Sensor 选型说明..........................................................................................1
3. 文件目录说明.............................................................................................................................. 1
4. MIPI Sensor 注册..................................................................................................................... 2
5. Camera 设备驱动...................................................................................................................... 5
5.1. 驱动框架.......................................................................................................................... 5
5.2. 驱动解析.......................................................................................................................... 5
5.3. Camera 驱动介绍......................................................................................................... 6
6. I2C 问题排查............................................................................................................................... 9
福州瑞芯微电子股份有限公司
1
1. 文档适用平
芯片平台
软件系统
支持情况
RV1108
Linux(Kernel-3.10)
Y
此类平台的 isp driver 按照 isp 硬件版本来区分,具体命名如下:
RV1108 平台 ISP Driver 名称:rk-isp11
2. 硬件说明
2.1. MIPI Camera Sensor
(模组的 MIPI Lane >= PHY 支持MIPI Lane 数) 满足这一条件都可以连
到对应的 PHY,但是最后实际使用的 Lane 数以 PHY 支持Lane 数为准;
MIPI Camera Sensor 在选用时,建议事先查阅 RockChip 的认证列表:
RKISPV11_Camera_Module_AVL》,确认是否调试通过
2.2. Camera Sensor 选型说明
1、事先获取 RockChip 的认证列表:《RKISPV11_Camera_Module_AVL》;
2列表中已经有相关型号,并且状态显示 Ready那么建议按照列表中的模组配置信
息让模组厂进行打样;
3列表中没有相关型号或是想选择不同配置(镜头VCM的模组,那么建议填写
RockChip 摄像头模组调试需求申请表》,同时发给 RockChip
注:Camera Sensor 调试周期在 4周左右;
模组配置更换,调试周期在 3周左右;
3. 文件目录说
RV1108_cvr
|
| kernel
|
|arch/arm/boot/dts dts 配置文件
|drivers/media
|
|platform/rk-isp11 ISP host 驱动
福州瑞芯微电子股份有限公司
2
|i2c/soc_camera/rockchip/ camera sensor 驱动
|external
|
|libcamerahal/out
|
|inc/CameraHal camerhal 头文件
|lib /libcam_hal.so cameahal 库文件
4. MIPI Sensor 注册
RV1108_cvr.dts 文件中:
&i2c1 {
status = "okay";//
是否加载模块,默认开启
camera0: camera-module@36 {
status = "okay";//
是否加载模块,默认开启
compatible = "omnivision,ov2710-v4l2-i2c-subdev";
//omnivision sensor
类型
//ov2710-v4l2-i2c-subdev
ov2710
sensor
型号
//
需要与驱动名字一致
reg = <0x36>;// Sensor I2C
设备地址
device_type = "v4l2-i2c-subdev";//
设备类型
clocks = <&clk_mipicsi_out>;//sensor clickin
配置
clock-names = "clk_mipicsi_out";
pinctrl-names = "rockchip,camera_default", "rockchip,camera_sleep";
pinctrl-0 = <&cam0_default_pins>;
pinctrl-1 = <&cam0_sleep_pins>;
rockchip,pd-gpio = <&gpio3 8 GPIO_ACTIVE_HIGH>;
//Sensor PowerDown GPIO
配置
rockchip,pd-gpio = <&gpio3 8 GPIO_ACTIVE_LOW>;
//powerdown
的管脚分配及有效电平
rockchip,pwr-gpio = <&gpio0 18 GPIO_ACTIVE_HIGH>;
//power
的管脚分配及有效电平
rockchip,rst-gpio = <&gpio3 25 GPIO_ACTIVE_LOW>;
//reset
的管脚分配及有效电平
rockchip,camera-module-mclk-name = "clk_mipicsi_out";//mclk
时钟源
福州瑞芯微电子股份有限公司
3
配置
//
RV1108-clocks.dtsi
clk_mipicsi_out
的时钟源为
xin24m
clk_mipicsi_out: clk_mipicsi_out_div {
......
clocks = <&xin24m>;
......
};
xin24m: xin24m {
compatible = "rockchip,rk-fixed-clock";
clock-output-names = "xin24m";
clock-frequency = <24000000>;//24MHZ
#clock-cells = <0>;
};
PLTFRM_CAM_ITF_MIPI_CFG(dphy_index, vc , nb_lanes, bit_rate)
bit_rate
进行设置
Mclk
当信号为并口时,时钟源应该选择
“clk_cif_out”
rockchip,camera-module-regulator-names = "vdd_cam", "avdd_cam";
//camera vdd
avdd
名称
rockchip,camera-module-regulator-voltages = <1450000 3300000>;
//camera vdd
电压:
0x1.45V avdd
电压:
0x3.30V
rockchip,camera-module-facing = "back";//
前后置配置
rockchip,camera-module-name = "LA6110PA";//Camera
模组名称
rockchip,camera-module-len-name = "YM6011P";//Camera
模组镜头
rockchip,camera-module-fov-h = "128";//
模组水平可视角度配置
rockchip,camera-module-fov-v = "55.7";//
模组垂直可视角度配置
rockchip,camera-module-orientation = <0>;//
模组角度设置
rockchip,camera-module-iq-flip = <0>;//IQ
上下翻转
rockchip,camera-module-iq-mirror = <0>;//IQ
左右镜像
//
以上
2
个属性控制摄像头的效果参数镜像配置,一般都是设置成
0
,但是发现
以下现象:
拍摄白墙,图片的上半部偏色与下半部偏色不一致,或者左右半部偏色不一致,
可以将这
2
个属性置成
1
rockchip,camera-module-flip = <0>;
rockchip,camera-module-mirror = <0>;
//
以上
2
个属性控制摄像头驱动中的镜像配置,如果图像旋转
180
度,可以将这
福州瑞芯微电子股份有限公司
4
2
个属性修改成相反的值即可旋转
180
rockchip,camera-module-defrect0 = <1920 1080 0 0 1920 1080>;
// resolution.w
sensor
输出列数
,
//resolution.h:sensor
输出行数
,
// defrect.left:
输出偏移列数
,
// defrect.top:
输出偏移行数
,
// defrect.w:
输出列数
, defrect.left+defrect.w<=resolution.w,
//defrect.h:
输出行数
,defrect.h+defrect.top<=resolution.h,
//
具体如下图所示:
resolution.w
defrect.w
resolution.h
defrect.h
defrect.left
defrect.top
rockchip,camera-module-flash-support = <0>;//flash
控制开关
rockchip,camera-module-mipi-dphy-index = <0>;
//sensor
实际使用的
phy,
要与硬件实际连接对应
};
......
cameraN: camera-module@addrN {
//
支持多个
camera
配置
......
};
};
&cif_isp0 {
rockchip,camera-modules-attached = <&camera0 &camera1 &camera2>;
//
配置需要使用
camera
列表
,
连接到
ISP
设备节点
status = "okay";
};
福州瑞芯微电子股份有限公司
5
5. Camera 设备驱动
5.1. 驱动框架
RV1108_cvr.dts 文件中:
&i2c1 {
status = "okay";
camera0: camera-module@36 {
status = "okay";
......
}
......
CameraN: camera-module@addrN {
status = "okay";
......
}
}
Sensor 设备驱动采用 i2c 设备驱动方式,因此驱动中以 struct i2c_driver 的驱动架
构实现,如下代码:
其中 i2c_driver 中有.driver.probe.remove.id_table 四个子成员。.driver
主要是标识名称、.probe 主要是用于 sensor run 涉及的处理函数.remove 移出当前设
备,释放相应空间。
5.2. 驱动解析
1) camera 匹配
.driver 中有 3个子成员,.name 为当前设备的名称,不是一个实体,仅用来标
识;.owner 指针指向当前的这module;而.of_match_table 中定义的字符串为 dts
文件中注册设compatible 需要匹配;如下:
驱动程序中
福州瑞芯微电子股份有限公司
6
RV1108_cvr.dts 文件中
2) 其他设备解析
Rk_camera_module.c 文件中有如下
这些设备与 DTS 文件中的信息相对应,详细对应的节点看其中的内容介绍。
5.3. Camera 驱动介绍
驱动文件分类,主要按不同类型sensor 区别,如下有:
Aptina Camera Sensorar0330cs_v4l2-i2c-subdev.c
imx_camera_module.c
OminiVision Camera Sensorov4689_v4l2-i2c-subdev.c
ov_camera_module.c
公共的函数放Rk_camera_Module.c其中一些关键的函数、结构体解析如下介绍
1) struct ar0330cs_custom_config 结构体信息:
福州瑞芯微电子股份有限公司
7
. start/stop_streaming //Sensor
启动
/
停止数据流接
. s_ctrl/ g_ctrl //
设置
/
获取
sensor
相关参数,目前主要是
aec
设置,
Aec
:用自动曝光设置接口函数如下:
static int ar0330cs_write_aec(struct aptina_camera_module *cam_mod)
.check_camera_id//
校验
sensor id
接口,在模块初始化进行校
.set_flip//sensor
镜像控制
接口函数:
static int ov4689_set_flip(struct ov_camera_module
*cam_mod,struct pltfrm_camera_module_reg reglist[],int len)
.configs//sensor
配置信息,具体配置信息如下示例:
.power_up_delays_ms//power up
延时设置详细
2) struct aptina_camera_module_config 结构体信息
. frm_fmt //Sensor
支持的分辨率,可根据实际
sensor
进行修改,其
.width
sensor
输出列数,
.height
sensor
输出行数,
.code
sensor
输出数据格式
. frm_intrvl //
帧率信息
福州瑞芯微电子股份有限公司
8
.denominator
sensor
输出帧率
.auto_exp_enabled//
自动曝光使能
曝光设置接口函数:
static int ov4689_write_aec(struct ov_camera_module *cam_mod)
. reg_table //Sensor
各个功能的寄存器设置信息,初始化序列,移植时,要根据实际
sensor
对应的初始化序列进行修改
PLTFRM_CAM_ITF_MIPI_CFG(dphy_index, vc ,bit_rate, nb_lanes,)
//dphy_index:dphy
选择,
vc:
虚拟通道,
bit_rate:sensor mipi
传输带宽
nb_lanes:
数据
lane
数,
3) Camera 状态机
上图为 camera 状态机跳转,
CAMERA_MODULE_POWER_OFFcamera 掉电状态
CAMERA_MODULE_HW_STANDBYcamera 上电状态
CAMERA_MODULE_SW_STANDBYcameara PD\RESET 设置完成时的状态
CAMERA_MODULE_STREAMINGcamera 正常 run 状态
在这 4个状态跳转过程中需要一定延时等待,具体延时时间如 1)
示:.power_up_delays_ms = {5, 20, 0}
4) dts 配置:
根据实际的硬件连接、sensor 要求,修改上章节的各项信息,尤其注意 i2c 地址pinctrl
DVDD 配置、pdreset 引脚及其有效电平。
5) 上下电
福州瑞芯微电子股份有限公司
9
int gc_camera_module_s_power(struct v4l2_subdev *sd, int on)
该函数中主要实现:
1 按照 sensor 上电要求初始化 dts 文件中配置的 GPIOPowerDownRest;
2.调用 pltfrm_camera_module_s_power 通知电源管理模块控制 camera 相关
源;
3.上电时调check_camera_id 校验 Sensor id
6. I2C 问题排查
1.根据样机原理图、模组规格书、sensor datasheet 检查硬件:确认样机到模组的
电源、power downreset 连接是否正确。
2.电源检查一般需要三路电源 AVDDDVDDDOVDD确认供电是否符合 sensor
datasheet 要求,特别是 DVDD 是否符合要求;
3power down 脚检查:检查 cam0 cam1 的连接是否正确,是否有接反的情况,
有效电平的控制是否符合要求;power down 引脚的控制由 Camera driver 来控制;
4reset 脚检查:检查 reset 连接是否正确,是否有未连接的情况,有效电平是否符
合要求;
5i2c 通道是否正确,i2c 的设备地址是否配置正确;
6i2c 访问时检查 mclk 配置是否正确,输出占空比50%24Mhz 时钟;

Navigation menu