hpdell 发表于 2016-6-1 16:25:05

使用CUBE HAL 驱动 OV2640 ili9486 显示 ?

最近在使用OV2640的摄像头,
单片机使用stm32f429
lcd屏使用 ili9486

固件库使用 cube v1.9

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

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


相关部分代码如下:

/**
* @briefFrame Event callback.
* @paramNone
* @retval None
*/

/**
* @briefFrame Event callback.
* @paramNone
* @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 *)"SWSSTM32F429IIT6 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]
查看完整版本: 使用CUBE HAL 驱动 OV2640 ili9486 显示 ?