Linux CMOS摄像头驱动

arm学习 专栏收录该内容
7 篇文章 0 订阅

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 -- 数据线

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


  • 1
    点赞
  • 0
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

参与评论 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

lrl2ye

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值