本帖最后由 hpdell 于 2016-6-1 17:10 编辑
最近在使用OV2640的摄像头,
单片机使用stm32f429
lcd屏使用 ili9486
固件库使用 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 ("
DCMI %#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; // 字体颜 {MOD}
tFont.BackColor = CL_MASK; // 透明 {MOD}
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); // {MOD}彩饱和度
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("
CAMERA Init Success ... ...
");
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("
CAMERA OV2640 Read ID ERROR %d", err);
return err;
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>