摄像头OV7670 无fifo,无晶振 采用8MHz CLK输入 用IO口直接读取模式,直接传递给TFT显示

2019-07-21 03:38发布

TFT上显示出来的图像为好久个,而且 {MOD}彩以及图像大小不对,只能看出一个大概的轮廓(我的手。。。),不知道是为什么。。。?T,T求帮助
程序根据例程36摄像头改编




[mw_shl_code=c,true]//更新LCD显示 void camera_refresh(void) { u32 i,j; u16 color; LCD_Scan_Dir(U2D_L2R); //从上到下,从左到右 LCD_SetCursor(0x00,0x0000); //设置光标位置 LCD_WriteRAM_Prepare(); //开始写入GRAM while(OV7670_VSYNC==0);//0-1     while(OV7670_VSYNC==1);//1-0 只有在VSYNC为低时,才写入数据 //240*320=76800 每个像素用RGB565表示,即每个像素占两个字节,一个像素需传递两次 for(i=0;i<240;i++) { while(OV7670_HREF==0);//0-1 只有在HERE为高时,才传递数据 for(j=0;j<320;j++) { //读取高8位 while(OV7670_PCLK==0); //0-1 数据在PCLK上升沿保持稳定,在此时读取数据 color=GPIOC->IDR&0XFF; //读数据 while(OV7670_PCLK==1); //1-0 //左移高八位 color<<=8; //读取低8位 while(OV7670_PCLK==0); //0-1 color|=GPIOC->IDR&0XFF; //读数据 while(OV7670_PCLK==1); //1-0 //显示LCD LCD->LCD_RAM=color; } while(OV7670_HREF==1); //1-0 } //ov_frame++; LCD_Scan_Dir(DFT_SCAN_DIR); //恢复默认扫描方向 } [/mw_shl_code] 附上两张时序图


另外求DMA解决方式,以及将OV7670数据直接传给TFT显存解决方式




友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。