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

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

[复制链接]
STMCU-管管 发布时间:2021-6-17 11:24
OV2640
  H' E2 p5 I. d1 c2 D4 i7 C+ Z相关概念:% F' w( M( U, z

3 [- U0 G# P! l! z7 ]

1 Z! C# {$ H+ eUXGA,即分辨率位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)等。& I8 T2 T) L* B
PCLK,即像素时钟,一个PCLK时钟,输出一个(或半个)像素。
) S, q7 M8 u8 l6 wVSYNC,即帧同步信号。
7 d8 `- H. u, J% ]HREF /HSYNC,即行同步信号。, x9 R# |2 g6 `. v. k
简介:
' |7 j9 w! ]* p+ H  r/ l* ZOV2640是OmniVision公司生产的一颗1/4寸的CMOS UXGA(1632*1232)图像传感器。该传感器体积小、工作电压低,提供单片UXGA摄像头和影像处理器的所有功能。通过SCCB 总线控制,可以输出整帧、子采样、缩放和取窗口等方式的各种分辨率8/10位影像数据。UXGA最高15帧/秒(SVGA可达30帧,CIF可达60帧)。0 [8 o+ y" g3 w6 d
注:SCCB总线可以看成IIC总线的简化版( e& D# @. e' l7 v
% n8 Z8 N# g6 n! A: N8 H! L
4 ]1 x7 E2 l+ A  A: o, @
窗口设置:& W0 T, l: P0 R% U. Z3 O5 N

! u7 k( ^4 S/ e" `/ |
: n% D, D7 r% V& i  O3 ~5 z
传感器窗口设置(OV2640_Window_Set): b) R) A6 \# d! C: n% J
图像尺寸设置(OV2640_ImageSize_Set)6 u' \9 e7 w5 B! v  F) [' _* r* g
图像窗口设置(OV2640_ImageWin_Set)
& P/ |# L! w3 W& ^5 A+ n! P图像输出大小设置(OV2640_OutSize_Set)) @, ~, i! Q2 Y4 }
关系如下图:
! W% g; f# E$ h9 a 11.png
  Q+ n: k4 g: {& j( `2 j1 M7 p一般来说1,2采取默认设置,我们只需要调整3和4即可。4 h; C2 ]& j' N: Z2 V
7 c; {' N0 P! V3 b
* ?: D, o6 d* l$ C# U# D
时序图:  Y& I: U, E8 }, z6 R* b' s
OV2640是采取先读一行像素,再跳到下一行重新开始读取新一行像素。
5 `9 [# @: e6 q7 \4 V- e首先,我们看行输出时序:
/ z% H) U/ @7 @. {7 w 12.png $ t+ }3 V9 l5 C& V( W. T) J
图像数据在HREF为高的时候输出,当HREF变高后,每一个PCLK时钟,输出一个字节数据。比如我们采用UXGA时序,RGB565格式输出,每2个字节组成一个像素的颜色(低字节在前,高字节在后),这样每行输出总共有1600*2个PCLK周期,输出1600*2个字节
% q$ {3 ^$ X) J! {然后,看帧输出时序:
7 @( h+ u+ ^5 W3 T# o( ]6 X 13.png % ?1 @% J7 x. q, a
当HREF输出高电平时开始读取一行像素点,当低电平时不操作,重复操作即可读取一帧图像。
' b3 t' D+ r( ^$ E, W* U" oOV2640支持:RGB565或JPEG输出。RGB565输出时,时序如图所示。JPEG输出时,PCLK大大减少,且HREF不连续,数据流以0XFF,0XD8开头,以0XFF,0XD9结束,将此间数据保存为.jpg即可在电脑打开查看。) n, u% [# M3 Z! w; }

0 u/ P8 v' r3 q0 c& T) ~7 z
: m. p7 F* i4 b) D6 @/ g8 \
DCMI
, M0 g, G( E* S: eDCMI是STM32F4芯片自带的一个数字摄像头接口,该接口是一个同步并行接口,能够接收外部8位、10位、12位或 14位 CMOS 摄像头模块发出的高速数据流(可达 54 MB/s)。8 e2 [6 I9 _& \- P) x
接口定义如下:
" A0 e+ w" `# e1,数据据输入(D[0:13]),接摄像头的数据输出。+ q+ A- k$ z  T: F
2,水平同步(行同步)输入(HSYNC),接摄像头的HSYNC/HREF信号。5 @8 x3 A# Q" b3 R2 T! [8 W# ^
3,垂直同步(场同步)输入(VSYNC),接摄像头的VSYNC信号。5 Q4 `3 k: H- k0 N& E! ~$ Z7 n' T4 q
4,像素时钟输入(PIXCLK),接摄像头的PCLK信号。
  p2 E) p3 n; R5 M2 Y7 z 14.png ' x9 L9 A/ m( w5 D1 x* x0 u
DCMI接收到的数据,存储在DCMI_DR寄存器(32位)里面,我们接ATK-OV2640采用8位数据宽度,所以每4个像素时钟,才会捕获完32位数据,第一个字节存放在LSB位置,第四个字节存放在MSB位置,如下图所示:$ P- s1 \2 ?/ b9 N+ X; T5 W( D
15.png
$ p( ]  _6 A% R% L# _5 `注:低字节在前,高字节在后$ ^% b  O7 z8 d9 @* }7 r
; O0 S; M5 {& ^7 I$ j: s" P4 ?
8 h5 a& H, Y5 x- F0 ?
DCMI支持DMA传输,当DCMI_CR寄存器中的CAPTURE位置1时,激活DMA接口。
) U0 C/ T3 Q9 y: E: k) i像头接口每次在其寄存器(DCMI_DR)中收到一个完整的32位数据块时,都将发一个DMA请求,由DMA将DCMI_DR寄存器的值搬运到目的地址(比如LCD/SRAM)。DCMI的DMA请求是映射在DMA2通道1的数据流1上面的,所以配置DMA时,应该配置这个。! b% a; Z4 H, B: F2 g/ Y) q
" o. Q. \1 f) v1 r+ |- z

$ Q3 L; q% s+ ?2 k+ g# V+ U7 ~DCMI控制寄存器(DCMI_CR), L% w  G, [7 n: s" k
16.png
8 Y' f, u' }' e7 P- h, g2 f" G$ c! gENABLE,用于设置是否使能DCMI。在使能之前,必须将其他配置设置好。
; p/ h/ F2 D  G, Y: M$ d6 r+ @+ FFCRC[1:0],这两个位用于帧率控制,我们捕获所有帧,所以设置为00即可。# H8 M- i0 o0 K! h6 K5 z* ]" c
VSPOL,用于设置垂直同步极性,也就是VSYNC引脚上面,数据无效时的电平状态,根据前面说所,我们应该设置为0。/ J6 f, j1 M6 {& q, Z0 n- A5 I
HSPOL,用于设置水平同步极性,也就是HSYNC引脚上面,数据无效时的电平状态,同样应该设置为0。- n0 v. z7 a% @" s- E7 D: p
PCKPOL,用于设置像素时钟极性,我们用上升沿捕获,所以设置为1。$ ?/ I. x& K- P- j6 k1 d
CM,用于设置捕获模式,我们用连续采集模式,所以设置为0即可。
9 F( ]+ `& Y" }! k$ uCAPTURE,用于使能捕获,我们设置为1。该位使能后,将激活DMA,DCMI等待第一帧开始,然后生成DMA请求将收到的数据传输到目标存储器中。(最后使能)
: |; f$ y- E" d7 k' p$ _: ^; D+ X; s7 C8 T# i

- U) g, |" C8 y3 @8 A4 z摄像头操作:
4 x7 O9 `8 h& h, i  M! N' k3 @% u# d; N: Q3 ?
7 L) ~9 g" }: |* a3 y# o
一.初始化时钟, d3 S0 v6 r& E7 T; [  k' O7 [8 u, ]
二.初始化OV2640:, q$ i5 \" |. a$ E7 ^( w
1. 初始化IO口- q3 y1 l; [/ ^+ ^2 Y% H
2. 上电,并复位
8 }/ r, T4 B' U- ]4 W% ?3. 执行初始化序列0 @% Q4 x' H: X7 X) J  p
三.设置图像窗口设置和图像输出大小设置,可以调整图像大小或者缩放模式
2 E! L: \4 K, T- X四.初始化DCMI:2 [0 N6 y  v, {9 N5 V& E/ U
1. 配置相关引脚的复用功能,使能DCMI时钟。3 a2 S7 c7 j& w5 \- K
2. 设置DCMI工作模式及PCLK/HSYNC/VSYNC等参数。1 f# s5 j% H  M! t! L/ r
3. 设置DMA
* v* c! A. N% c0 w4 j$ p6 T4. 启动DCMI传输。即设置DCMI->CR的最低位为1
- S) z+ e) k+ ]2 C& q
2 _  R3 R8 u5 x3 p+ ?5 _. I5 Q0 i9 L! x/ }4 ?! l
赞 收藏 评论0 发布时间:2021-6-17 11:24

举报

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