因为摄像头实验例程里,DMA_BufferSize为16位的,最大支持65536,超过该大小的数据会编译不过。分辨率被限制在220*280左右。
然后自己的想法是分多次传输存储到外部SRAM。
外部SRAM地址从0x6800 0000开始,定义一个sram_buf[400*300/2] at0x6800 0000de 的数组用来存储数据
下面代码的基本思路是:有数据时触发中断,每次传输200*150/2的数据,传输完以后地址增加,再穿下一帧。但画面始终不对
是思路错了?还是设置有问题?
[mw_shl_code=applescript,true]void DMA2_Stream1_IRQHandler(void)
{
//u32 addr=0x68000000;
if(DMA_GetFlagStatus(DMA2_Stream1,DMA_FLAG_TCIF1)==SET)//DMA2_Steam1,传输完成标志
{
DCMI_DMA_Init(addr,200*150/2,DMA_MemoryDataSize_Word,DMA_MemoryInc_Enable);
addr += 200*150/2;
DMA_ClearFlag(DMA2_Stream1,DMA_FLAG_TCIF1);//清除传输完成中断
}
if(addr >= 0x6803A97C)
addr = 0x68000000;
} [/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>