你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32学习笔记之摄像头实验(OV2640)

[复制链接]
Savy1314 发布时间:2017-7-17 14:13
STM32学习笔记之摄像头实验(OV2640)
OV2640
& C& k1 d1 x& B: [( ?% @0 U* ~' v5 R+ q3 S/ w! T" ]: c8 e4 |
* _! \3 N9 S7 {' i- r
相关概念:
, T/ G$ @. Q7 h6 i8 e" O7 H+ l# o5 D5 O! g
1.UXGA,即分辨率位1600*1200的输出格式,类似的还有:SXGA(1280*1024)、XVGA(1280*960)、WXGA(1280*800)、XGA(1024*768)、SVGA(800*600)、VGA(640*480)、CIF(352*288)和QQVGA(160*120)等。/ Z# ^# R' b) k& O, D: g, [
2.PCLK,即像素时钟,一个PCLK时钟,输出一个(或半个)像素。" C% W/ H9 B' {' [
3.VSYNC,即帧同步信号。
) [8 `& ^, p. B. ]) h  t4.HREF /HSYNC,即行同步信号。
( R' K, ?; V9 e& q# c1 J2 v! K
5 [8 b  @3 i/ |+ a5 V
, Q+ j* a% k+ ?. {- Q
简介:
8 Z) m! P, J# C$ Z
8 R! J! M. S5 b, C$ P: HOV2640是OmniVision公司生产的一颗1/4寸的CMOS UXGA(1632*1232)图像传感器。该传感器体积小、工作电压低,提供单片UXGA摄像头和影像处理器的所有功能。通过SCCB 总线控制,可以输出整帧、子采样、缩放和取窗口等方式的各种分辨率8/10位影像数据。UXGA最高15帧/秒(SVGA可达30帧,CIF可达60帧)。 - G4 ]' S! E+ n7 z% D
注:SCCB总线可以看成IIC总线的简化版
* a$ G0 T" o" ]1 a2 h9 t: a# R3 M- c, l( J: B

1 ~9 N9 Z( y3 T6 `窗口设置:
5 k  H* r2 f5 M& R2 e: Q- ~
: O* L' i8 |$ j% s0 u% R; U5 i
9 L" T/ ^# i) e2 Q# {( b- H: }, _: B
1.传感器窗口设置(OV2640_Window_Set)
/ d. `3 g! j7 H( r- X. l; P0 t% `' a2.图像尺寸设置(OV2640_ImageSize_Set)
" D# n2 @/ N/ C5 Z3.图像窗口设置(OV2640_ImageWin_Set)8 Y3 A$ w$ I8 U# _2 g
4.图像输出大小设置(OV2640_OutSize_Set) 3 S, }. n  Z. s7 u& L& M5 ?7 E- T
4 F/ @. k! O& H7 V

2 v7 K! e6 Y/ D/ F0 Z( Z关系如下图: ( \3 e7 I& q( {% V& J9 d% f7 |& R
6.jpg : M  h- t) ]  l% L$ Q; y2 T
一般来说1,2采取默认设置,我们只需要调整3和4即可。
7 M. d/ h0 v" }
+ O- l8 x8 S1 b! R( V& h5 J
  V& t" Z" O! |  D3 I$ u, b! e3 Q; ^7 o
时序图: ' H  F. ]) v+ f, Y0 l

, |6 h6 [+ m% h4 KOV2640是采取先读一行像素,再跳到下一行重新开始读取新一行像素。 # \7 P! w! M2 o1 F9 N
首先,我们看行输出时序:
( L! L( y! n1 U, x% @& m* ^0 p: U0 ~2 g9 D; r7 R' \3 c
5.jpg 5 D) l( w% N+ U3 v1 [
图像数据在HREF为高的时候输出,当HREF变高后,每一个PCLK时钟,输出一个字节数据。比如我们采用UXGA时序,RGB565格式输出,每2个字节组成一个像素的颜色(低字节在前,高字节在后),这样每行输出总共有1600*2个PCLK周期,输出1600*2个字节
) k# ]/ @4 j0 Z+ x7 Q$ C9 n然后,看帧输出时序: 0 M" i) G- O5 U
4.jpg
& c0 `  m# ~* g当HREF输出高电平时开始读取一行像素点,当低电平时不操作,重复操作即可读取一帧图像。
4 d  q- K% Q. B6 Y' iOV2640支持:RGB565或JPEG输出。RGB565输出时,时序如图所示。JPEG输出时,PCLK大大减少,且HREF不连续,数据流以0XFF,0XD8开头,以0XFF,0XD9结束,将此间数据保存为.jpg即可在电脑打开查看。
% ~1 }* X/ F3 q% d  a
3 g+ _* i: b0 b/ T5 {2 M
DCMI' ^& s. i) Q4 c
DCMI是STM32F4芯片自带的一个数字摄像头接口,该接口是一个同步并行接口,能够接收外部8位、10位、12位或 14位 CMOS 摄像头模块发出的高速数据流(可达 54 MB/s)。
5 q& `; ~) c5 F% N接口定义如下:
6 _  w9 v9 u+ G9 w) k6 }1,数据据输入(D[0:13]),接摄像头的数据输出。
8 r& P: }& T+ K& z3 v2,水平同步(行同步)输入(HSYNC),接摄像头的HSYNC/HREF信号。 ; d" V" ?1 P% J% N# M9 R$ x  k( W
3,垂直同步(场同步)输入(VSYNC),接摄像头的VSYNC信号。 2 z$ O/ _$ k# D( K: N# s% {
4,像素时钟输入(PIXCLK),接摄像头的PCLK信号。 4 Z7 t! D& T7 x. S
2 p$ j+ }- p( W
3.jpg , X: R3 E' v; t
DCMI接收到的数据,存储在DCMI_DR寄存器(32位)里面,我们接ATK-OV2640采用8位数据宽度,所以每4个像素时钟,才会捕获完32位数据,第一个字节存放在LSB位置,第四个字节存放在MSB位置,如下图所示: . n6 u4 I+ q) O" m
2.jpg
% t$ e9 K' X  X3 x$ z# H注:低字节在前,高字节在后) }8 g3 `* P4 n. a( A
% k, ]1 k+ b) x% L
DCMI支持DMA传输,当DCMI_CR寄存器中的CAPTURE位置1时,激活DMA接口。   f+ P4 O: H! t! I+ y
像头接口每次在其寄存器(DCMI_DR)中收到一个完整的32位数据块时,都将发一个DMA请求,由DMA将DCMI_DR寄存器的值搬运到目的地址(比如LCD/SRAM)。DCMI的DMA请求是映射在DMA2通道1的数据流1上面的,所以配置DMA时,应该配置这个。9 S0 l, v: c/ K* O3 c9 r- S5 D2 w. P

! Z- Z$ w0 X+ Y+ {6 O1 ?DCMI控制寄存器(DCMI_CR)
- {# h% A9 T; i: Q. G( X+ @" O1 w
' M4 L# ^2 G9 n" m: t2 @5 a0 M1 r
1.jpg ! n, @, o' \: I; K( `* h$ U9 }/ ~# x
ENABLE,用于设置是否使能DCMI。在使能之前,必须将其他配置设置好。
: E/ x* E/ P6 P1 z% WFCRC[1:0],这两个位用于帧率控制,我们捕获所有帧,所以设置为00即可。
5 R! d. W/ O5 `8 L6 V0 |+ K: R) E9 aVSPOL,用于设置垂直同步极性,也就是VSYNC引脚上面,数据无效时的电平状态,根据前面说所,我们应该设置为0。( Q5 k  Y1 p7 ?  m7 N
HSPOL,用于设置水平同步极性,也就是HSYNC引脚上面,数据无效时的电平状态,同样应该设置为0。 : d% T3 v0 u" y
PCKPOL,用于设置像素时钟极性,我们用上升沿捕获,所以设置为1。 2 e. A# V. G6 ^. |- X( C
CM,用于设置捕获模式,我们用连续采集模式,所以设置为0即可。
+ p% C# c9 V7 ?$ }. n0 ^CAPTURE,用于使能捕获,我们设置为1。该位使能后,将激活DMA,DCMI等待第一帧开始,然后生成DMA请求将收到的数据传输到目标存储器中。(最后使能)0 a4 f6 r  G7 W. p
' j5 o0 X7 y! N/ c, h
4 ]0 \1 F) M" c" F
一.初始化时钟 + N/ g# f' `; G* ?# Y# V
二.初始化OV2640:
) K; r$ h: q* L9 M& V1. 初始化IO口
  g1 H# V$ L. x; E- R$ `! Y5 I2. 上电,并复位 ! c2 N* Q2 z+ a
3. 执行初始化序列 1 \8 s+ @3 p6 G, N/ y. s
三.设置图像窗口设置和图像输出大小设置,可以调整图像大小或者缩放模式
7 g7 _" c0 O' h3 C) Q! u/ K四.初始化DCMI: / I! y/ p: D9 v$ V
1. 配置相关引脚的复用功能,使能DCMI时钟。
! t. n1 d2 Z8 I, o3 w3 q" s2. 设置DCMI工作模式及PCLK/HSYNC/VSYNC等参数。 ' \: b( b3 k8 \, @& z
3. 设置DMA * Y4 F7 X1 w7 O  P3 ^
4. 启动DCMI传输。即设置DCMI->CR的最低位为1
; @; w1 s% K7 l/ y% Z- U

  D- u6 [: m# u5 W7 Q" X5 }4 |% A# ?- t
6 I6 z- }. J4 G9 w' x# I
赞 收藏 2 评论4 发布时间:2017-7-17 14:13

举报

4个回答
野火_firege 回答时间:2017-7-17 14:35:31
帮顶                              
埃斯提爱慕 回答时间:2017-7-18 13:42:10
提示: 作者被禁止或删除 内容自动屏蔽
xiaocheng 回答时间:2018-4-11 14:28:15
真正的学习资料
聪聪 回答时间:2018-5-3 08:49:10
这不是原子的PDF文档吗,另外我想问下,你做网络摄像头实验没有

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版