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

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

[复制链接]
Savy1314 发布时间:2017-7-17 14:13
STM32学习笔记之摄像头实验(OV2640)
OV2640) I/ H5 L3 n. ^

& M5 }5 l! a$ e, @: v

5 k% @; H1 E  I3 H1 y相关概念:) }# J# \( t4 t: U+ k3 X/ G

) u7 `" X& J9 H/ {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)等。# `4 @0 K1 K) E# {4 q
2.PCLK,即像素时钟,一个PCLK时钟,输出一个(或半个)像素。  B8 ~* w: W' v3 Q9 @( n3 T
3.VSYNC,即帧同步信号。
& m" ^* x2 |  a2 U* @) S) H' {& X8 L7 |4.HREF /HSYNC,即行同步信号。
8 |' n" i* k/ O! i4 o6 ~# Q1 E2 u6 I3 X

- o" H# X/ s, q3 s简介: - ]) e+ w/ O5 |2 m. V: o6 i

) P6 ]' _: F& @# y. wOV2640是OmniVision公司生产的一颗1/4寸的CMOS UXGA(1632*1232)图像传感器。该传感器体积小、工作电压低,提供单片UXGA摄像头和影像处理器的所有功能。通过SCCB 总线控制,可以输出整帧、子采样、缩放和取窗口等方式的各种分辨率8/10位影像数据。UXGA最高15帧/秒(SVGA可达30帧,CIF可达60帧)。
5 S$ c2 m8 _3 t2 \  r2 m( s7 g注:SCCB总线可以看成IIC总线的简化版8 t# n$ A% G/ q- Z6 q
: i4 \8 y; j. `& G* v# V
1 n* b: Q; ^) G1 ]
窗口设置:( j7 b7 W1 L# n! _- e4 y% Z
, b3 n9 i3 y( q- x0 [  J0 O: t* b
" y( c$ G6 u/ n% U& L7 W# u6 E
1.传感器窗口设置(OV2640_Window_Set)
" L; ~. F. Y. Q/ F, {' I. ?2.图像尺寸设置(OV2640_ImageSize_Set)
) J# V  j! J+ t+ k/ R0 b3.图像窗口设置(OV2640_ImageWin_Set)
: }; Z3 d9 ?8 J% B- T4 ?, {  b4.图像输出大小设置(OV2640_OutSize_Set)
# j+ o. I7 A) ^+ J5 [( ~' H+ v8 Q  v  o- o' s) g, [, n' E+ B& A2 i

- k& c6 r3 d" O4 h  t关系如下图: 0 |$ q" a0 F$ M! o) r. K; V3 ~5 S
6.jpg
/ E) A% n, t3 e' N( v一般来说1,2采取默认设置,我们只需要调整3和4即可。
  }5 U, I1 b( ^3 T3 @9 S& M. B0 L) s, n4 r; n
# Y7 R1 T  }& C, H2 }' u2 ~
时序图: 7 J$ \1 f5 E7 o) J, x/ S

* X5 p- o# O1 [3 lOV2640是采取先读一行像素,再跳到下一行重新开始读取新一行像素。
2 q: [: J8 v0 N9 T首先,我们看行输出时序:
) h' P- |' j# y! j
7 S9 U: P3 S3 ^4 c: T" Y' Z" ^ 5.jpg 5 U  R  {# T+ P4 X! u- J7 w
图像数据在HREF为高的时候输出,当HREF变高后,每一个PCLK时钟,输出一个字节数据。比如我们采用UXGA时序,RGB565格式输出,每2个字节组成一个像素的颜色(低字节在前,高字节在后),这样每行输出总共有1600*2个PCLK周期,输出1600*2个字节
9 u4 t! a, v8 y- t* t, x8 f( _然后,看帧输出时序:
8 Q/ D4 l( L7 x+ |! v1 a, l7 N' ?+ q! u  } 4.jpg
! a8 D1 b, T3 d9 R当HREF输出高电平时开始读取一行像素点,当低电平时不操作,重复操作即可读取一帧图像。
3 w2 q5 U- X% X) u7 x6 POV2640支持:RGB565或JPEG输出。RGB565输出时,时序如图所示。JPEG输出时,PCLK大大减少,且HREF不连续,数据流以0XFF,0XD8开头,以0XFF,0XD9结束,将此间数据保存为.jpg即可在电脑打开查看。) ?3 v: E9 H! M0 K. M4 Z3 z

7 @' N7 u; `9 |/ @- @, t/ pDCMI& H) N- W7 m; R; v. u2 T
DCMI是STM32F4芯片自带的一个数字摄像头接口,该接口是一个同步并行接口,能够接收外部8位、10位、12位或 14位 CMOS 摄像头模块发出的高速数据流(可达 54 MB/s)。
: z" `3 R: M6 T/ S3 T! [; T) g接口定义如下:
. V# |- d6 @5 w& h1 o1,数据据输入(D[0:13]),接摄像头的数据输出。 2 z' G% |7 |7 l8 A1 ~- C
2,水平同步(行同步)输入(HSYNC),接摄像头的HSYNC/HREF信号。 , J2 Y' J! V' y: f% M
3,垂直同步(场同步)输入(VSYNC),接摄像头的VSYNC信号。
& [8 J, E7 m/ `9 u0 l% k6 F- P4,像素时钟输入(PIXCLK),接摄像头的PCLK信号。
4 t3 r* o* N' N# n! U' p1 `! D
0 G% O0 U& t. y: L+ m2 m 3.jpg ) ~; N9 `9 z) |( h$ P
DCMI接收到的数据,存储在DCMI_DR寄存器(32位)里面,我们接ATK-OV2640采用8位数据宽度,所以每4个像素时钟,才会捕获完32位数据,第一个字节存放在LSB位置,第四个字节存放在MSB位置,如下图所示: + i5 q  [6 X0 h' _: g: T  y, d
2.jpg 4 `* g: c) M$ N
注:低字节在前,高字节在后  L! a1 `2 q# J9 _$ @
5 L, h; l7 j2 h2 ~; |* P9 G
DCMI支持DMA传输,当DCMI_CR寄存器中的CAPTURE位置1时,激活DMA接口。 & @4 V8 ~  ]4 x# z, O
像头接口每次在其寄存器(DCMI_DR)中收到一个完整的32位数据块时,都将发一个DMA请求,由DMA将DCMI_DR寄存器的值搬运到目的地址(比如LCD/SRAM)。DCMI的DMA请求是映射在DMA2通道1的数据流1上面的,所以配置DMA时,应该配置这个。; P1 T; l- G, C& t: c& A$ t
/ `  U8 n. j. C) ~
DCMI控制寄存器(DCMI_CR)
( _9 c) U  R! v
9 U# _& y9 h* }0 Q6 |
1.jpg
* J& Z! s9 ~8 M* c3 R1 [ENABLE,用于设置是否使能DCMI。在使能之前,必须将其他配置设置好。 * S3 W7 @4 g: Q$ f+ v4 J1 _
FCRC[1:0],这两个位用于帧率控制,我们捕获所有帧,所以设置为00即可。 / Y5 U8 w( T8 j* @3 n/ o) O1 ^- a, r
VSPOL,用于设置垂直同步极性,也就是VSYNC引脚上面,数据无效时的电平状态,根据前面说所,我们应该设置为0。
' E0 {, n4 a- qHSPOL,用于设置水平同步极性,也就是HSYNC引脚上面,数据无效时的电平状态,同样应该设置为0。
9 ]" t+ o6 K/ V+ x6 dPCKPOL,用于设置像素时钟极性,我们用上升沿捕获,所以设置为1。 . q+ Q8 u8 @2 H) p: g
CM,用于设置捕获模式,我们用连续采集模式,所以设置为0即可。
6 [4 _; h" h% V6 z9 sCAPTURE,用于使能捕获,我们设置为1。该位使能后,将激活DMA,DCMI等待第一帧开始,然后生成DMA请求将收到的数据传输到目标存储器中。(最后使能)
, w4 y9 a( d6 `/ R  B8 N
- }/ r! v( c6 H! ]  n; U! V* O* h( @* _6 I
一.初始化时钟
& f* C7 W, c4 d二.初始化OV2640:
- v2 M2 k( \4 R, T$ y1. 初始化IO口
5 }& K5 T" ]4 M# b* p2. 上电,并复位
# A/ S( C5 q2 k4 q' L$ E7 ]5 U. P3. 执行初始化序列 + k" N2 D) ~4 r$ P! f3 Z; B) \" t
三.设置图像窗口设置和图像输出大小设置,可以调整图像大小或者缩放模式
0 v" c$ p9 k, b$ B$ M% s2 u四.初始化DCMI: ! O) C* S) D8 o% _1 b$ r; O
1. 配置相关引脚的复用功能,使能DCMI时钟。 6 Z9 S9 c' x% _6 P9 |; ]
2. 设置DCMI工作模式及PCLK/HSYNC/VSYNC等参数。
2 V: n7 L' U; |3 x' m4 Z  C3. 设置DMA
) B- l* e: e. l; y8 O4. 启动DCMI传输。即设置DCMI->CR的最低位为1
4 L3 X7 E7 F. H: O& M' \

+ ^3 U9 C1 X. Q$ ]6 P% {
5 v1 q1 a* |! r4 u2 O" ~+ S/ O: P2 \$ {) C. x- I" Q2 V
收藏 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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版