智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 3235|回复: 1
打印 上一主题 下一主题

K60 DMA读取OV7620+外部SRAM+3.2寸LCD全屏显示图像

[复制链接]

68

主题

439

帖子

2

精华

版主

Rank: 9Rank: 9Rank: 9

积分
4618
QQ
威望
2342
贡献
1290
兑换币
1175
注册时间
2009-12-24
在线时间
493 小时
跳转到指定楼层
1#
发表于 2014-3-13 15:01:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yandld 于 2014-3-13 15:13 编辑

最新需要给新板子做个摄像头的demo,选择了智能车常用的OV7620(黑白灰度输出,320*240,16MS一场中断)

关于OV7620:
OV7620 不进行任何I2C配置时的出厂频率

图像分辨率:240*320
场中断(href) 16MS 一次
行中断(vsync) 64US一次
像素中断(pclk) 频率 12.5M



OV7620 行中断,场中断 和 像素中断 时序图



程序目的是为了最大限度的解决CPU处理时,把OV7620的图像打在LCD上显示
基本思路:
1. 行中断触发DMA读取OV7620数据口(8个数据端口接到PORT A7-15上),每次MinorLoop传输320字节,MajorLoop 执行240次,这样仅仅靠DMA就可以完全自动的完成一场数据传输。无需行中断处理。
2. DMA 源地址当然是摄像头数据端口,目的地址是外部SRAM,触发源是OV7620行同步信号,也就是说DMA直接把数据从DMA搬到外部SRAM上。
3. 每当一场采集完成,触发场中断,CPU介入处理,执行用户回调函数,复位DMA,用一个简单的状态等待下一场到来之后,再启动DMA开始传输。


最终效果:

[a


软硬件平台:
硬件: 超核K60 渡鸦 开发板
软件 下载: 代码直接作为超核V2.5开发包的一部分
地址:  https://github.com/yandld/CH-K-Lib-V2.5-/archive/master.zip

使用:
在board.h中修改OV7620所对应的BSP配置(端口号引脚好等等)。然后打开串口终端,115200波特率,先输入命令"FLEXBUS"(支持TAB自动补全哦~~)。然后再输入”OV7620“
见视频:

不足:
1. 场中断仍然需要CPU处理,再以后的设计中,看看能不能把场中断也节约掉.比如用DMA中断之类的。其实也差不多。。感觉场中断是省不掉了。。
2. 对LCD实在没啥研究,本来想开窗直接DMA传送到LCD上显示的(不知道会比现在快多少倍。。),但是由于时间所限,就泡汤了。。就算当练习了一下Flexbus 驱动外部SRAM吧。。
3. 对于外部SRAM,没有写内存管理malloc 和 free。 只是简单的直接取地址了。后面争取加上。。



回复

使用道具 举报

0

主题

59

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1638
威望
823
贡献
505
兑换币
539
注册时间
2012-11-22
在线时间
155 小时
2#
发表于 2014-3-13 15:43:07 | 只看该作者
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-25 07:25 , Processed in 0.041450 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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