OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5792|回复: 7

各位大神,我改的OV5640开窗显示图像显示效果有点问题,求大神指点

[复制链接]

1

主题

7

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2019-5-1
在线时间
8 小时
发表于 2019-7-6 20:14:48 | 显示全部楼层 |阅读模式
1金钱
我按照原子哥的5640例程改成DMA直接开窗在TFT屏幕显示,可现在显示有异常,如图,我做一个在(50,50)处开个长宽为240像素的地方不断显示摄像头拍到过来的图像,可现在奇葩的是图像下半有一部分跑到上面了,而且在实时显示摄像头图像的过程中其他部分还会出现一条条的黑线,哪位大神能教教我怎么解决

微信图片_20190706200617.jpg
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2019-5-1
在线时间
8 小时
 楼主| 发表于 2019-7-6 20:20:06 | 显示全部楼层
这是源码

5640摄像头(不用内存DMA直连触摸屏).rar

5.2 MB, 下载次数: 26

回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2019-5-1
在线时间
8 小时
 楼主| 发表于 2019-7-6 20:26:51 | 显示全部楼层
@openedvadmin 原子哥,能不能指点一下
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2019-5-1
在线时间
8 小时
 楼主| 发表于 2019-7-6 20:28:43 | 显示全部楼层
  1. u8 set_x=50, set_y=50, set_width=240, set_heigh=240,
  2.                 y_temp = 50;//等于set_y


  3. //u8 ov_frame=0;                                                  //帧率
  4. extern void jpeg_data_process(void);        //JPEG数据处理函数

  5. DCMI_InitTypeDef DCMI_InitStructure;

  6. //DCMI中断服务函数
  7. void DCMI_IRQHandler(void)
  8. {
  9.         if(DCMI_GetITStatus(DCMI_IT_FRAME)==SET)//捕获到一帧图像
  10.         {
  11.                
  12. //                jpeg_data_process();         //捕获完一帧,在565格式下,把显示屏设置坐标设为0               
  13.                
  14.                        
  15.                 DCMI_ClearITPendingBit(DCMI_IT_FRAME);//清除帧中断
  16.                 LCD_SetCursor(set_x, set_y);               
  17.                 LCD_WriteRAM_Prepare();                //开始写入GRAM       
  18.                 y_temp = set_y;//等于set_y               
  19.        
  20.         }
  21.        
  22.         if(DCMI_GetITStatus(DCMI_IT_LINE)==SET){//捕获到行中断
  23.                
  24.                 //目前只传到显示屏,如果后面要加上传到上位机,要加上判断数据要传到哪里
  25. //                if(y_temp<set_heigh+set_y){
  26. //                        y_temp++;
  27. //                }
  28.                
  29.                
  30.                 DCMI_ClearITPendingBit(DCMI_IT_LINE);//清除帧中断
  31.                 y_temp++;
  32.                 LCD_SetCursor(set_x,y_temp);                                      //设置光标位置
  33.                 LCD_WriteRAM_Prepare();                             //开始写入GRAM         
  34.                
  35.         }
  36. }
复制代码


DCMI代码更改如上
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2019-5-1
在线时间
8 小时
 楼主| 发表于 2019-7-6 20:31:40 | 显示全部楼层
  1. NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
  2.         delay_init(168);  //初始化延时函数
  3.         uart_init(115200);                //初始化串口波特率为115200
  4.         usart2_init(42,921600);                //初始化串口2波特率为115200
  5.         LED_Init();                                        //初始化LED
  6.         LCD_Init();                                        //LCD初始化  
  7.         KEY_Init();                                        //按键初始化
  8.         TIM3_Int_Init(10000-1,8400-1);//10Khz计数,1秒钟中断一次
  9.        
  10.         usmart_dev.init(84);                //初始化USMART
  11.         POINT_COLOR=RED;//设置字体为红色
  12.         LCD_ShowString(30,50,200,16,16,"Explorer STM32F4");       
  13.         LCD_ShowString(30,70,200,16,16,"OV5640 TEST");       
  14.         LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
  15.         LCD_ShowString(30,110,200,16,16,"2016/4/30");           
  16.         while(OV5640_Init())//初始化OV2640
  17.         {
  18.                 LCD_ShowString(30,130,240,16,16,"OV5640 ERR");
  19.                 delay_ms(200);
  20.             LCD_Fill(30,130,239,170,WHITE);
  21.                 delay_ms(200);
  22.                 LED0=!LED0;
  23.         }
  24.         LCD_ShowString(30,130,200,16,16,"OV5640 OK");            

  25.         ovx_mode=0;
  26.         //自动对焦初始化
  27.         OV5640_RGB565_Mode();        //RGB565模式
  28.         OV5640_Focus_Init();
  29.        
  30.         OV5640_Light_Mode(0);        //自动模式
  31.         OV5640_Color_Saturation(3);//色彩饱和度0
  32.         OV5640_Brightness(4);        //亮度0
  33.         OV5640_Contrast(3);                //对比度0
  34.         OV5640_Sharpness(33);        //自动锐度
  35.         OV5640_Focus_Constant();//启动持续对焦
  36.        
  37.         My_DCMI_Init();                        //DCMI配置
  38.         DCMI_DMA_Init((u32)&LCD->LCD_RAM,1,DMA_MemoryDataSize_HalfWord,DMA_MemoryInc_Disable);//DCMI DMA配置  
  39. //         OV5640_OutSize_Set(4,0,lcddev.width,lcddev.height);
  40.        
  41.                
  42.        
  43.         LCD_SetCursor(set_x, set_y);
  44.                 LCD_WriteRAM_Prepare();                //开始写入GRAM
  45.                 OV5640_OutSize_Set(4,0,240,240);
  46.         DCMI_Start();                 //启动传输
  47.         while(1)
  48.         {
  49.          }
  50. }
复制代码


主函数代码如上
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2019-7-9 02:19:31 | 显示全部楼层
这个自己解决一下即可。看起来像是开窗不对,或者在其它地方调用了液晶显示函数,导致DMA图像显示出问题。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2018-12-12
在线时间
8 小时
发表于 2019-7-11 22:14:37 | 显示全部楼层
请问楼主解决了吗,求指教
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
2
金钱
2
注册时间
2023-5-23
在线时间
0 小时
发表于 2023-5-23 21:40:00 | 显示全部楼层
正点原子 发表于 2019-7-9 02:19
这个自己解决一下即可。看起来像是开窗不对,或者在其它地方调用了液晶显示函数,导致DMA图像显示出问题。

请问一下 不是可以随意开窗么 那为什么开窗会有问题呢 还是说不能任意开窗呢? 诚信询问
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-24 11:04

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表