1、CMOS摄像头原理
摄像头数据流向:自然景观 > 摄像头模块 > 接口 > S3C2440摄像头控制器 > LCD
ov7740(摄像头模块)
输入信号:自然景观等的模拟信号
输出信号:RGB、YUV格式的数字信号
输出分辨率: VGA(640*480)、QVGA(240*320)、CIF(352*288)、更小的任意大小
有效感光阵列的大小:656*488 = 320128(30W)
镜头的大小:1/5寸
像素点颗粒大小:4.2um * 4.2um
以上三个参数,都是用来描述感光阵列,即使同为30w像素的摄像头,如果它的镜头尺寸
越小,
那么对应的像素点颗粒尺寸也就越小,从而感光性就越差,进而拍摄效果就越差。
输入时钟频率:6~27MHz(OV7740摄像头模组的工作频率范围)
扫描模式:连续扫描(P)
原理图(接口)
控制类:
IICSDA -- IIC总线的数据线
IICSCL -- IIC总线的时钟线
数据传输类:
CAMRST -- 复位CMOS摄像头模块
CAMCLK -- 摄像头模块工作的系统时钟(24MHz)
CAM_HREF -- 行同步信号
CAM_VSYNC -- 帧同步信号
CAM_PCLK -- 像素时钟
CAMDATA0~7 -- 数据线
CAM_HREF -- 行同步信号
CAM_VSYNC -- 帧同步信号
CAM_PCLK -- 像素时钟
CAMDATA0~7 -- 数据线
CMOS摄像头模块的接口分为两类:
(1).控制类
-- 初始化:对摄像头模块进行相应的初始化操作,让摄像头模块能够正常的输出数据。
-- 控制:设置亮度、旋转、缩放等等的操作
(2).数据传输类:与LCD的接口完全一样。
CMOS摄像头模块,是一个IIC设备,需要给它写符合IIC设备那套架构的驱动,从而实现
初始化工作和
灵活的控制。
2、CMOS_OV7740设备驱动
cmos_ov7740_dev.c:
i2c_new_device() //申请一个i2c客户端client。
i2c_unregister_device //注销i2c client。
static struct i2c_board_info cmos_ov7740_info = {
I2C_BOARD_INFO("cmos_ov7740", 0x21),
};
static struct i2c_client *cmos_ov7740_client;
static int cmos_ov7740_dev_init(void)
{
struct i2c_adapter *i2c_adap;
i2c_adap = i2c_get_adapter(0);
cmos_ov7740_client = i2c_new_device(i2c_adap, &cmos_ov7740_info);
i2c_put_adapter(i2c_adap);
return 0;
}
static void cmos_ov7740_dev_exit(void)
{
i2c_unregister_device(cmos_ov7740_client);
}
设备地址:
写指令 -- 0x42(01000010)
读指令 -- 0x43(01000011)
8bit的地址 = 7bit设备地址 + 1bit的读/写控制位
设备地址 = 0100001 = 0x21