mini2440提供了一个摄像头接口,可以输出RGB24,RGB16的原始图像还可以输出编码的如YUV格式的图像,并提供了偏移翻转,放大缩小的功能。与开发板配套的摄像头模块为CAM130,采用ov9650的芯片。操作摄像头接口实现视频的采集与显示,主要配置两个部分的寄存器:ov9650的寄存器,摄像头接口寄存器。
        ov9650寄存器在模块的内部,s3c2440是以sccb总线来与ov9650通信。sccb总线类似iic总线,而且mini2440摄像头接口的sccb总线就接在了他的iic接口上,所以可以通过Iic来配置ov9650的寄存器,同样也可以用gpio来模拟sccb总线的时序。ov9650有大量的寄存器需要设置,但是一般不需要我们关心,厂商将一些常用的配置写成数组,直接赋值就可以了。需要我们关心的是厂商ID寄存器,这个一般在摄像头初始化之前用来判定摄像头是否正确安装。
        摄像头接口寄存器的配置比较麻烦,大体上需要配置三类的寄存器。第一类是摄像头接口输入视频格式寄存器CISRCFMT,功能是设置摄像头接口的输入数据的格式与长宽。s3c2440的摄像头接口提供了两个DMA通道,一个预览输出DMA,有四块DMA缓冲区,这个通道用于将采集到的视频图像直接显示到Lcd上。另外一个是编码输出DMA,也有四块DMA缓冲区,用于后期处理视频。所以第二类是预览输出视频格式寄存器。这类寄存器主要有以下几个:
CIPRTRGFMT      这个寄存器主要设置目标图像的长宽与是否进行旋转与镜像处理
CIPRCTRL        突发长度寄存器,这里的值与目标图像的宽度有关,有计算公式,不需要关许只需要调用函数计算然后赋值给它就可以了
CIPRSCPRERATIO
CIPRSCPREDST
CIPRSCCTRL        这三个寄存器主要是设置缩放比例以及与缩放偏移相关的参数,需要以原始图像以及目变图像的大小作为参数,通过一定的公式计算得出。公式是固定的直接用就可以了,不需要关心。CIPRSCCTRL这个寄存器尤其重要,因为第30位是视频输出的格式,1为RGB24,0为RGB16格式,需要根据LCD的类型设置。我的mini2440采用的T35的lcd就是RGB16的屏,所以这里需要设置成0,否则输出到lcd的图像颜色就不对,如果是RGB24的屏,则第30位要设置成1。
CIPRTAREA    目标图像面积寄存器,这个主要用于决定DMA一次传送的数据量
CIPRCLRSA1
CIPRCLRSA2
CIPRCLRSA3
CIPRCLRSA4   这四个寄存器是DMA目的寄存器,也就是摄像头接口输出存放数据的地方,如果直接显示的话就要都赋值成Lcd的帧缓冲首地址
        第三类寄存器是编码输出视频格式寄存器,与第二类相似。摄像头接口还有一些功能寄存器需要设置,如时钟寄存器CAMDIVN,与控制寄存器CIGCTRL,负责设置信号的极性以及摄像头的复位。综上所述,操作摄像头需要以下几个步骤:

(1) 读取厂商ID,来判定摄像头是否安装正确,这首先需要正确操作sccb总线,这一步也可以用来判定sccb总线时序是否正确。

(2) 配置摄像头,事先将寄存器的地址以及对应的值写入数组,直接通过循环完成配置,配置完成之后就不需要操作sccb总线了,也就是不需要管ov9650这端了。以下的操作设置摄像头接口这端的寄存器就可以了。

(3) 设置摄像头所需的时钟,设置控制寄存器,复位摄像头。
    (4) 根据lcd的类型以及需要显示视频的大小,设置源图像寄存器,预览输出寄存器等
        以上是使用摄像头接口的预览输出功能的基本操作步骤,还有每采集一帧图像,摄像头都会产生中断。具体程序在我的下载资源里:http://download.csdn.net/detail/yaozhenguo2006/4001720 是在ubuntu下用amr-linux-gcc编译的,如果安装了arm-linux-gcc并且将命令导入到了环境变量里,直接在代码目录下make就可以了,程序参考了http://blog.csdn.net/zhaocj/article/details/5653479,感谢博主对摄像头详尽的讲述。在mini2440开发板上(配套lcd为统宝3.5寸屏)程序是可以正确运行的,如果其他的屏幕需要改一下参数。

来自:http://blog.csdn.net/yaozhenguo2006/article/details/7179361

基于mini2440的ov9650摄像头裸机测试相关推荐

  1. aiku基于mini2440下裸机程序开发《概述与SDRAM运行》

    大家好,我是aiku,今天主要跟大家介绍一些 基于mini2440下裸机程序开发<概述与SDRAM运行> 有什么问题:都可以联系我们,谢谢! 我是aiku,本博客主要写一些我们的项目经验与 ...

  2. 基于mini2440简单计算器的实现(裸机代码)

    基于mini2440简易计算器使用的是数组实现,并非逆波兰式,因此功能不够强大,仅供驱动学习,以及C语言基础编程学习之用.有时间读者可以用逆波兰式来实现强大功能计算器,原理也很简单,建议读<c程 ...

  3. 摄像头防水性能测试软件,手机摄像头防水测试/手机摄像头气密性检测方法分享...

    原标题:手机摄像头防水测试/手机摄像头气密性检测方法分享 手机作为通讯消费产品,已成为了人们日常生活的必须品,伴随着光电及科学技术的发展,手机在原有通讯功能的基础上又新增多种功能,例如数码照相.看电视 ...

  4. [转]基于Video4Linux的USB摄像头图…

    基于Video4Linux的USB摄像头图像采集实现    做了一段时间的摄像头图像采集,有了一些心得.在论坛上开的2410摄像头    问题专贴(http://www.hhcn.com/cgi-bi ...

  5. 基于Video4Linux 的USB摄像头图像采集实现

    J.W.Hu 的 基于Video4Linux 的USB摄像头图像采集实现 Linux本身自带了采用ov511芯片的摄像头,而市场上应用最广泛的是采用中 芯微公司生产的zc301芯片的摄像头,下面我将针 ...

  6. linux 从摄像头采集一帧 jpg,基于Video4Linux 的USB 摄像头图像采集实现.pdf

    基于 Video4Linux 的 USB 摄像头图像采集实现 戴小鼠 daily3 1 基于基于 Video4Linux 的的 USB 摄像头图像采集实现摄像头图像采集实现 Write by dail ...

  7. 基于Video4Linux的USB摄像头图像采集实现

    Linux本身自带了采用ov511芯片的摄像头,而市场上应用最广泛的是采用中 芯微公司生产的zc301芯片的摄像头,下面我将针对这两大系列的摄像头分别做 介绍. (注:所有的开发都是在华恒HHARM- ...

  8. 基于Video4Linux 的USB 摄像头图像采集实现(转载)

    Linux本身自带了采用ov511芯片的摄像头,而市场上应用最广泛的是采用中 芯微公司生产的zc301芯片的摄像头,下面我将针对这两大系列的摄像头分别做 介绍.(注:所有的开发都是在华恒HHARM-2 ...

  9. ADAS仿真测试-基于原始数据流的雷达感知测试

    ADAS传感感知背景 在ADAS/AD仿真测试中,多传感器融合已经成为L3级别以上的ADAS/AD测试的主流解决方案.通过运用摄像头.毫米波雷达.激光雷达和超声波雷达等不同的传感器,安装在车身的不同位 ...

最新文章

  1. iOS经典面试题之“runtime是如何实现weak变量的自动置nil”
  2. DVWA upload
  3. [五]java函数式编程归约reduce概念原理 stream reduce方法详解 reduce三个参数的reduce方法如何使用...
  4. 图像分割:直方图区域划分及信息统计介绍
  5. 字符函数-(学习笔记)
  6. WebGL学习之法线贴图
  7. 【HDU-5963】朋友【树上博弈】
  8. matlab 取点画图,Matlab plot画图学习---画点以及两点连线
  9. MATLAB 2016b--神经网络工具箱中BP网络的实现
  10. Html5之canvas重叠矩形、getContext、fillStyle、fillRect
  11. photoshop图片显示为索引,解决办法
  12. waf指纹识别工具WAFW00F的使用
  13. cout后面输出时加endl和不加endl的区别
  14. 动态库和静态库的生成
  15. retrospective material for English final exam unit_6 Tomorrow
  16. 二值图像blob分析
  17. 大数据行业再拉警报,51信用卡或将彻底沦陷?
  18. 范式-范式:范式 百科
  19. 根据开始时间与结束时间,计算季度
  20. 面试问这些问题,你敢直接拒绝?!

热门文章

  1. 解决内网搭建本地yum仓库。
  2. 用imageMagick的composite合并图片
  3. Java Observer Pattern(观察者模式)
  4. Linux系统PATH变量配置
  5. pycharm 快捷键介绍
  6. ie8下修改input的type属性报错
  7. 【转帖】Reporting Service rdl报表,在aspx页面显示一张完整的RDL报表
  8. highgui java opencv_java – OpenCV 3.0.0 JAR缺少HighGUI
  9. Sending HTML content in an email using PHP
  10. Apache的认证、授权、访问控制