摄像头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显存解决方式




友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答
q1092840790
1楼-- · 2019-07-21 08:04
 精彩回答 2  元偷偷看……
q1092840790
2楼-- · 2019-07-21 08:38
真是尴尬啊。。。没人回复
正点原子
3楼-- · 2019-07-21 11:30
可以一次读取320个数据,然后DMA到LCD,长度为320.
不过需要zet6等待fsmc型号的mcu才行
q1092840790
4楼-- · 2019-07-21 13:57
回复【4楼】正点原子:
---------------------------------
芯片的型号是f103zet6   。能说的具体点么。。?
一次传输一行,然后用HERE做中断是么?  。。但是HERE是从OV7670传输来的,而不是tim产生的,怎么用它去触发DMA传输?
正点原子
5楼-- · 2019-07-21 16:28
回复【5楼】q1092840790:
---------------------------------
具体后续参考我的STM32F103驱动OV2640代码吧。
过阵子发布,到时候你参考下便是。
7670和2640一个道理。
q1092840790
6楼-- · 2019-07-21 16:29
 精彩回答 2  元偷偷看……

一周热门 更多>