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

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

[复制链接]
STMCU-管管 发布时间:2021-6-17 11:24
OV2640
$ X2 n5 _. p, d1 |7 n# a相关概念:' l7 J7 H+ I( s3 @" l  D
( h) {8 P5 _  |$ R# l8 {! R5 n

3 _  I; c* v# M1 C- L$ p3 KUXGA,即分辨率位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)等。6 ^; o7 Z0 d8 ]& w$ e  Q
PCLK,即像素时钟,一个PCLK时钟,输出一个(或半个)像素。6 W- W- Z9 U8 T* e
VSYNC,即帧同步信号。% d" e; L- D9 o! J7 S# o
HREF /HSYNC,即行同步信号。
, V! j5 M3 m4 y简介:
, k* x( g, {) N7 O6 F4 i3 EOV2640是OmniVision公司生产的一颗1/4寸的CMOS UXGA(1632*1232)图像传感器。该传感器体积小、工作电压低,提供单片UXGA摄像头和影像处理器的所有功能。通过SCCB 总线控制,可以输出整帧、子采样、缩放和取窗口等方式的各种分辨率8/10位影像数据。UXGA最高15帧/秒(SVGA可达30帧,CIF可达60帧)。- ~$ ?2 l' `; q6 l
注:SCCB总线可以看成IIC总线的简化版& y$ ?* Z4 B; j* H7 J% Y, x

  F: F! H6 i2 F2 L0 k3 _# U. }
, w( w* n4 ~) w+ O1 e+ x$ w' Z
窗口设置:  b  i  E7 S  o, a( R  v/ K

" P0 ?* R8 J) _. A  x' K. D, u
2 [( @7 F2 U; z* I4 N) o
传感器窗口设置(OV2640_Window_Set)
' T2 x+ w7 r: n2 b% l6 s图像尺寸设置(OV2640_ImageSize_Set)
! Y% E( b. J8 x7 ]6 P8 L$ X图像窗口设置(OV2640_ImageWin_Set)
  x% M, |, n& f" y9 ?+ b图像输出大小设置(OV2640_OutSize_Set)( ?1 p' @( q% t( [
关系如下图:
1 {; H$ {: }- e! F5 |  G1 A 11.png / A& ^+ u6 a# J% T- A: A% I
一般来说1,2采取默认设置,我们只需要调整3和4即可。
( p( k: {" p. p: B5 c" Y1 R4 m" o2 Z( s: m, J6 D
4 _/ q- t; L9 k3 C9 f
时序图:2 t; b0 m8 H& A  {& ~& s9 e) ~
OV2640是采取先读一行像素,再跳到下一行重新开始读取新一行像素。
+ o0 Y7 s$ W% v  K2 \首先,我们看行输出时序:$ X$ Y% v: W9 j. s5 h6 o/ F6 e
12.png
0 D! @" X1 e6 r4 r; H0 l' W图像数据在HREF为高的时候输出,当HREF变高后,每一个PCLK时钟,输出一个字节数据。比如我们采用UXGA时序,RGB565格式输出,每2个字节组成一个像素的颜色(低字节在前,高字节在后),这样每行输出总共有1600*2个PCLK周期,输出1600*2个字节6 ^5 ~8 @5 n) i9 v. B  m
然后,看帧输出时序:* L+ u* Y  h$ ~6 ^4 J& n1 O3 s% R
13.png
1 q4 C8 r& x! p' o, C# d3 Z6 \& `当HREF输出高电平时开始读取一行像素点,当低电平时不操作,重复操作即可读取一帧图像。+ @+ A* U5 z4 q% [/ |
OV2640支持:RGB565或JPEG输出。RGB565输出时,时序如图所示。JPEG输出时,PCLK大大减少,且HREF不连续,数据流以0XFF,0XD8开头,以0XFF,0XD9结束,将此间数据保存为.jpg即可在电脑打开查看。2 C3 B$ M' r6 N! O9 v) |  N0 `- R0 l
2 C% c8 X9 R( G3 K
3 i8 n% Z* T3 x
DCMI
5 W- |- D  Y) pDCMI是STM32F4芯片自带的一个数字摄像头接口,该接口是一个同步并行接口,能够接收外部8位、10位、12位或 14位 CMOS 摄像头模块发出的高速数据流(可达 54 MB/s)。; L" [/ A4 C. R5 m
接口定义如下:+ L' X7 c1 u3 `4 p
1,数据据输入(D[0:13]),接摄像头的数据输出。
8 o! ]$ J. U' K, H7 u# H1 w2,水平同步(行同步)输入(HSYNC),接摄像头的HSYNC/HREF信号。( Y8 d, }* J; k6 h1 J
3,垂直同步(场同步)输入(VSYNC),接摄像头的VSYNC信号。
+ [. J3 }% J; H$ y4 G4,像素时钟输入(PIXCLK),接摄像头的PCLK信号。
8 K  H: h+ g; r4 d2 E3 F 14.png
. W1 r2 R" ?' c$ VDCMI接收到的数据,存储在DCMI_DR寄存器(32位)里面,我们接ATK-OV2640采用8位数据宽度,所以每4个像素时钟,才会捕获完32位数据,第一个字节存放在LSB位置,第四个字节存放在MSB位置,如下图所示:
) S, p5 \" S9 n% [0 K 15.png ! [& q1 |& ~* T/ O3 {
注:低字节在前,高字节在后
- M% d, _% ]. _$ o; s
6 f0 H4 s8 P0 Y8 ~, Q% q5 \9 v
- _$ j3 p" q/ I$ \( M8 d1 E
DCMI支持DMA传输,当DCMI_CR寄存器中的CAPTURE位置1时,激活DMA接口。2 d1 }6 t4 R( q, G6 y$ b
像头接口每次在其寄存器(DCMI_DR)中收到一个完整的32位数据块时,都将发一个DMA请求,由DMA将DCMI_DR寄存器的值搬运到目的地址(比如LCD/SRAM)。DCMI的DMA请求是映射在DMA2通道1的数据流1上面的,所以配置DMA时,应该配置这个。
8 B" X' [  [# i2 J. Y, f2 o4 d
" l! X! m# G! n4 f0 k5 H3 I, c4 B' F

9 D) m$ F( D. z, P9 x; BDCMI控制寄存器(DCMI_CR)
0 }) c! _. c; w( ^) c7 K8 o 16.png : H+ x3 O. A& W( u& a6 K# R
ENABLE,用于设置是否使能DCMI。在使能之前,必须将其他配置设置好。
9 b* n9 q/ ?0 k. e# N% lFCRC[1:0],这两个位用于帧率控制,我们捕获所有帧,所以设置为00即可。/ B+ Q. e* d0 u3 h( q. _: L9 D6 E
VSPOL,用于设置垂直同步极性,也就是VSYNC引脚上面,数据无效时的电平状态,根据前面说所,我们应该设置为0。% u; e, d& W2 q. S# o/ V
HSPOL,用于设置水平同步极性,也就是HSYNC引脚上面,数据无效时的电平状态,同样应该设置为0。7 s6 o. G5 M9 t5 Y$ S6 a
PCKPOL,用于设置像素时钟极性,我们用上升沿捕获,所以设置为1。
% J  g& C% Y- T/ t& g6 {CM,用于设置捕获模式,我们用连续采集模式,所以设置为0即可。4 u( F3 t2 ?8 l7 i) N1 x, m: \
CAPTURE,用于使能捕获,我们设置为1。该位使能后,将激活DMA,DCMI等待第一帧开始,然后生成DMA请求将收到的数据传输到目标存储器中。(最后使能)
, |# u5 v' Q$ p* ^1 ]5 [& H3 e$ c# h$ ?" @# S3 i

( V9 v. x1 J& |3 g4 C- ?摄像头操作:& u- q* y" P0 Z% M
7 d* d3 y- L" c( z6 o: H% }8 t
( v% I9 o: V. p
一.初始化时钟
4 O4 a6 R& x) ?" R二.初始化OV2640:) c6 t* m/ `$ v: v5 k  D5 S
1. 初始化IO口
& Z$ s: \* z- h2 ], ?+ H2. 上电,并复位
1 |/ k; H  t/ X+ C3. 执行初始化序列
2 u, U( }% \' E: l三.设置图像窗口设置和图像输出大小设置,可以调整图像大小或者缩放模式
- |# d7 F) q1 h( H1 Y2 f7 F/ M四.初始化DCMI:0 D; I* L; M% e( v$ D2 n1 U0 U8 a
1. 配置相关引脚的复用功能,使能DCMI时钟。+ z9 ?8 o$ {% z! z  c
2. 设置DCMI工作模式及PCLK/HSYNC/VSYNC等参数。
1 |- N; q" y4 D, q7 F9 a' R+ Q+ d0 r3. 设置DMA
3 `- V0 a+ y5 `8 ?4. 启动DCMI传输。即设置DCMI->CR的最低位为1
& c6 {  ?* L# U/ F# O. B- g5 Y" w1 i
# v1 w. I, R% V/ V$ ~1 w; |
收藏 评论0 发布时间:2021-6-17 11:24

举报

0个回答

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版