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

    文章

    11030

    浏览量

    207242
  • 嵌入式主板
    +关注

    关注

    7

    文章

    6068

    浏览量

    34724
收藏 人收藏

    评论

    相关推荐

    使用esp-iot-solution master分支的usb_stream摄像头颜色不对是怎么回事?

    使用esp-iot-solution master分支的usb_stream 连接usb摄像头时颜色偏红。这个摄像头windows和ubuntu的视频和图片都是正常的。我通过确认哪
    发表于 06-27 06:41

    如何运用无人机摄像头改装成监控

    有个废旧无人机相机,零度xiro无人机。拆下来个摄像头。想着有没有办法能改装成电脑摄像头。 内部构造双层主板。安装摄像头那层有个双20插口,第二层有个20pin排线口。 请问大家有没有
    发表于 04-03 11:56

    手机中的摄像头用的是什么接口

    手机中的摄像头用的是什么接口
    发表于 11-01 07:03

    ov系列的摄像头模块接口都是通用的吗?

    请问一下像 ov2640,0v7670 ,ov5640这种摄像头模块硬件接口都一样吗,24pin的那种模组
    发表于 09-27 08:17

    【飞凌AM6254开发板试用】+3摄像头Linux驱动安装适配(原创)

    高端技术支持的!我从业15年只遇到过两家公司,保定飞凌嵌入式技术有限公司是其中一家! Linux摄像头驱动安装适配 编译内核的网上资料很少,内容不全,我就把这方面的具体内容一点点的写出来,供大家
    发表于 09-12 16:33

    如何连接STM32MP1系列产品与MIPI CSI-2摄像头信息

    本应用笔记提供关于如何连接 STM32MP1 系列产品与 MIPI CSI-2 摄像头信息。STM32MP1 系列产品(如 STM32 高性能MCU)可通过其 DCMI(数码相机模块接口
    发表于 09-07 08:16

    #fpga EC摄像头采集转MIPI技术解决方案。SLVD-EC接口,速率为2.3GBPS ​MIPI接口,速

    接口摄像头
    明德扬科技
    发布于 :2023年08月31日 17:00:24

    摄像头 NVIF 云台控制

    摄像头
    阿梨是苹果
    发布于 :2023年08月31日 09:54:28

    Hi3519DV500 超高清智能网络摄像头 SoC 产品简介

    Hi3519DV500 超高清智能网络摄像头 SoC 产品简介
    发表于 08-21 16:44

    Hi3516DV500 高清智能网络摄像头 SoC 产品简介 - 副本

    Hi3516DV500 高清智能网络摄像头 SoC 产品简介,欢迎下载
    发表于 08-18 10:51

    JA JB JC接口怎么结合pmod接口摄像头使用?

    想问一下JA JB JC接口的用法,怎么结合pmod接口摄像头使用,这个接口和内核的管脚对应关系,然后怎么用它们把摄像头的数据交给内核或者
    发表于 08-16 08:05

    如何利用A7开发板的PMOD接口JB JC来实现摄像头的图像采集?

    我想利用A7开发板的PMOD接口JB JC来实现摄像头的图像采集,想问一下大家具体的实现方法,比如摄像头接口的编写,怎么挂到AXI总线协议
    发表于 08-16 07:13

    STM32H7B3I-DK申请的官方板卡的30pin摄像头接口有配套的摄像头嘛?

    STM32H7B3I-DK申请的官方板卡的30pin摄像头接口有配套的摄像头嘛?还是只能看原理图自己按照线序接线
    发表于 08-07 08:57

    安卓主板摄像头旋转、前置、后置摄像头镜像如何设置?

    摄像头
    广州向成电子科技有限公司
    发布于 :2023年07月07日 21:04:42

    光学指纹内部居然是一个摄像头识别指纹#指纹锁

    摄像头
    学习电子知识
    发布于 :2023年07月02日 14:34:41