STM32
直播中

董方帅

7年用户 192经验值
擅长:816319
私信 关注
[问答]

图像采集显示程序出现错误该怎么办?

用带fifo的ov7670摄像头采集八位图像数据然后在开发板上显示,参照了别人的程序。摄像头能采集到数据,但是显示错误,都是一些彩色色带在乱闪。盖上摄像头盖后显示是绿屏,上面有几根白线,求大侠帮忙看看:
主函数:
int main(void)
{
  u16 lcd_wdata;  //写到tft像素的数据
  u16 i,j;  
   STM32_Clock_Init(9);//系统时钟设置
delay_init(72);  //延时初始化
uart_init(72,9600); //串口1初始化
//KEY_Init();
  LCD_Init();
EXtiX_Init();
//Touch_Init();
Sensor_init();
delay_ms(10);
  
LCD_Clear(BLUE);  //蓝色清屏
  delay_ms(50);
   while(1)
  {   
    if(FIFO_flag==2)       //数据接收完成标志
  {
   LCD_WriteReg(0x0050,0x0000); //水平GRAM起始位置
   LCD_WriteReg(0x0051,0x00ef); //水平GRAM终止位置                    
   LCD_WriteReg(0x0052,0x0000); //垂直GRAM起始位置                    
   LCD_WriteReg(0x0053,0x013f); //垂直GRAM终止位置
  LCD_WriteRAM_Prepare();    //     准备写入
       FIFO_RRST=0;             //读FIFO复位    原理图中读复位是低电平
     FIFO_RCLK=0;
     FIFO_RCLK=1;
       FIFO_RCLK=0;
      FIFO_RRST=1;
     FIFO_RCLK=1;
     for(i=0;i<240;i++)
      {
       for(j=0;j<320;j++)   //写到tft数据是16位
         {
            FIFO_RCLK=0;
            lcd_wdata=(FIFO_DATA<<8)&0xff00;  //读高8位
            FIFO_RCLK=1;
            FIFO_RCLK=0;
            lcd_wdata|=FIFO_DATA&0x00ff;  //读低8位
            FIFO_RCLK=1;
             LCD_WriteRAM(lcd_wdata);      
         }
       }
      FIFO_flag=0;
        }
   }               
}
FIFO定义为:
#define FIFO_DATA (GPIOA->IDR)&0x00ff     //取低8位  PA0-PA7
PA0~PA7作为FIFO数据输入

回帖(5)

全娟

2019-9-10 08:10:04
还没用到过,所以只能来顶一下了,希望楼主能够顺利解决
举报

吴银红

2019-9-10 08:27:37
 ALIENTEK STM32驱动OV7670摄像头成功!   
举报

张帆

2019-9-10 08:39:16
原子哥我想请教下LCD_WriteReg和LCD_WriteRAM这两个函数,我对其的用途还不是很了解,虽然看了很久的不完全手册。
举报

李丹丹

2019-9-10 08:51:16
一个是写寄存器,一个是写RAM.
举报

更多回帖

发帖
×
20
完善资料,
赚取积分