【朝花夕拾】RT1050 CSI OV7670摄像头eLCDIF显示

本文详细描述了如何在RT1050平台上通过CSI接口采集OV7670摄像头的RGB565格式图像数据,并利用eLCDIF模块显示。文章涉及硬件连接、软件驱动移植和原理讲解,提供了完整的开发过程和解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一, 文章简介

OV7670是一款CMOS VGA图像传感器,体积小,工作电压低,通过SCCB总线控制,可以输出各种分辨率的8位影像数据,帧率高达30帧/秒,成本低。
本篇文章主要是实现RT10XX上使用CSI获取OV7670摄像头数据,并且使用RT10XX自带的显示模块eLCDIF显示。摄像头和显示采用RGB565格式。摄像头分辨率配置为QVGA 320240, LCD为NXP官方EVKB配套LCD RK043FN02H,分辨率为480272,帧率为30FPS.
本文基于NXP官方RT1050 SDK:
SDK_2_14_0_EVKB-IMXRT1050\boards\evkbimxrt1050\driver_examples\csi\rgb565
移植OV7670驱动,实现CSI方式采集OV7670图像数据,并通过eLCDIF模块显示到LCD。

二, 原理讲解

这里给出简单的相关知识讲解。

2.1 RGB565彩色模式

RGB565作为图像的一个基本彩色编码格式,是指一个像素占2个字节的数据,通常用于图像和显示设备中。R红色,G绿色,B蓝色,现实显示根据三基色的配备得到不同的其他颜色,每个橡树可以显示65536(2^16)种颜色。具体分配如下:
在这里插入图片描述
图1
由上图,可以知道,纯红绿蓝的显示2字节数据为:
红:0xf800,绿:0X07E0,蓝:0X001F

2.2 OV7670摄像头硬件与波形情况

使用的0V7670模块如下:
在这里插入图片描述图2
引脚情况:
在这里插入图片描述

RGB565输出数据时序:

在这里插入图片描述
图 3

2.2 CSI帧同步信号时序波形

在这里插入图片描述

图 4
2.3 LCD显示波形
在这里插入图片描述

图 5
所以,通过CSI获取OV7670的数据,然后存储到buffer,eLCDIF再从buffer中取数据显示到LCD屏幕上,显示摄像头数据的实时采集与现实。

三 软硬件实现

测试平台基于NXP MIMXRT1050-EVKB revA1版本:
https://www.nxp.com/design/development-boards/i-mx-evaluation-and-development-boards/i-mx-rt1050-evaluation-kit:MIMXRT1050-EVK
LCD为:https://www.nxp.com/part/RK043FN02H-CT#/

3.1 硬件连接情况

从图2可以看到购买的通用模块是2.54mm直插方式,但是MIMXRT1050-EVKB板载使用的CSI接口是FPC接口,所以需要转接板从FPC转到2.54mm直插模式,接线图下:
在这里插入图片描述

图 6
实际整体硬件连接情况如下图:
在这里插入图片描述

图 7

3.2 软件准备

关于OV7670的SDK驱动,RT SDK并没有直接给出,但是FRDM-K82 SDK里面提供了相关的驱动,可以移植到RT1050 SDK。
SDK版本:SDK_2_14_0_EVKB-IMXRT1050\boards\evkbimxrt1050\driver_examples\csi\rgb565
代码替换掉原始的OV7725代码,把相关驱动换成OV7670的驱动,修改OV7670代码,匹配到RT1050 CSI代码中,并且添加对于OV7670 RST和PWDN的IO信号控制,添加RST和PWDN控制的原因是,发现有些模块,如果不做RST引脚的关闭延迟开启,导致采集不成功的问题,但是添加了RST和PWDN控制,目前不同厂家的OV7670均能成功稳定采集显示。具体OV7670代码,可以查看附件源代码。
摄像头初始化代码如下:

static void APP_InitCamera(void)
{
    const camera_config_t cameraConfig = {
        .pixelFormat   = kVIDEO_PixelFormatRGB565,
        .bytesPerPixel = APP_BPP,
        .resolution    = FSL_VIDEO_RESOLUTION(320, 240),
        /* Set the camera buffer stride according to panel, so that if
         * camera resoution is smaller than display, it can still be shown
         * correct in the screen.
         */
        .frameBufferLinePitch_Bytes = DEMO_BUFFER_WIDTH * APP_BPP,
        .interface                  = kCAMERA_InterfaceGatedClock,
        .controlFlags               = DEMO_CAMERA_CONTROL_FLAGS,
        .framePerSec                = 30,
    };
    memset(s_frameBuffer, 0, sizeof(s_frameBuffer));
    BOARD_InitCameraResource();
    CAMERA_RECEIVER_Init(&cameraReceiver, &cameraConfig, NULL, NULL);

    if (kStatus_Success != CAMERA_DEVICE_Init(&cameraDevice, &cameraConfig))
    {
        PRINTF("Camera device initialization failed\r\n");
        while (1)
        {
            ;
        }
    }
    CAMERA_DEVICE_Start(&cameraDevice);

    /* Submit the empty frame buffers to buffer queue. */
    for (uint32_t i = 0; i < APP_FRAME_BUFFER_COUNT; i++)
    {
        CAMERA_RECEIVER_SubmitEmptyBuffer(&cameraReceiver, (uint32_t)(s_frameBuffer[i]));
    }
}

这里的分辨率为QVGA 320240,和LCD的480272不匹配,不过没有关系,实际上是在LCD 中显示320240大小,如果要显示到480272,也可以通过PXP做尺寸配置。
更多代码详情,查看附件代码包。

四,总结

本文旨在提供一个RT OV7670 CSI+eLCDIF采集与显示的demo,话不多说,直接上成品效果视频,可以看到相对显示还是比较清晰,并且刷新效果还不错。

evkbimxrt1050_csiOV7670_rgb565

代码下载链接:
https://community.nxp.com/t5/i-MX-RT-Knowledge-Base/RT1050-CSI-OV7670-camera-eLCD-display/ta-p/1752263

欢迎下载研华科技主题白皮书: 【深度剖析】研华多核异构ARM核心板之机器视觉应用案例 [摘要] TI Sitara系列AM5718/5728是采用ARM+DSP多核异构架构,可以实现图像采集、算法处理、显示、控制等功能,具有实时控制、低功耗、多标准工业控制网络互联、工业人机界面的优化、2D/3D图形处理、1080 HD的高清视频应用、工业控制设备的小型化等特点。广泛应用在机器视觉、工业通讯、汽车多媒体、医疗影像、工厂自动化、工业物联网等领域。 https://www.eefocus.com/resource/advantech/index.p... 前言: 使用单片机方案的简单图像处理在很多情况下有应用,比如颜色的跟踪识别,给智能控制的机器人带来的视觉系统,能使设计更加的智能化。在各种机器人大赛中都有图像处理应用的身影,低调却非常的有用。虽然只是对图像的颜色跟踪,但是这样却可以应用到很多的场合。 本方案介绍的是基于Colibri_GD32F207+OV7670+SPI_LCD的图像处理->颜色跟踪。 系统框图如下: 实物PIN脚连接图: 管脚配置: 设计应用描述及心得总结: 1. Colibri_GD32F207这个板子的MCU是带有camera的接口的,但是没有引出来,使用使用了FIFO的OV7670摄像头,数据口使用GPIO。OV7670是30W的摄像头最大是支持VGA 640*480的像素,但是应为液晶的分辨率只有320*240,所以讲OV7670配置为QVGA 320*240的像素输出。 2. 同样板子上的MCU是带有LCD 的接口的,但是也是应为没有将这部分的IO全部引出来,所以使用SPI LCD ,这样可以节省很多的 IO,但是也造成了使用GD32f207处理图片的时候速度变慢。如果这部分做些修改,处理的速度将达到每秒7帧以上。 3.本设计发挥了GD32F207的最大的速度,主频配置为了120MHZ。 4. 本设计集成了对图片设定的识别颜色条件为:Condition={30,70,130,255,100,170,40,40,320,240}; 5. 识别使用的是HSV空间,这个和RGB的区别是,HSV更加符合人眼对颜色的认知模式。H是色调,S是色饱和度,V是色温。其中的S值不会受到环境亮度的影响。 6. 识别的算法做了对目标的大小,坐标等的识别,集成了图像搜索的膨胀、腐蚀算法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值