查看: 6351|回复: 5

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

[复制链接]

该用户从未签到

37

主题

327

帖子

1

高级会员

Rank: 4

积分
886
最后登录
2023-7-19
发表于 2014-3-13 15:11:36 | 显示全部楼层 |阅读模式
本帖最后由 yandld-362878 于 2015-2-27 23:06 编辑


            
本帖最后由 yandld 于 2014-3-13 15:00 编辑

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

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

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

            
            

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

            
            
            程序目的是为了最大限度的解放CPU,CPU只有在一场结束时才切入处理,提取摄像头buffer ,把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开始传输。
            
            
            
最终效果:
            
                          

                        [size=0.83em]            DSCF8316.JPG (152.27 KB, 下载次数: 2)
            下载附件
            [color=#999999 !important]半小时前 上传

            

            
            
                        
            
            软硬件平台:
            硬件: 超核K60 渡鸦 开发板
            软件 下载: 代码直接作为超核V2.5开发包的一部分
            地址:  http://git.oschina.net/yandld/CH-K-Lib
            
            使用:
            在board.h中修改OV7620所对应的BSP配置(端口号引脚好等等)。然后打开串口终端,115200波特率,
            先输入命令"FLEXBUS"(支持TAB自动补全哦~~)。然后再输入”OV7620“
            这里还有一个视频,里面介绍了使用方法:
            
            https://v.youku.com/v_show/id_XNjg0NjI3NzE2.html
            

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

使用道具 举报

该用户从未签到

131

主题

835

帖子

0

金牌会员

Rank: 6Rank: 6

积分
10021
最后登录
1970-1-1
发表于 2014-3-13 17:24:58 | 显示全部楼层

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

字儿太小了
回复 支持 反对

使用道具 举报

该用户从未签到

16

主题

705

帖子

0

金牌会员

Rank: 6Rank: 6

积分
1745
最后登录
1970-1-1
发表于 2014-3-20 14:13:26 | 显示全部楼层

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

看不见图片,字也好小,不过还是感谢楼主分享。
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

1

帖子

0

新手上路

Rank: 1

积分
6
最后登录
2014-12-21
发表于 2014-12-20 21:19:11 | 显示全部楼层
楼主你好,我把你的程序改了一下,场中断后将图像用串口发到上位机,但是图像只能采集到一角。求教原因,谢谢。
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

1

帖子

0

新手上路

Rank: 1

积分
10
最后登录
2015-10-21
发表于 2015-1-23 12:08:14 | 显示全部楼层
回复 支持 反对

使用道具 举报

该用户从未签到

37

主题

327

帖子

1

高级会员

Rank: 4

积分
886
最后登录
2023-7-19
 楼主| 发表于 2015-2-2 10:50:48 | 显示全部楼层
迁移到 oschina 上了。 http://git.oschina.net/yandld/CH-K-Lib
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-22 10:24 , Processed in 0.099381 second(s), 24 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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