新手上路
- 积分
- 26
- 金钱
- 26
- 注册时间
- 2018-10-11
- 在线时间
- 6 小时
|
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中断吗?
|
|