新手上路
- 积分
- 27
- 金钱
- 27
- 注册时间
- 2015-3-11
- 在线时间
- 3 小时
|
10金钱
想用探索者开发版做颜色识别,用OV2640摄像头通过DCMI把数据传递给SRAM后再由LCD显示遇到问题,想求助一下各路大神
1.我用u16 picbuf[120000] __attribute__((at(0X68000000)));语句定义了一个位于SRAM的数组,然后通过配置摄像头例程中的DMA目标地址来传递数据,
DCMI_DMA_Init((u32)&picbuf,60000,DMA_MemoryDataSize_Word,DMA_MemoryInc_Enable); 传递数据的语句
这样能否正常把RGB565传给SRAM?这里说下我的内存地址设为字是因为我想输出400*300的图像,用半字的话会超出最大传递数量
2.之后我在帧中断中想把SRAM中数据传递给LCD,怎么做比较好?我现在是用画点函数
DCMI_Stop(); //停止显示
for(xx=0;xx<401;xx++)
for(yy=0;yy<301;yy++)
LCD_Fast_DrawPoint(xx,yy,picbuf[yy*400+xx]);
不考虑速度的话这样行吗?因为我显示在LCD上只是想调试的时候看到我拍的图像以及图像能否正常送至SRAM中
3.我之前想把图像输出为400*300到LCD会花屏,经过查资料发现要LCD开窗和摄像头输出相匹配才行,我就用
LCD_Set_Window(0,0,400,300);//设置开窗口为400*300
OV2640_OutSize_Set(400,300);
来设置,我想问下这样LCD的其他部分还能显示文字或者图片吗?
希望各路大神花点时间帮小弟解答一下,在此拜谢
|
最佳答案
查看完整内容[请看2#楼]
1,不行,sram速度慢,可能会丢数据。除非降低摄像头输出速度。 2,当然是用DMA传输最快,在中断里面这么填充,很占时间。。。 3,可以。
|