硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4812|回复: 1
收起左侧

[STM32CubeF4] 使用CUBE HAL 驱动 OV2640 ili9486 显示 ?

[复制链接]

692

主题

3576

回帖

5677

积分

论坛元老

积分
5677
发表于 2016-6-1 16:23:22 | 显示全部楼层 |阅读模式



最近在使用OV2640的摄像头,
单片机使用stm32f407

固件库使用 cube v1.9

现在的问题是,我驱动ov2640的摄像头,在lcd屏幕上面可以得到需要显示的图像,但是我没有把ov2640的数据写入到 lcd屏,怎么会有显示出来表示不解 ,望高人指点指点 ?!!

OV2640 输出的数据我是保存在外部的 SRAM 里面的


相关部分代码如下:

/**
  * @brief  Frame Event callback.
  * @param  None
  * @retval None
  */

/**
  * @brief  Frame Event callback.
  * @param  None
  * @retval None
  */

void BSP_CAMERA_FrameEventCallback(void)                                        // LCD 显示回调函数
{
#if   1
//  u32 Count,j;
//        u8  * ptr = (u8  *) DCMI_FrameBuf;

        
  if(DcmiFinishFlag)
  {
    DcmiFinishFlag = 0;
   
//    printf ("\r\nDCMI %#x", cc);
    /* Display on LCD */
  //  BSP_LCD_DrawRGBImage(0, 0, 320, 240, (uint8_t *)CAMERA_FRAME_BUFFER);
   
//    Count = 320 * 240 ;     // 显示图像大小,与设置OV2640及LCD屏显示区域大小一致
  //  LCD_SetCursor_B( 0, 320, (20), (480));               
        
    LCD_REG = 0x2C;                         /* 准备读写显存 */
               
//    for (j = 0; j < Count; j ++)
    {
//      LCD_RAM = *ptr;                            // 此处写入到 lcd屏数据我是屏蔽的,LCD 屏 怎么还会有显示出来 ?????????????? 如果把这些屏蔽的代码打开,显示会有乱码或者图像会有干扰。
//                        ptr ++;
    }  
  }
  
#else
  
  
#endif
}






//RGB565测试
//RGB数据直接显示在LCD上面
CAMERA_StatusTypeDef DCMI_RGB565_LcdTest(void)
{
        CAMERA_StatusTypeDef err;
  err = CAMERA_ReadID();        // 读取 OV2640 摄像头的 ID,判断摄像头是否存在或者异常
  if(CAMERA_OK == err)
  {
    tFont.FontCode = FC_ST_16;        // 字体代码 16点阵
    tFont.FrontColor = CL_WHITE;        // 字体颜色
    tFont.BackColor = CL_MASK;        // 透明色
    tFont.Space = 10;               
   
    LCD_ClrScr(CL_BLUE);
   
    LCD_DispStr( 30, 10,  (const u8 *)"SWS  STM32F429IIT6 LQFP-176",  &tFont);
    LCD_DispStr( 30, 34,  (const u8 *)"OV2640 RGB565 Mode",  &tFont);
    LCD_DispStr( 30, 58,  (const u8 *)"KEY0 Contrast",  &tFont);                                                //对比度
    LCD_DispStr( 30, 82,  (const u8 *)"KEY1 Saturation",  &tFont);                                        //色彩饱和度        
    LCD_DispStr( 30, 106, (const u8 *)"KEY2 Effects",  &tFont);                                                //特效         
    LCD_DispStr( 30, 130, (const u8 *)"KEY_UP FullSize / Scale",  &tFont);        //1:1尺寸(显示真实尺寸)/全尺寸缩放
    bsp_DelayMS(50);        
   
   
    /* 初始化OV2640摄像头及读取摄像头芯片ID,确定摄像头正常连接 */
    if(CAMERA_OK == BSP_CAMERA_Init(CAMERA_R320x240))
    {
      /* Wait 1s before Camera snapshot */
      HAL_Delay(10);
      
                  CAMERA_RGB565_Mode();                                                        //RGB565模式
      printf("\r\nCAMERA Init Success ... ...\r\n");
                              
      LCD_SetCursor_B(0 , 320 -1,                 //图像输出320,输出范围要与此“CAMERA_SetImageOutPixelSize(320, 240); ”的设置一致
                      215,  455 -1);                //图像输出240,                        

      CAMERA_SetImageOutPixelSize(320, 240);
      
      DCMI_FrameBuf = mymalloc(SRAMEX, 320*240) ;     // 申请 外部 SRAM 地址
      /* Start the Camera Capture 启动相机捕捉  */
//            BSP_CAMERA_ContinuousStart( (uint8_t *) & LCD_RAM);          // 这个地方是直接在lcd屏上面显示
      
      BSP_CAMERA_ContinuousStart(  (u8 *) DCMI_FrameBuf);                // 这个地方是吧ov2640 摄像头的数据保存在 外部 SRAM 里面的,
    }
    while(1)
    {
   
    }
  }
  else
  {
//    printf("\r\nCAMERA OV2640 Read ID ERROR %d", err);
    return err;
  }
}
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117546
QQ
发表于 2016-6-2 09:52:01 | 显示全部楼层
逐一屏蔽排查下,估计是哪里设置有问题。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-14 01:10 , Processed in 0.035250 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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