OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8311|回复: 7

429的摄像头DMA配置问题

[复制链接]

3

主题

13

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2014-7-7
在线时间
1 小时
发表于 2014-7-16 11:09:15 | 显示全部楼层 |阅读模式
5金钱
7寸屏显示,OV7670想直接接收 640*480的数据,COPY到SDRAM指定区域,可是DMA最大数据量<(640*480*2),显示不全,难道要开3个通道来搞定?
另外就是OV7670显示不良,颜色不对,画面也不同步,有时重新设置一下VSYNC,HSYNC,和CLK极性,就正常了,试了网上好几版7670参数(包括原子的)。
MCO1直接输出24M时钟过去的,开始怀疑频率高,信号不稳定的问题,降到12M,6M,都没改变,迷惑了一天了

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

13

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2014-7-7
在线时间
1 小时
 楼主| 发表于 2014-7-16 12:03:27 | 显示全部楼层

小画面是320*240的,感觉还是DMA设置的问题,图片里面,手变成黑色了,而且画面一直断开+移动,

回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-7-16 23:31:45 | 显示全部楼层
DMA设置成单个传输长度,内存地址自增 试试.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

13

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2014-7-7
在线时间
1 小时
 楼主| 发表于 2014-7-17 10:14:49 | 显示全部楼层
外设地址不变,MEM增加,这是肯定的
各种长度都试过,没有OK的,试过对BUFFER图像进行565数据,高低字节反过来,图像会正常,但颜色不对,蓝变红
继续搞。。。。。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-7-17 10:26:11 | 显示全部楼层
[mw_shl_code=c,true]//DCMI DMA配置 //memaddr:存储器地址 将要存储摄像头数据的内存地址(也可以是外设地址) //memsize:存储器长度 0~65535 //memblen:存储器位宽 0,8位,1,16位,2,32位 //meminc:存储器增长方式,0,不增长;1,增长 void DCMI_DMA_Init(u32 memaddr,u16 memsize,u8 memblen,u8 meminc) { RCC->AHB1ENR|=1<<22; //DMA2时钟使能 while(DMA2_Stream1->CR&0X01);//等待DMA2_Stream1可配置 DMA2->LIFCR|=0X3D<<6*1; //清空通道1上所有中断标志 DMA2_Stream1->FCR=0X0000021;//设置为默认值 DMA2_Stream1->AR=(u32)&DCMI->DR;//外设地址为CMI->DR DMA2_Stream1->M0AR=memaddr; //memaddr作为目标地址 DMA2_Stream1->NDTR=memsize; //传输长度为memsize DMA2_Stream1->CR=0; //先全部复位CR寄存器值 DMA2_Stream1->CR|=0<<6; //外设到存储器模式 DMA2_Stream1->CR|=1<<8; //循环模式 DMA2_Stream1->CR|=0<<9; //外设非增量模式 DMA2_Stream1->CR|=meminc<<10; //存储器增量模式 DMA2_Stream1->CR|=2<<11; //外设数据长度:32位 DMA2_Stream1->CR|=memblen<<13; //存储器位宽,8/16/32bit DMA2_Stream1->CR|=2<<16; //高优先级 DMA2_Stream1->CR|=0<<21; //外设突发单次传输 DMA2_Stream1->CR|=0<<23; //存储器突发单次传输 DMA2_Stream1->CR|=1<<25; //通道1 DCMI通道 DMA2_Stream1->FCR|=1<<2; //FIFO模式 DMA2_Stream1->FCR|=3<<0; //使用全FIFO } [/mw_shl_code]
这是我的配置:
[mw_shl_code=c,true] DCMI_DMA_Init((u32)&LCD->LCD_RAM,1,1,0);//DCMI DMA配置 [/mw_shl_code]
这句话之后,OV的数据,就直接到LCD屏了.
LCD是挂在外部总线的,如果将 [mw_shl_code=c,true]DCMI_DMA_Init的参数设置为外部存储器,并设置存储器增量模式,那么就可以存储到外部存储器.[/mw_shl_code] [mw_shl_code=c,true] [/mw_shl_code] [mw_shl_code=c,true]不过有个bug,我用407,用内部SRAM,可以正常的接受数据,但是用外部SRAM,就有问题(大部分数据正常,有部分数据丢失),比较郁闷.一直没解决.[/mw_shl_code] [mw_shl_code=c,true] [/mw_shl_code]
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

13

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2014-7-7
在线时间
1 小时
 楼主| 发表于 2014-7-17 10:29:41 | 显示全部楼层
我现在用的就是SDRAM做显示内存,主画面和7670的都是的
高低字节反了的原因估计是,7670是先送高字节(R4-R0,G5-G3),送到DMA了会存在低字节的位置。
现在图像只是颜色不对,没看到429的DCMI和7670哪里可以调节颜色通道,想红色蓝色反过来试试

回复

使用道具 举报

6

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2013-4-24
在线时间
0 小时
发表于 2014-7-18 16:14:31 | 显示全部楼层
顶起,楼主现在什么情况了
回复

使用道具 举报

4

主题

29

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
202
金钱
202
注册时间
2013-5-10
在线时间
49 小时
发表于 2017-5-10 18:45:05 | 显示全部楼层
楼主怎么解决的,我F7驱动ov5640,就是想把rgb565通过串口传回来,不成功
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-17 10:01

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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