获取摄像头数据用DMA好还是复制LCD显存好?
我想得到摄像头的图像数据。之前得到一段示例代码为for(xxxxxxx)
{
temp【i】 =* (uint16_t *)(FSMC_LCD_ADDRESS+i );
}
我从摄像头例程开始改,我把你的这段赋值代码放在DCMI_Cmd(ENABLE); DCMI_CaptureCmd(ENABLE); (DCMI采集数据)之后,在while(1)循环之前插入。但是得到的数值打印到LCD上是0。想要debug session单步调试很快就会程序崩溃。
1.如果从LCD上得到图像数据,这段代码的位置之类的有什么讲究?
2.这种方法是否不太可行,用DMA直接内存访问给到数组怎么写?(既要显示屏显示,又希望自己的数组里有图像信息)
快要中期检查了,今天问题有点多,感谢你的问答!:D
429摄像头的数据直接就已经存储在显存了,显存的位置是SDRAM的一部分,读取这些地址直接就是数组啦,
谢谢解疑。但是能进一步帮我解释一下吗?
DMA传输的代码为OV5640_DMA_Config(FSMC_LCD_ADDRESS+(lcd_height-1)*(lcd_width)*2,img_width*2/4);
也就是说显存的地址就是FSMC_LCD_ADDRESS;
然而我通过类似以下代码
for(i=0;i<=40-1;i++)
{
temp=*(uint16_t *)(FSMC_LCD_ADDRESS+i);
}
这样的方式去读,一直都没有像是RGB565的颜色数据。
都是0,可以再告诉我下是什么情况吗?
我想通过单步调试的方法,去监视FSMC_LCD_ADDRESS或者*(uint16_t *)(FSMC_LCD_ADDRESS+i);但是也看不到什么值
再次感谢你的答疑
随风 发表于 2017-3-25 15:00
429摄像头的数据直接就已经存储在显存了,显存的位置是SDRAM的一部分,读取这些地址直接就是数组啦,
谢谢解疑。但是能进一步帮我解释一下吗?
DMA传输的代码为OV5640_DMA_Config(FSMC_LCD_ADDRESS+(lcd_height-1)*(lcd_width)*2,img_width*2/4);
也就是说显存的地址就是FSMC_LCD_ADDRESS;
然而我通过类似以下代码
for(i=0;i<=40-1;i++)
{
temp=*(uint16_t *)(FSMC_LCD_ADDRESS+i);
}
这样的方式去读,一直都没有像是RGB565的颜色数据。
都是0,可以再告诉我下是什么情况吗?
我想通过单步调试的方法,去监视FSMC_LCD_ADDRESS或者*(uint16_t *)(FSMC_LCD_ADDRESS+i);但是也看不到什么值
再次感谢你的答疑 coolpeche 发表于 2017-3-25 15:18
谢谢解疑。但是能进一步帮我解释一下吗?
DMA传输的代码为OV5640_DMA_Config(FSMC_LCD_ADDRESS+(lcd_hei ...
确实是这样读,或者你尝试下读取另一层显存的地址?
另外读完一次数据应该是 i+2 楼主,我也刚开始做429+5640图像识别,可以分享一下吗。小弟邮箱QQ1301703993@qq.com 楼主,最近在做图像相关的内容,可以分享一下代码吗,邮箱:404716881@qq.com 楼主,我也刚开始做429+5640图像识别,可以分享一下吗。小弟邮箱qq:2415949676@qq.com
页:
[1]