探索者STM32F4开发板 4.3屏+OV2640模块 SVGA(800*600,30帧)输出配置例程

2019-07-20 11:40发布

有客户用我们的F4板子+4.3屏+摄像头模块配置SVGA输出,说花屏,所以特地花了点时间,写了个demo.
其实我们例程兼容性已经做的很好了.非常容易改.
第一步,修改OV2640_Init函数的配置,将原来的UXGA改为SVGA,如下:
[mw_shl_code=c,true] //初始化 OV2640,采用SVGA分辨率(800*600) for(i=0;i<sizeof(ov2640_svga_init_reg_tbl)/2;i++) { SCCB_WR_Reg(ov2640_svga_init_reg_tbl[0],ov2640_svga_init_reg_tbl[1]); } [/mw_shl_code]
第二步,因为4.3是800*480的,高度有800个像素,如过600*800的SVGA,设置输出尺寸为800*480,图像势必混乱.故需要设置LCD开窗为600*480,即可解决问题,修改main函数如下:
[mw_shl_code=c,true]int main(void) { u8 key; u8 t; Stm32_Clock_Init(336,8,2,7);//设置时钟,168Mhz delay_init(168); //延时初始化 uart_init(84,115200); //初始化串口波特率为115200 usart2_init(42,115200); //初始化串口2波特率为115200 LED_Init(); //初始化LED LCD_Init(); //LCD初始化 if(lcddev.height>600) { lcddev.height=600; //SVGA模式,必须不能大于600. LCD_Set_Window(0,0,480,600);//设置开窗口为480*600. } KEY_Init(); //按键初始化 TIM3_Int_Init(10000-1,8400-1);//10Khz计数,1秒钟中断一次 usmart_dev.init(84); //初始化USMART POINT_COLOR=RED;//设置字体为红 {MOD} LCD_ShowString(30,50,200,16,16,"Explorer STM32F4"); LCD_ShowString(30,70,200,16,16,"OV2640 TEST"); LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK"); LCD_ShowString(30,110,200,16,16,"2014/5/14"); while(OV2640_Init())//初始化OV2640 { LCD_ShowString(30,130,240,16,16,"OV2640 ERROR"); delay_ms(200); LCD_Fill(30,130,239,170,WHITE); delay_ms(200); LED0=!LED0; } LCD_ShowString(30,130,200,16,16,"OV2640 OK"); while(1) { key=KEY_Scan(0); if(key==KEY0_PRES) //RGB565模式 { ov2640_mode=0; break; }else if(key==KEY1_PRES) //JPEG模式 { ov2640_mode=1; break; } t++; if(t==100)LCD_ShowString(30,150,230,16,16,"KEY0:RGB565 KEY1:JPEG"); //闪烁显示提示信息 if(t==200) { LCD_Fill(30,150,210,150+16,WHITE); t=0; LED0=!LED0; } delay_ms(5); } if(ov2640_mode)jpeg_test(); else rgb565_test(); } [/mw_shl_code]
其实就是增加了几行代码:
 if(lcddev.height>600)
{
lcddev.height=600; //SVGA模式,必须不能大于600.
LCD_Set_Window(0,0,480,600);//设置开窗口为480*600.
}
强制设置LCD尺寸高度为600,然后设置开窗为480*600即可.

至此修改完毕,下载进去就可以看到30帧的输出速度,480*600的图像.
工程源码见附件.
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。