OpenEdv-开源电子网

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

STM32F407调试图像传感器中遇到的DCMI-DMA中断问题

[复制链接]

3

主题

12

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2018-10-11
在线时间
6 小时
发表于 2019-10-31 14:03:24 | 显示全部楼层 |阅读模式
1金钱
目前在做一个项目,参考STM32+ov5640原子哥例程,实际使用STM32F407与ISP+Sensor通讯,简单描述如下:1、ISP输出的是YUV422格式,直接将ISP传过来的数据保存成yuv文件,再用工具打开;
2、STM32这边采用DCMI+DMA双缓冲模式,DCMI设置帧中断,DMA设置传输完成中断,DMA的2个缓存各申请512*4字节大小,DMA中断产生时将满的缓存数据拷贝到1MB的SRAM中。DCMI帧中断产生时关闭DCMI捕获及禁止DMA数据流。

3、测试使用176*120分辨率,则一帧yuv格式的数据大小应为176*120*2=42240字节。

测试过程中遇到的问题是:
1、数据大小为42240字节,DMA缓存大小为2048字节,42240 / 2048 = 20.625,那么应该产生20次DMA传输完成中断才是,但是实际只产生了10次中断,所以实际存下来的数据少了将近一半,不明白这是什么原因。
2、测试将每块缓存都扩大一倍为4096字节时,还是产生10次DMA中断,但此时数据存下来是完整的,42240 / 4096 = 10.312。不理解的是DMA产生“传输完成中断”的次数跟提供给DMA的临时缓存间应该是有关系的,难道不是缓存满了才会产生DMA中断吗?

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2019-11-1 02:08:09 | 显示全部楼层
你看下PCLK时钟,如果连续,而且速度高的话,不建议用中断了,直接设置DMA缓存把数据一次性存储完。
回复

使用道具 举报

3

主题

12

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2018-10-11
在线时间
6 小时
 楼主| 发表于 2019-11-1 09:55:09 | 显示全部楼层
正点原子 发表于 2019-11-1 02:08
你看下PCLK时钟,如果连续,而且速度高的话,不建议用中断了,直接设置DMA缓存把数据一次性存储完。

速度是挺高且连续,如果不用中断会有一个问题,DMA存储最大也只能是65535*4=262140字节,yuv422格式的这个大小只能拍很小的分辨率。
回复

使用道具 举报

3

主题

12

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2018-10-11
在线时间
6 小时
 楼主| 发表于 2019-11-1 10:23:24 | 显示全部楼层
正点原子 发表于 2019-11-1 02:08
你看下PCLK时钟,如果连续,而且速度高的话,不建议用中断了,直接设置DMA缓存把数据一次性存储完。

PCLK时钟是50MHz的,我们实际想拍400W的图片,STM32F407的SRAM还不够,准备换成F429的SDRAM,但是这个DMA问题不解决的话用429是不是还是不行。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-23 01:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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