用带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数据输入
|