目录:

  • 一、OV2640 Camera
  • 二、读取OV2640模块图像数据过程:
  • 三、DCMI(Digital camera interface)接口
  • 四、SCCB协议
    • 1.起始信号
    • 2.停止信号
  • 五、OV_Camera 配置
    • 1.复位摄像头
    • 2.读取摄像头ID
    • 3.配置帧率

一、OV2640 Camera

  • OV2640是OmniVision公司生产的一颗1/4寸的CMOS UXGA(1632*1232)图像传感器;
  • 支持自动曝光控制、自动增益控制、自动白平衡、自动消除灯光条纹等自动控制功能。
  • UXGA最高15帧/秒,SVGA可达30帧,CIF可达60帧;
  • 支持图像压缩,即可输出JPEG图像数据.
基本概念:
  • UXGA,即分辨率位16001200的输出格式,SXGA(12801024)、XVGA(1280960)、WXGA(1280800)、XGA(1024768)、SVGA(800600)、VGA(640480)、CIF(352288)和QQVGA(160*120);
  • VSYNC,即帧同步信号;
  • HREF /HSYNC,即行同步信号;
  • PCLK,即像素时钟,一个PCLK时钟,输出一个(或半个)像素.
  • PCLK高达36MHz
  • 图像数据在HREF为高的时候输出,
  • 当HREF变高后,每一个PCLK时钟,输出一个字节数据。
比如我们采用UXGA时序,RGB565格式输出,每2个字节组成一个像素的颜色(低字节在前,高字节在后)
这样每行输出总共有1600*2个PCLK周期,输出1600*2个字节

二、读取OV2640模块图像数据过程:

  • 低字节在前,高字节在后
Created with Raphaël 2.2.0开始等待帧同步信号(VSYNC)HREF是否为高电平等待第一个PCLK上升沿读取第一个像素低字节等待第二个PCLK上升沿读取第一个像素高字节等待第三个PCLK上升沿读取第二个像素低字节以此循环读取...............结束yes

三、DCMI(Digital camera interface)接口

  • DCMI是STM32F4芯片自带的一个数字摄像头接口,该接口是一个同步并行接口
  • 支持8位、10位、12位或 14位 CMOS 摄像头模块发出的高速数据流;
  • 可支持不同的数据格式:YCbCr4:2:2/RGB565逐行视频和压缩数据 (JPEG);
  • 可接收高速(可达 54 MB/s)数据流.

DCMI接口简介- 初始化流程:

①配置相关引脚的复用功能,使能DCMI时钟
  • 使能DCMI的时钟,其次要设置DCMI的相关引脚为复用
②设置DCMI工作模式及PCLK/HSYNC/VSYNC
  • DCMI接口,使用8位接口,连续模式,设置:PCLK为上升沿有效, HSYNC和VSYNC为低电平有效,设置帧中断(jpeg数据采集用)等参数。
③设置DMA
  • 采用DMA来搬运,设置好DCMI相关参数后,还需要设置DMA,以便采集数据。
④启动DCMI传输
  • 设置DCMI->CR的最低位为1,即可启动DCMI捕获图像数据

四、SCCB协议

  • SCCB(Serial Camera Control Bus) 串行摄像机控制总线协议
  • 一个基本传输单元称作一个相
    一个相包含总共9比特,前8比特为数据,第9比特为 Don’t-Care bit 不关心比特,该第9比特的数据取决于
    传输任务是读还是写(0代表写,1代表读)(可以类比I2C通信协议)
  • 一个传输任务的最大相个数是3

1.起始信号

//SCCB起始信号
//当时钟为高的时候,数据线的高到低,为SCCB起始信号
//在激活状态下,SDA和SCL均为低电平
void SCCB_Start(void)
{SCCB_SDA=1;     //数据线高电平     SCCB_SCL=1;     //在时钟线高的时候数据线由高至低rt_hw_us_delay(50);  SCCB_SDA=0;rt_hw_us_delay(50);    SCCB_SCL=0;       //数据线恢复低电平,单操作函数必要
}

2.停止信号

//SCCB停止信号
//当时钟为高的时候,数据线的低到高,为SCCB停止信号
//空闲状况下,SDA,SCL均为高电平
void SCCB_Stop(void)
{SCCB_SDA=0;rt_hw_us_delay(50);     SCCB_SCL=1;   rt_hw_us_delay(50); SCCB_SDA=1;    rt_hw_us_delay(50);
}

五、OV_Camera 配置

1.复位摄像头

OV2640_PWDN=0;  //POWER ON
rt_hw_ms_delay(1);
OV2640_RST=0;  //复位OV2640
rt_hw_ms_delay(1);
OV2640_RST=1;  //结束复位
SCCB_Init();                //初始化SCCB 的IO口
SCCB_WR_Reg(OV2640_DSP_RA_DLMT, 0x01);  //操作sensor寄存器
SCCB_WR_Reg(OV2640_SENSOR_COM7, 0x80);  //软复位OV2640

2.读取摄像头ID

reg=SCCB_RD_Reg(OV2640_SENSOR_MIDH);    //读取厂家ID 高八位
reg<<=8;
reg|=SCCB_RD_Reg(OV2640_SENSOR_MIDL);  //读取厂家ID 低八位
res = reg;
if(reg!=OV2640_MID)
{rt_kprintf("MID:%d\r\n",reg);return 1;
}
reg=SCCB_RD_Reg(OV2640_SENSOR_PIDH);   //读取厂家ID 高八位
reg<<=8;
reg|=SCCB_RD_Reg(OV2640_SENSOR_PIDL);  //读取厂家ID 低八位
if(reg!=OV2640_PID)
{rt_kprintf("HID:%d\r\n",reg);return 2;
}
log_i("OV2640 Camera ID:%x %x ",reg,res);

3.配置帧率

  • UXGA最高15帧/秒,SVGA可达30帧,CIF可达60帧;
//这里采用SVGA
//初始化 OV2640,采用SVGA分辨率(800*600)  fps:30
for(i = 0;i < sizeof(ov2640_sxga_init_reg_tbl)/2;i++)
{SCCB_WR_Reg(ov2640_svga_init_reg_tbl[i][0],ov2640_svga_init_reg_tbl[i][1]);
}

【STM32】OV2640摄像头学习笔记相关推荐

  1. 【STM32】OV2640摄像头学习笔记 转

    [STM32]OV2640摄像头学习笔记 2019年03月03日 13:01:35 淹死的大白鲨 阅读数 4736更多 分类专栏: [STM32] 版权声明:本文为博主原创文章,遵循 CC 4.0 B ...

  2. STM32 F4 OV2640摄像头学习笔记(一)

    //尝试写作,记录学习过程. 一.OV2640摄像头简介 本节将主要讲解OV2640摄像头基础部分和一些引脚配置. OV2640传感器简介 OV2640是Omni Vision公司生产的一颗1/4寸的 ...

  3. STM32 F4 OV2640摄像头学习笔记(三)

    四.DCMI(Digital camera interface)接口 功能描述 STM32F4 自带了一个数字摄像头(DCMI)接口,该接口是一个同步并行接口,能够接收外部8位.10位.12位或14位 ...

  4. STM32 F4 OV2640摄像头学习笔记(二)

    二.OV2640数据读取过程 OV2640模块初始化 初始化IO口 上电并复位 读取传感器ID 执行初始化序列 完成初始化 2. OV2640数据读取 如图2.1 OV2640行输出时序图所示,OV2 ...

  5. STM32 Cube MX学习笔记——TOF 高速单线激光雷达 L10(usart)

    STM32 Cube MX学习笔记--TOF 高速单线激光雷达 L10_串口中断通信 1. TOF 高速单线激光雷达 L10 2. STM32 Cube MX配置 3.代码配置 4.编译 烧录 显示 ...

  6. STM32 HAL库学习笔记1-HAL库简介

    STM32 HAL库学习笔记1-HAL库简介 HAL库 SPL 库 和 HAL 库两者相互独立,互不兼容.几种库的比较如下 目前几种库对不同芯片的支持情况如下 ST 中文官网上有一篇<关于ST库 ...

  7. STM32 HAL库学习笔记4-SPI

    STM32 HAL库学习笔记4-SPI 前言 一.SPI协议简介 SPI物理层 SPI协议层 1.基本通讯过程 2. 通讯的起始和停止信号 3. 数据有效性 4. CPOL/CPHA 及通讯模式 二. ...

  8. STM32中断回调函数定时器-STM32电控学习笔记06

    STM32中断&定时器-STM32电控学习笔记06 day6:2022/9/24 [中断概述] 在 STM32 中,对信号的处理可以分为轮询方式和中断方式,轮询方式就是不断去访问一个信号的端口 ...

  9. 翻转电平函数实现LED闪烁-STM32电控学习笔记05

    翻转电平函数实现LED闪烁-STM32电控学习笔记05 day5:2022/9/23 [函数介绍] 在前面帖子大致了解了一下HAL_GPIO_WritePin()函数和HAL_Delay()函数的用法 ...

最新文章

  1. 小半计算机谱子,小半 _桃李醉春风个人制谱园地_中国曲谱网
  2. 网站如何启用SSL安全证书?IIS7启用新建Https:/
  3. java 毕向东 内部类_java基础内部类(毕向东老师)
  4. AOP底层原理与注解配置详解
  5. c++rpg黑框游戏_c++实现简单RPG对战游戏的代码.doc
  6. PetaPoco源代码学习--2.TableInfo、ColumnInfo类和Cache类
  7. addressof表达式不能转换为long_2.3 C++赋值运算符与表达式 | 将有符号数据赋给无符号...
  8. 14款CSS3图片层叠切换动画
  9. java数字时钟代码_Java编程小实例—数字时钟的实现代码示例
  10. 2020年北京地铁建设规划抢先看
  11. 大一自我总结[zz]
  12. DELPHI盒子FTP登录地址及用户密码
  13. linux7重置密码操作,在CentOS 7/RHEL 7系统上重置root密码的方法
  14. 坡度如何用计算机计算,坡度计算公式图解,教你正确的计算方法
  15. Android根据语言适配货币符,ios – 使用NSLocale根据国家/地区代码或国家/地区名称获取货币符号...
  16. 笔记本计算机风扇声音大怎么办,怎么解决笔记本风扇声音大 笔记本风扇声音大解决办法【图文】...
  17. 华为云计算产品白皮书与案例合集
  18. Java正确获取星期Calendar.DAY_OF_WEEK
  19. 从苏宁电器到卡巴斯基(第二部)第30篇:我当高校教师的这几年 VI
  20. 【二】、什么是抽象数据类型

热门文章

  1. Linux - 安全策略命令
  2. 信息安全关键领域国产替代提速 概念股价值解析
  3. MATLAB中的一维插值与函数拟合
  4. 西门子SMART200与三菱FX3U自由口通讯程序,有西门子PLC程序
  5. educoder头歌实训 web课——JavaScript语言基础:JS循环语句
  6. 过滤器实现评论内容的限制,玫感字和字数,分别用两个Filter实现
  7. Mapbox 笔记1(Mapbox 是如何工作的)
  8. 我用 Spring AOP 干掉了一摞简历
  9. 光伏电站发电量上网电量售电量远程无线数据采集方案
  10. IOT黑客入门篇之初探Badusb