智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 17564|回复: 28
打印 上一主题 下一主题

K60+DMA+DSP对摄像头数据的采集---每秒60帧

  [复制链接]

4

主题

16

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
383
威望
227
贡献
86
兑换币
6
注册时间
2012-4-27
在线时间
35 小时
毕业学校
万里学院
跳转到指定楼层
1#
发表于 2012-6-5 14:47:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 laoylhuli 于 2012-6-5 14:47 编辑

闲来无聊写一下关于我对摄像头数据采集处理的设计
      K60的内核是Cortex-M4,不得不说这个内核比M3有了很大的长进,特别是核心对dsp内核的支持。玩过STM32的朋友知道32上也有dsp库,但最大的缺点是M3内核模拟的,速度算不上快,但比一般自己写代码快很多。
      下面来讲一下怎么读取摄像头数据,这个是关键只有获得了有效的数据才能处理啊。我用的摄像头是OV7620,买来的时候基本是出厂设置。OV7620视频输出格式通过YCrCb格式,这里我们只用Y通道,里面输出的是灰度。
      摄像头输出通过VS(场同步信号)、HS(行同步信号)、PCLK(像素时钟同步信号),和Y0~Y7组成。用示波器观察PCLK的时间是74ns,也就是13.5M的速度(用杜邦线小心,摄像头架的很高,线很长衰减很厉害)。这里我采用了中断和DMA相结合(有DMA这么好的资源干嘛不用呢),没接触过的人可能不知道那时什么功能,其实很简单只要你给它设置好相应的参数,它就会不通过CPU直接将你的数据从外设和内存之间相互搬运,或者内存到内存的搬运,什么时候搬运你就要告诉他。在程序开始的时候我们设置两个中断(为了保证必要的速度最好设置在两个不同的中断号中),一个是VS中断,一个是HS中断,并且配置DMA(建立外设和内存的搬运过程,搬运次数,触发方式)触发采用PCLK,并且使能VS中断,失能掉HS和DMA中断。
      (1)当一帧图像开始传输时VS触发中断(这里不判断奇偶场),在中断中我们初始化一些行计数之类的变量,并且失能VS开启HS中断。
      (2)当VS之后的第一个HS的到来表示第一行触发HS中断,在此你就要判断这一行的数据你是否需要(如果我们把一幅图像的所有数据都读进来RAM不够吧)。之后没来一个HS触发一次中断判断这一行你是否需要,如果需要就使能DMA传输和中断。当判断行计数大于你要的行数后,失能HS,来一个标志位说明一帧图像已经接收完毕。
      (3)DMA中断中其实很简单,开启一次DMA的传输和中断后,摄像头每来一个PCLK就会搬运一次数据到指定的RAM中,当一次搬运完你所设置的搬运次数后进入DMA中断,在中断中你要及时的将RAM中的数据移走,防止被覆盖,这里需要注意一下为了尽可能的快速移走数据你要好好考虑下你要搬运的次数。
      (4)上面提到的那个标志位就要用在主函数中,当判断标志位被标志后,我们要开始进行处理,滤波、黑线的判断、十字路口、停车是必不可少的。
       滤波和黑线的判断我们可以使用自带的DSP内核来完成,关于cortex-M4中的dsp内核,可以登入arm的官网下载相关资料  http://www.onarm.com/cmsis/download/   里面的库提供很丰富的处理方法。

评分

1

查看全部评分

0

主题

6

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
446
威望
290
贡献
104
兑换币
17
注册时间
2012-2-22
在线时间
26 小时
毕业学校
武汉科技大学
2#
发表于 2012-6-6 19:40:41 | 只看该作者
思路很清晰,我开始也想用DSP处理滤波和图像,但是后来发现DSP专攻音频
对图像的数据处理貌似没什么作用,用不上。。
回复 支持 反对

使用道具 举报

0

主题

16

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
370
威望
249
贡献
89
兑换币
8
注册时间
2012-3-1
在线时间
16 小时
毕业学校
上海海事大学
3#
发表于 2012-6-6 21:06:23 | 只看该作者
你的K60 的具体型号是多少?定点型的K60没有DSP吧?
回复 支持 反对

使用道具 举报

4

主题

16

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
383
威望
227
贡献
86
兑换币
6
注册时间
2012-4-27
在线时间
35 小时
毕业学校
万里学院
4#
 楼主| 发表于 2012-6-6 22:20:53 | 只看该作者
Horizon3261 发表于 2012-6-6 21:06
你的K60 的具体型号是多少?定点型的K60没有DSP吧?

M4内置dsp内核的  详细的可以百度百科对cortex-m4的介绍很详细

回复 支持 反对

使用道具 举报

0

主题

11

帖子

0

精华

注册会员

Rank: 2

积分
156
威望
116
贡献
30
兑换币
0
注册时间
2012-5-20
在线时间
5 小时
毕业学校
第一小学
5#
发表于 2012-6-7 17:38:45 | 只看该作者
孩子们哪!科普一下,cortex的dsp只是加了几条专用的指令而已,不是包治百病的良药!
回复 支持 反对

使用道具 举报

3

主题

68

帖子

0

精华

高级会员

Rank: 4

积分
500
QQ
威望
391
贡献
79
兑换币
11
注册时间
2011-3-17
在线时间
15 小时
6#
发表于 2012-6-7 18:10:58 | 只看该作者
高手们,K60采样时候,用DMA中断时候,可是为什么把pclk 连接到c0 ,程序就死在dma里了,看了一下pclk大致的周期是74ns !!DMA怎么采样啊??跪求详解啊???
回复 支持 反对

使用道具 举报

13

主题

57

帖子

0

精华

高级会员

Rank: 4

积分
718
威望
448
贡献
128
兑换币
0
注册时间
2012-2-18
在线时间
71 小时
7#
发表于 2012-6-7 18:39:36 | 只看该作者
laoylhuli 发表于 2012-6-6 22:20
M4内置dsp内核的  详细的可以百度百科对cortex-m4的介绍很详细

你们用的是这个芯片吗?
我们用的是MCP,32位的,发现图像处理得很乱。
我们学校另一组用的是K60的,也是图像很乱。
回复 支持 反对

使用道具 举报

4

主题

16

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
383
威望
227
贡献
86
兑换币
6
注册时间
2012-4-27
在线时间
35 小时
毕业学校
万里学院
8#
 楼主| 发表于 2012-6-7 19:17:27 | 只看该作者
深海· 发表于 2012-6-7 18:39
你们用的是这个芯片吗?
我们用的是MCP,32位的,发现图像处理得很乱。
我们学校另一组用的是K60的, ...

我用的是这个芯片  图像采集出来很好啊  最重要的是对摄像头时序的问题,里面用到了两个中断你什么时候去清除中断标志位是个非常关键的问题。清不好中断标志位会出现模糊的现象

回复 支持 反对

使用道具 举报

13

主题

57

帖子

0

精华

高级会员

Rank: 4

积分
718
威望
448
贡献
128
兑换币
0
注册时间
2012-2-18
在线时间
71 小时
9#
发表于 2012-6-7 19:22:09 | 只看该作者
laoylhuli 发表于 2012-6-7 19:17
我用的是这个芯片  图像采集出来很好啊  最重要的是对摄像头时序的问题,里面用到了两个中断你什么时候去 ...

你们的那个芯片,AD转换后的接受信号口的电压是多少?
就是没有接AD芯片是的电压,我的这个芯片有2.9V左右。而128的芯片是0V。

回复 支持 反对

使用道具 举报

13

主题

57

帖子

0

精华

高级会员

Rank: 4

积分
718
威望
448
贡献
128
兑换币
0
注册时间
2012-2-18
在线时间
71 小时
10#
发表于 2012-6-7 19:24:21 | 只看该作者
laoylhuli 发表于 2012-6-7 19:17
我用的是这个芯片  图像采集出来很好啊  最重要的是对摄像头时序的问题,里面用到了两个中断你什么时候去 ...

你的芯片那几个口是多少V?
这个要编程设置吗?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-26 13:54 , Processed in 0.106361 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表