0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

英创信息技术CSI摄像头接口及在英创主板上的应用简介

英创信息技术 来源:英创信息技术 作者:英创信息技术 2020-02-06 11:13 次阅读

目前,英创公司在低成本核心板ESM6800的基础上,推出了支持摄像头的版本ESM6800V,ESM6800V是在ESM6800H的基础上,去掉了一路网口和6路扩展串口,增加了一路CSI(COMS Sensor Interface)信号接口。ESM6800V的其它系统及接口配置与ESM6800完全相同。CSI是一个标准的视频输出接口,视频处理芯片可以直接输出,不需要涉及到USB接口摄像头所需的视频压缩芯片以及USB接口芯片,所以较市面上普通的USB摄像头来说,CSI接口的摄像头更便宜,配合ESM6800V形成了一个低成本的图像应用方案。

ESM6800的内核版本为Linux-4.1.15,同时英创公司在ESM6800上移植了基于xcb(X11)平台的Qt-5.8.0,关于Qt和X11的介绍,可以参考网站文章《ESM6802 X11桌面图形系统简介》。CSI摄像头选用Omnivision公司130万像素的ov9652(最高分辨率1280×1024)和500万像素的ov5640(最高分辨率2560×1920),在ESM6800V的系统中已经集成了这两款摄像头的驱动,并且能够自动识别并加载相应的驱动,加载驱动后会自动生成设备节点:“/dev/video0",应用程序可以操作该设备节点对摄像头进行图像的采集和控制。

CSI摄像头都是用了V4L2驱动提供的标准API来操作的。Video for Linux 2简称V4L2,是V4L的改进版。本例中采集的图像分辨率为640×480,接下来就来介绍一下主要的操作,首先打开设备文件:

int fd;

fd=open("/dev/video0",O_RDWR);

设置视频的制式和帧格式,制式包括PAL,NTSC,帧的格式个包括宽度和高度等:

/*set the form of camera capture data*/

tv_fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; /*v4l2_buf_typea,camera must use V4L2_BUF_TYPE_VIDEO_CAPTURE*/

tv_fmt.fmt.pix.width = 640; /*设置图形分辨率,水平:640 像素*/

tv_fmt.fmt.pix.height = 480; /*设置图形分辨率,垂直:480 像素*/

tv_fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_YUYV; /*V4L2_PIX_FMT_YYUV*/

tv_fmt.fmt.pix.field = V4L2_FIELD_NONE; /*V4L2_FIELD_NONE*/

if (ioctl(fd, VIDIOC_S_FMT, &tv_fmt)< 0)

{

fprintf(stderr,"VIDIOC_S_FMT set err ");

exit(-1);

close(fd);

}

向驱动申请帧缓冲,一般不超过五个:

struct v4l2_requestbuffers req;

req.count=2;

req.type=V4L2_BUF_TYPE_VIDEO_CAPTURE;

req.memory=V4L2_MEMORY_MMAP;

//申请帧缓冲

ret=ioctl(fd,VIDIOC_REQBUFS,&req);

if(ret<0)

{

printf("failture VIDIOC_REQBUFS ");

return -1;

}

将申请到的帧缓冲映射到用户空间,这样就能够直接操作帧缓冲了:

for (n_buffers = 0; n_buffers < req.count; ++n_buffers)

{

struct v4l2_buffer buf;

memset(&buf,0,sizeof(buf));

buf.type =V4L2_BUF_TYPE_VIDEO_CAPTURE;

buf.memory =V4L2_MEMORY_MMAP;

buf.index =n_buffers;

// 查询序号为n_buffers 的缓冲区,得到其起始物理地址和大小

if (-1 == ioctl(fd, VIDIOC_QUERYBUF, &buf))

{

printf("failture VIDIOC_QUERYBUF ");

return -1;

}

buffers[n_buffers].length= buf.length;

// 映射内存

buffers[n_buffers].start=mmap (NULL,buf.length,PROT_READ | PROT_WRITE ,MAP_SHARED,fd, buf.m.offset);

if (MAP_FAILED == buffers[n_buffers].start)

{

printf("failture mmap ");

return -1;

}

}

开始视频的采集:

type =V4L2_BUF_TYPE_VIDEO_CAPTURE;

ioctl (fd,VIDIOC_STREAMON, &type);

struct v4l2_buffer camera_buf;

CLEAR (camera_buf);

camera_buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;

camera_buf.memory = V4L2_MEMORY_MMAP;

//取出一个缓冲帧

i1 = ioctl (fd, VIDIOC_DQBUF, &usr_buf);

if(i1<0)

{

printf("failture ");

return -1;

}

例程的效果如下:

所以通过这一套通用的V4L2接口来操作摄像头的工作流程就能够读取摄像头的数据了,基于CSI接口摄像头,英创公司提供了一套完整的应用方案,有兴趣的客户请点击下载:《ESM6800V支持CSI接口摄像头》。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11219

    浏览量

    208873
  • 嵌入式主板
    +关注

    关注

    7

    文章

    6085

    浏览量

    35198
收藏 人收藏

    评论

    相关推荐

    飞凌嵌入式-ELFBOARD-OV5640摄像头简介

    (自动聚焦控制)等功能。如下是OV5640摄像头的功能框图: 图2 OV5640功能框图 可见其内部结构复杂,我们将重点放在输出接口上。首先摄像头采集图像数据,经过内部一系列的处理(放大、数字信号转换等
    发表于 11-18 11:14

    飞凌嵌入式-ELFBOARD-OV5640摄像头简介第一期

    (自动聚焦控制)等功能。如下是OV5640摄像头的功能框图: 图2 OV5640功能框图 可见其内部结构复杂,我们将重点放在输出接口上。首先摄像头采集图像数据,经过内部一系列的处理(放大、数字信号转换等
    发表于 11-18 11:09

    中科达荣获2024年软件和信息技术服务优秀企业

    近日,由中国电子信息行业联合会主办的第二十六届中国国际软件博览会(简称“软博会”)天津国家会展中心成功举行。在此次盛会上,中国电子信息行业联合会发布了“2024年软件和信息技术服务企
    的头像 发表于 10-30 11:44 372次阅读

    武汉传媒学院联合龙教仪建设DSP教学实验箱,基于DSP C6000平台搭建

    首先要使能缓存,接着进行DSP中断初始化和LCD的初始化,然后初始化配置I2C和OV2640摄像头,初始化VPIF总线。最后摄像头采集接收数据,灰度转换后将数据显示LCD。 本实
    发表于 09-12 14:43

    荆州学院联合龙教仪建设DSP教学实验箱案例分享

    OV2640摄像头采集图像,并显示LCD。 三、实验原理:OV2640简介 OV2640 是世界上第一个 1/4 英寸 2 百万像素视频传感器,同时是 OmniVision 最新的
    发表于 09-12 14:29

    基于RK3588J的6路MIPI CSI视频采集案例分享,多路视频系统必看!

    等比例拼接形式采集画面,且摄像头帧率需统一,因此摄像头分辨率帧率均使用1920x1080@30fps。 RK3588J的MIPI CSI介绍RK3588J的MIPI CSI
    发表于 08-22 11:51

    如何通过RK3576配置MIPI-CSI摄像头的不同输出格式

    MIPI-CSI是一种嵌入式系统或移动设备中常见的摄像头接口,能够实现高速的图像数据传输。飞凌嵌入式最新推出的OK3576-C开发板拥有丰富的资源
    发表于 07-25 09:56

    基于FPGA的摄像头心率检测装置设计

    装置, 通过网络摄像头获取人脸视频图像,通过 FPGA 进行分析处理,得到心跳信号, 并将计算得出心率值实时显示 HDMI 屏幕。 1.2 应用领域 本作品应用范围广泛,可应用于众多需要检测心率
    发表于 07-01 17:58

    esp32是如何与摄像头连接的呢?

    新手。看了esp32的模组中没有摄像头的硬件接口,请问它是如何与摄像头连接的呢
    发表于 06-28 15:01

    探讨车载摄像头ESD问题的成因及解决策略

    车载摄像头整体结构主要由前盖(镜头)、后盖(接口)和硬件(电路)三大部分组成。其中,内部电路是摄像头的核心部分,不同协议的摄像头电路略有区别。
    发表于 02-27 14:26 1609次阅读

    高清网络摄像头多媒体智能屏

    。同时,屏幕显示摄像头画面可直接通过DGUS开发来实现,十分快捷。硬件接口展示:产品特点支持通过以太网、WiFi(2.4GHz、5GHz均可)连接网络
    的头像 发表于 02-19 13:21 540次阅读
    高清网络<b class='flag-5'>摄像头</b>多媒体智能屏

    PCB企业力三期项目顺利投产

    近日,PCB企业四川力电子科技股份有限公司三期(载板厂和特种板厂)顺利投产。通过这个项目,力公司成功地将业务范围从单一的普通通孔多层板扩展到了高端的IC载板、MiniLED基板
    的头像 发表于 01-15 14:20 567次阅读

    用usb摄像头替换手机前置摄像头可以吗

    将从技术实现、可行性和使用体验三方面,探讨这个问题。 一、技术实现: USB摄像头的连接:USB摄像头通过USB接口与智能手机连接。目前,大
    的头像 发表于 01-08 14:11 2284次阅读

    车载摄像头Tier2研究:镜头企业竞争摄像头模组赛道,CIS实现跨越式发展

    电子2023年1-10月车载镜头出货量估计可达900万级别,较2022年同期上升可达30%以上;车载摄像头模组出货量估计可达300-400万级别。摄像头模组方面,联电子车载光学业
    的头像 发表于 12-11 17:07 1602次阅读
    车载<b class='flag-5'>摄像头</b>Tier2研究:镜头企业竞争<b class='flag-5'>摄像头</b>模组赛道,CIS实现跨越式发展