从零开始写CMOS摄像头驱动(一)

news/2025/3/14 17:49:50/

先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,股票基金定投,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题,二维码如下:
在这里插入图片描述

一 why

本篇文章主要以OV7740 cmos摄像头以及s3c2440芯片为例,介绍CMOS摄像头,以及SoC芯片内部CMOS控制器部分的基础知识。
最终需要实现的目的是,在LCD上实时显示摄像头采集到的数据

二 what

  1. 显示摄像头采集的基本流程
    自然景观 --> 摄像头模块 --> 接口 --> S3C2440摄像头控制器
  2. OV7740 cmos摄像头模块的组成
    a. lens镜头
    b. 普通马达
    c. sensor传感器OV7740
  3. 先介绍OV7740摄像头模块
    A. 工作原理以及基本参数
    输入信号: 自然景观模拟信号
    输出信号:输出格式为RAW RGB、YUV格式的数字信号,输出分辨率:VGA(640x480)、QVGA(240x320)、CIF(352x288)或者更小的大小,输出接口为BT601或者BT656
    有效感光阵列大小:656x488
    镜头大小:1/5寸
    像素点颗粒大小:4.2um x 4.2um
    其中有效感光阵列、镜头大小、像素点颗粒大小都是用来描述感光阵列的
    输入时钟:6~27MHz
    扫描模式:连续扫描§
    B. OV7740内部数据的处理流程
    阅读OV7740的数据手册,发现OV7740从内部硬件功能模块上主要分为如下三个部分:
    (1). ISC,image sensor core:翻转、增益大小调整、黑电平校准、饱和度控制、OTP存储器
    (2). ISP,image sensor process:提供测试功能、镜头补偿功能、自动白平衡、RAW RGB -> RGB、RGB -> YUV、窗口功能、缩放功能
    (3). IOI,image output interface:RAW RGB/YUV、VGA/QVGA、BT601/BT656
    那么,我们如何设置OV7740的这些功能呢?显然根据我们设置其他芯片的经验,OV7740必然有一个控制访问接口,我们的SoC芯片通过这个控制访问接口,对OV7740进行初始化设置,根据查看原理图或者数据手册可知,SoC芯片通过I2C总线来访问OV7740。
    设置好OV7740的工作模式之后,显然OV7740会有图像数据输出接口,通过这些接口将图像数据传输到SoC,OV7740支持BT601或者BT656接口传输数据。
  4. S3C2440摄像头CMOS控制器
    这部分内容在数据手册的第23章内容,这里不做详细介绍,只介绍一个粗略部分。
    显然,OV7740的输出信号通过BT601或者BT656接口送到了S3C2440,SoC需要支持这些接口,以及对这些数据做正确处理的功能。
    S3C2440支持BT601或者BT656接口输入,最大支持的分辨率是4096x4096,输入的数据格式必须是8bit YUV;内部图像处理模块支持预览和编码功能,所谓预览就是现实画中画,编码就是对采集到的数据进行编码操作。
    S3C2440每次处理完一帧图像之后,都会产生一个IRQ信号
  5. s3c2440和ov7740 模组之间的接口
    a. 控制类
    s3c2440通过I2C总线控制ov7740模组的初始化设置
    b. 数据传输类
CAMRST     --> 复位cmos摄像头模块
CAMCLK     --> 摄像头模块供祖宗的系统时钟(24MHz)
CAM_HREF   --> 行同步信号
CAM_VSYNC  --> 帧同步信号
CAM_PCLK   --> 像素时钟
CAMDATA0~7 --> 数据线
  1. 一些基础概念
    a. RAW RGB和RGB的区别是什么?
    RAW RGB就是只有红绿蓝三种颜色的数据,自然景观经过感光阵列输出后的数字信号就是RAW RGB(感光阵列只支持R、G、B三种)。
    而RGB数据不仅表示红绿蓝三种颜色,而且还能表示由红绿蓝组合成的任何一种颜色
    b. RGB和YUV分别是什么
    两者是完全不同的颜色空间,它们之间可以相互转换
    c. YCrCr420和YCbCr422的区别是什么?
    d. BT601/和BT656传送方式有什么区别
    BT601有独立的行同步信号线、帧同步信号线,而BT656是将这两种信号线内嵌到数据中的

三 how

本篇暂时不涉及如何去设置访问模组,只做基础知识介绍,想要知道如何写一个cmos摄像头的驱动,请参照接下来的文章


http://www.ppmy.cn/news/913102.html

相关文章

只需一个提示词解除GPT-4的字符限制!

ChatGPT的内存有限,GPT-3.5-turbo的限制为4897个令牌,而GPT-4的最大限制为8192。如果您在使用GPT-4进行聊天时超过8192个令牌(约6827个单词),它就会开始遗忘。我想出了一种新的技巧,可以轻松将对话扩展10倍。 这种技巧不会将对话中的每个字都保存到内存中。当您去开会时,会有人…

CnosDB x LangChain: 聊着天来查询时序数据库

本篇我们将主要介绍如何使用 LangChain 连接 CnosDB 数据库,实现使用自然语言和数据库的交流。 大模型等的相关话题已经霸榜半年有余,在讨论关注之余,CnosDB技术团队将大模型与人工智能相关技术与数据库开发与实践进行融合。继CnosDB全面整合…

邮件格式

邮件格式 Dear:收件人 邮件内容......Sincerely Mobile: 电话 E-mail : 邮件 Dept:部门 Co., Ltd:公司抬头 ******** 本郵件可能含有機密訊息,若您非本郵件之收件人請勿閱讀。 謝謝!******** 保密警語: 本信件及附件…

一文读懂Makefile

1 程序的编译和链接 我们平时说的代码编译其实是要分为两个部分:编译和链接。编译就是将我们的代码翻译称为二进制文件,链接就是将各个文件所翻译成的二进制文件进行合并和重定位,最终生成可执行文件。由于没有学过编译原理,这里…

如何判断用户输入的邮箱格式是否正确?

用户名网站名-例sina.com、tom.com、yahoo.com.cn……&#xff08;有些小网站的邮箱在填资料时不认&#xff0c;所以推荐用网站的邮箱&#xff09; 一般都是用<正则表达式>来判断.什么是正则表达式&#xff1f;就是用如下特殊符号或其组合来代表某个字符&#xff08;以下…

gmail如何设置邮箱别名

abcdefgooglemail.com和abcdefgmail.com&#xff0c;是同一个邮箱&#xff0c;只是后缀不同。 不管发到哪个后缀&#xff0c;都是可以收到信的。------------------------------ 为abcdefgmail.com增加googlemail.com为别名的具体操作&#xff1a; 登录Gmail------设置-------帐…

常用正则表达式—邮箱(Email)

要验证一个字符串是否为邮箱的话&#xff0c;首先要了解邮箱账号的格式。我尝试过在网上找出一个标准的格式&#xff0c;但是很遗憾我没有找到。我也尝试使用RFC标准来判断邮箱的格式&#xff0c;但是也没有结果。网上些博客说不应该使用RFC标准来验证邮箱是否合法&#xff0c;…

【机器学习算法】奇异值分解(SVD)

文章目录 奇异值分解(SVD)1.理论部分1.1特征分解(ED)1.2 奇异值分解(SVD)求解U和V求解Σ 2.应用部分2.1图像压缩2.2图像数据集成分分析2.3 数据降维(PCA的一种解法) Reference 奇异值分解(SVD) 奇异值分解(Singular Value Decomposition) 是矩阵低秩分解的一种方法&#xff0c;…