tag 标签: mipi

相关帖子
相关博文
  • 热度 11
    2020-10-3 22:31
    1658 次阅读|
    0 个评论
    基于MT9M114+CYUSB3014的UVC摄像头开发4(亮度控制)
    1、 本文简单描述一下UVC的亮度控制机制,实际上就是测试AN75779的亮度功能。测试工具有两个,一个是关于位机出图像的E-CAM软件,另一个是监测USB3 是关于 e-CAM 软件更改亮度的截图,如下图: 弹出的控制页面中只有亮度是可以操作的,其它是灰色的。当然,后面的文章会介绍使能对比度、色调等其它控制功能,不过是收费的。 2、 这里用 BUS HOUND 软件监听 USB 总线上的控制传输指令,数据如下: 上图是软件 e-CAM 发出的两条指令,第一条指令是 8 个字节, 21 01 00 02 00 02 02 00 ,控制传输指令 CTL 是 USB 协议定义的指令,具体 8 个字节的含义用户可以自行查阅 UVC 标准协议。第二条指令 2 个字节, 31 00 。这个简单的控制传输指令,也可以用 BUS HOUND 软件完成,具体如下 : 图中 1 是选择 USB 传输; 图中 2 是选择控制传输; 图中 3 是输出实际的 8 字节控制传输指令; 图中 4 是输入要发送的 2 字节数据; 3、 结合上图中的8字节控制传输指令,请直接对照UVC协议具体分析一下(UVC协议第4章,或者第86页)。 第1字节21; 第2字节01,对应bRequest;常数定义操作的类型,具体见UVC协议的第87页,常数定义如下: 第3、4字节00 02;对应wValue; 第5、6字节00 02;对应wIndex; 第7、8字节02 00;对应wLength; 4 、亮度控制部分代码分析 打开文件uvc.c文件,我们看下程序是如何处理这8个字节的控制传输指令上的,定位在第323行上,如下: 函数CyFxUVCApplnUSBSetupCB ( )的输入参数有两个,如上图标记A,两个32位变量setupdat0和setupdat1正好是8个单字节,即是8个字节的控制传输指令;上图标记B的则是从这8个字节中按UVC协议提取的5个变量,分别是bmReqType,bRequest,wValue,wIndex,和wLength。 上位机发送的CTL指令为:21 01 00 02 00 02 02 00。注意到setupdat0=0x0200_0121;setupdat1=0x0002_0200,因为CYUSB3014内核的存储器组织是小端对齐的,所以4个字节的顺序是正好相反的。经过函数CyFxUVCApplnUSBSetupCB()的处理,如上图中标记B的处理,控制传输的5个变量的值如下: bmReqType=0x21; bRequest =0x01; wValue =0x0200; wIndex =0x0200; wLength=0x0002; 上图中标记C的代码,是识别出UVC的控制指令后,通过事件设置函数CyU3PEventSet()设置事件CY_FX_UVC_VIDEO_CONTROL_REQUEST_EVENT。 接收事件CY_FX_UVC_VIDEO_CONTROL_REQUEST_EVENT是在函数UVCAppEP0Thread_Entry()中完成的。此函数在文件uvc.c中的第1667行,如下图: 通过获取事件函数CyU3PEventGet(),上图中标记A的,获取事件CY_FX_UVC_VIDEO_CONTROL_REQUEST_EVENT。再通过上图标记B的代码,识别出 8==CY_FX_UVC_PROCESSING_UNIT_ID=0x02,执行函数UVCHandleProcessingUnitRqts()。 函数UVCHandleProcessingUnitRqts()在第1215行,如下图: 上图红框中代码是设置亮度的代码,先通过函数CyU3PUsbGetEP0Data()读出OUT传输的两个字节,存入变量glEp0Buffer中,再经过变量值范围检查后执行设置亮度的函数SensorSetBrightness()。 5、亮度设置相关的还包括描述符部分,以AN75779的USB2描述符为例,如下: 上面的处理单元共有3个字节的位控制字节,最低字节的D0位代表亮度控制,这是UVC协议定义好的。 如果将上面的D0位设置为0,再编绎程序,下载到电路板中,图像正常,但亮度控制功能所属的视频属性控制页都不显示了,仅剩下照相机控制页了。 作为上面的对比,将图像属性控制的3个字节的最低字节8位全部设置为1,即FF, * D0: Brightness;//亮度 * D1: Contrast;//对比度 * D2: Hue;//色调 * D3: Saturation;//饱合度 * D4: Sharpness;//清晰度 * D5: Gamma;//伽玛 * D6: White Balance Temperature;//白平衡 * D7: White Balance Component;//白平衡 未完,接下一章。 良子USB,20200912 专注USB3.0、FPGA、PCIE、UVC摄像头开发 QQ:1345482533
  • 热度 4
    2018-3-18 09:45
    4064 次阅读|
    0 个评论
    CYPRESS EZ- U SB CX3是业界最灵活的USB 3.0摄像机控制器,凡是支持移动工业处理器界面(MIPI)2类相机串口(CSI-2)1.01版标准的任何图像处理器,均可采用这款产品,添加USB 3.0连接性。 CX3理想适用于高分辨率(HD)、高速图像捕获应用。CX3能够在无需压缩的情况下传输帧频为每秒30帧的1080p或帧频为60fps的720p视频。 日前,Raytrix GmbH在其全新3-D摄像机中选用了赛普拉斯的EZ-USB· CX3· USB 3.0 摄像机控制器。EZ-USB CX3为创新性的R42 3-D光场摄像机提供5-Gbps的性能。R42可拍摄4000张4000万像素的图片,利用CX3解决方案的吞吐能力可以提供扩展景深的3-D图像。 Ratrix GmbH 的创始人Lennart Wietzke博士说:“EZ-USB CX3 USB 3.0控制器提供了R42摄像机急需的性能。CX3的 SuperSpeed USB 3.0性能使R42拍摄的图像具有无与伦比的3-D景深。其独特的EZ-USB灵活性缩短了我们的设计周期。” EZ-USB CX3可编程USB 3.0摄像机控制器支持MIPI CSI-2 1.01版,具有最多4条数据通道,每条通道的速率可达1 Gbps,总带宽为4 Gbps。CX3支持多种图像格式,包括RAW8/10/12/14, YUV422 (CCIR/ITU 8/10-bit),以及 RGB888/666/565。CX3基于已广为市场接受的EZ-USB FX3?外设控制器平台, 拥有 ARM 9 CPU和512KB SRAM,能为片上图像数据处理提供200 MIPS 的计算能力。CX3支持多种外设接口,例如I2C, SPI和 UART, 可通过编程实现转动、俯仰、变焦以及其他相机控制功能。 CYUSB3065开发板已经上架,具体如下: 良子,QQ:1345482533 https://liangziusb.taobao.com
  • 热度 9
    2016-5-26 15:44
    563 次阅读|
    0 个评论
    By Toradex 秦海 随着工业产品智能化发展,摄像头作为图像采集在嵌入式设备中需求越来越多,目前常见的摄像头接口有专用的Parallel Camera接口和MIPI CSI接口,以及USB/Ethernet Camera等采用USB, Ethernet等接口,本文就着重展示摄像头专用接口MIPI CSI在嵌入式Linux下的应用. MIPI (Mobile Industry Processor Interface) 摄像头接口标准是由MIPI® Alliance Camera Working Group针对传统并行摄像头存在的问题提出的一个串行高速摄像头接口定义, 目前有MIPI CSI-2和MIPI-CSI-3两个协议定义,本文涉及的均为MIPI CSI-2协议接口, 目前已经从V1.0 发布发展到V1.3发布, D-PHY下传输带宽也从1Gbps/lane 提高到2.5Gbps/lane, V1.3新引入的C-PHY则更高,关于MIPI CSI详细说明请参考 这里 .   1).  准备 a). 本文所使用的硬件平台为 Toradex  工业产品级 Apalis i.MX6D 和 T30 ARM 核心板模块,搭配 Apalis Eva Board 开发板和 Apalis T30 Mezzanine  扩展卡 b). MIPI CSI-2摄像头使用基于OV5640的摄像头模块 c). Parallel Camera摄像头使用 Toradex ACM 摄像头(基于ADV7180)模块搭配监控摄像头 d). 软件使用Toradex官方发布的 嵌入式Linux  V2.5 Beta3发布   2).  物理连接示意图   3). Apalis i.MX6D a). 模块支持两路Parallel Camera接口和一路MIPI CSI-2 V1.0接口(1-4 lane) b). V2.5Beta3版本Linux image已经包含OV5640和ADV7180的驱动和相应的device tree  patch ,因此上电后系统可以直接识别摄像头设备/dev/video0(ADV7180)和/dev/video2(OV5640) ----------------- root@apalis-imx6:~# dmesg |grep adv   adv7180 3-0021: no sensor pwdn pin available mxc_v4l2_master_attach: ipu0:/csi0 parallel attached adv7180:mxc_ v4l2_cap0 root@apalis-imx6:~# dmesg |grep ov5640 ov5640_mipi 3-003c: request of ov5640_mipi_reset failed mxc_v4l2_master_attach: ipu0:/csi1 parallel attached ov5640_mipi: mxc_v4l2_cap2 camera ov5640_mipi is found ov5640_set_virtual_channel: virtual channel=1 ov5640_set_virtual_channel: virtual channel=1 ov5640_set_virtual_channel: virtual channel=1 ----------------- c). 运行下面gstreamer pipeline测试MIPI CSI-2摄像头 ----------------- /* 640x480分辨率抓取并播放 framerate=90 */ gst-launch -vvv imxv4l2src device=/dev/video2 capture-mode=0 fps-n=90 ! imxv4l2sink disp-width=640 disp-height=480 /* 720P分辨率抓取并播放 framerate=60 */ gst-launch -vvv imxv4l2src device=/dev/video2 capture-mode=4 fps-n=60 ! imxv4l2sink disp-width=1280 disp-height=720 /* 1080P分辨率抓取并播放 framerate=15 */ gst-launch -vvv imxv4l2src device=/dev/video2 capture-mode=5 fps-n=15 ! imxv4l2sink ----------------- d). 分别对应的CPU占用率如下 ----------------- //640x480 CPU1 - 48% CPU2 - 1% //720P CPU1 - 100% CPU2 - 1% //1080P CPU1 - 100% CPU2 - 1% ----------------- d). 和Parallel Camera摄像头同时显示 ./ 原生ipu driver无法支持两路camera同时显示,需要对image source code 打patch,然后按照这里的说明重新编译kernel 和 modules,并部署到Apalis i.MX6模块. ./ 然后运行下面gstreamer pipeline来进行同时显示 ----------------- gst-launch -vvv imxv4l2src device=/dev/video2 capture-mode=0 fps-n=30 ! imxv4l2sink device=/dev/video17 disp-width=640 disp-height=480 gst-launch -vvv tvsrc device=/dev/video0 ! imxv4l2sink device=/dev/video16 disp-width=640 disp-height=480 axis-top=480 ----------------- ./ 显示效果如下 ./ 此时CPU占用率 ----------------- CPU1 60% CPU2 40% ----------------- 4). Apalis T30 a). 模块支持两路Parallel Camera接口和一路MIPI CSI-2 V1.0接口(1-4 lane) b). 手动加载驱动模块, 识别出 /dev/video0 (ADV7180)和/dev/video1(OV5640) ----------------- root@apalis-t30:~# modprobe videobuf2-memops root@apalis-t30:~# modprobe videobuf2-dma-nvmap root@apalis-t30:~# modprobe adv7180 root@apalis-t30:~# modprobe ov5640 root@apalis-t30:~# modprobe tegra_v4l2_camera ----------------- c). 运行下面gstreamer pipeline测试MIPI CSI-2摄像头 ----------------- /* 640x480分辨率抓取并播放 framerate=90 */ gst-launch -vvv v4l2src device=/dev/video1 ! 'video/x-raw-yuv, width=640, height=480, framerate=90/1' ! deinterlace tff=1 method=4 ! nv_omx_videomixer ! nv_gl_eglimagesink /* 1296x972分辨率抓取并播放 framerate=60 */ gst-launch -vvv v4l2src device=/dev/video1 ! 'video/x-raw-yuv, width=1296, height=972, framerate=60/1' ! deinterlace tff=1 method=4 ! nv_omx_videomixer ! nv_gl_eglimagesink /* 1920x1088分辨率抓取并播放 framerate=15 */ gst-launch -vvv v4l2src device=/dev/video1 ! 'video/x-raw-yuv, width=1920, height=1088, framerate=15/1' ! deinterlace tff=1 method=4 ! nv_omx_videomixer ! nv_gl_eglimagesink ----------------- d). 分别对应的CPU占用率如下 ----------------- //640x480 CPU1 - 85% CPU2 - 0% CPU3 - 0% CPU4 - 0% //720P CPU1 - 90% CPU2 - 70% CPU3 - 0% CPU4 - 0% //1080P CPU1 - 100% CPU2 - 60% CPU3 - 0% CPU4 - 0% ----------------- 5).  总结 随着ARM处理器性能越来越强大,高质量的摄像头解决方案的需求在嵌入式工业领域也会越来越广泛,MIPI CSI无疑是目前最好的方案之一,相信会有广阔的前景。
  • 热度 11
    2016-5-26 15:15
    981 次阅读|
    0 个评论
    By Toradex 秦海 随着工业产品智能化发展,摄像头作为图像采集在嵌入式设备中需求越来越多,目前常见的摄像头接口有专用的Parallel Camera接口和MIPI CSI接口,以及USB/Ethernet Camera等采用USB, Ethernet等接口,本文就着重展示摄像头专用接口MIPI CSI在嵌入式Linux下的应用. MIPI (Mobile Industry Processor Interface) 摄像头接口标准是由MIPI® Alliance Camera Working Group针对传统并行摄像头存在的问题提出的一个串行高速摄像头接口定义, 目前有MIPI CSI-2和MIPI-CSI-3两个协议定义,本文涉及的均为MIPI CSI-2协议接口, 目前已经从V1.0 发布发展到V1.3发布, D-PHY下传输带宽也从1Gbps/lane提高到2.5Gbps/lane, V1.3新引入的C-PHY则更高,关于MIPI CSI详细说明请参考 这里 .   1).  准备 a). 本文所使用的硬件平台为 Toradex  工业产品级 Apalis i.MX6D 和 T30 ARM 核心板模块,搭配 Apalis Eva Board 开发板和 Apalis T30 Mezzanine  扩展卡 b). MIPI CSI-2摄像头使用基于OV5640的摄像头模块 c). Parallel Camera摄像头使用 Toradex ACM 摄像头(基于ADV7180)模块搭配监控摄像头 d). 软件使用Toradex官方发布的 嵌入式Linux  V2.5 Beta3发布   2).  物理连接示意图     3). Apalis i.MX6D a). 模块支持两路Parallel Camera接口和一路MIPI CSI-2 V1.0接口(1-4 lane) b). V2.5Beta3版本Linux image已经包含OV5640和ADV7180的驱动和相应的device tree  patch ,因此上电后系统可以直接识别摄像头设备/dev/video0(ADV7180)和/dev/video2(OV5640) ----------------- root@apalis-imx6:~# dmesg |grep adv   adv7180 3-0021: no sensor pwdn pin available mxc_v4l2_master_attach: ipu0:/csi0 parallel attached adv7180:mxc_ v4l2_cap0   root@apalis-imx6:~# dmesg |grep ov5640 ov5640_mipi 3-003c: request of ov5640_mipi_reset failed mxc_v4l2_master_attach: ipu0:/csi1 parallel attached ov5640_mipi: mxc_v4l2_cap2 camera ov5640_mipi is found ov5640_set_virtual_channel: virtual channel=1 ov5640_set_virtual_channel: virtual channel=1 ov5640_set_virtual_channel: virtual channel=1 ----------------- c). 运行下面gstreamer pipeline测试MIPI CSI-2摄像头 ----------------- /* 640x480分辨率抓取并播放 framerate=90 */ gst-launch -vvv imxv4l2src device=/dev/video2 capture-mode=0 fps-n=90 ! imxv4l2sink disp-width=640 disp-height=480 /* 720P分辨率抓取并播放 framerate=60 */ gst-launch -vvv imxv4l2src device=/dev/video2 capture-mode=4 fps-n=60 ! imxv4l2sink disp-width=1280 disp-height=720 /* 1080P分辨率抓取并播放 framerate=15 */ gst-launch -vvv imxv4l2src device=/dev/video2 capture-mode=5 fps-n=15 ! imxv4l2sink ----------------- d). 分别对应的CPU占用率如下 ----------------- //640x480 CPU1 - 48% CPU2 - 1% //720P CPU1 - 100% CPU2 - 1% //1080P CPU1 - 100% CPU2 - 1% ----------------- d). 和Parallel Camera摄像头同时显示 ./ 原生ipu driver无法支持两路camera同时显示,需要对image source code 打 patch ,然后按照这里的说明重新编译kernel 和 modules,并部署到Apalis i.MX6模块. ./ 然后运行下面gstreamer pipeline来进行同时显示 ----------------- gst-launch -vvv imxv4l2src device=/dev/video2 capture-mode=0 fps-n=30 ! imxv4l2sink device=/dev/video17 disp-width=640 disp-height=480 gst-launch -vvv tvsrc device=/dev/video0 ! imxv4l2sink device=/dev/video16 disp-width=640 disp-height=480 axis-top=480 ----------------- ./ 显示效果如下 ./ 此时CPU占用率 ----------------- CPU1 60% CPU2 40% -----------------   4). Apalis T30 a). 模块支持两路Parallel Camera接口和一路MIPI CSI-2 V1.0接口(1-4 lane) b). 手动加载驱动模块, 识别出 /dev/video0 (ADV7180)和/dev/video1(OV5640) ----------------- root@apalis-t30:~# modprobe videobuf2-memops root@apalis-t30:~# modprobe videobuf2-dma-nvmap root@apalis-t30:~# modprobe adv7180 root@apalis-t30:~# modprobe ov5640 root@apalis-t30:~# modprobe tegra_v4l2_camera ----------------- c). 运行下面gstreamer pipeline测试MIPI CSI-2摄像头 ----------------- /* 640x480分辨率抓取并播放 framerate=90 */ gst-launch -vvv v4l2src device=/dev/video1 ! 'video/x-raw-yuv, width=640, height=480, framerate=90/1' ! deinterlace tff=1 method=4 ! nv_omx_videomixer ! nv_gl_eglimagesink /* 1296x972分辨率抓取并播放 framerate=60 */ gst-launch -vvv v4l2src device=/dev/video1 ! 'video/x-raw-yuv, width=1296, height=972, framerate=60/1' ! deinterlace tff=1 method=4 ! nv_omx_videomixer ! nv_gl_eglimagesink /* 1920x1088分辨率抓取并播放 framerate=15 */ gst-launch -vvv v4l2src device=/dev/video1 ! 'video/x-raw-yuv, width=1920, height=1088, framerate=15/1' ! deinterlace tff=1 method=4 ! nv_omx_videomixer ! nv_gl_eglimagesink ----------------- d). 分别对应的CPU占用率如下 ----------------- //640x480 CPU1 - 85% CPU2 - 0% CPU3 - 0% CPU4 - 0% //720P CPU1 - 90% CPU2 - 70% CPU3 - 0% CPU4 - 0% //1080P CPU1 - 100% CPU2 - 60% CPU3 - 0% CPU4 - 0% -----------------   5).  总结 随着ARM处理器性能越来越强大,高质量的摄像头解决方案的需求在嵌入式工业领域也会越来越广泛,MIPI CSI无疑是目前最好的方案之一,相信会有广阔的前景。
  • 热度 8
    2015-4-9 11:32
    480 次阅读|
    0 个评论
    “MIPI开放日”上,其宣布发布其最新的音频接口规范—SoundWire。此新发布的规范适用于智能手机、平板、移动电脑和其他设备上的扩音器、麦克风和音频编码器。 正如MIPI联盟主席所说,MIPI规范提高了移动终端的质量,因为人们可以在正确的外围设备上使用正确的规范,比如在相机上。MIPI的优势在于使全球范围内的主要移动终端贡献者和行业专家携手合作,共同来定义接口规范。 会后,MIPI联盟首次将会议相关的采访资料整理成为视频并发布。在视频中,MIPI联盟主席及就任于行业领先企业的会员谈论了MIPI如何推动移动行业规范的制定与发展,表达了对于「超越移动」这一概念的期待,并讲述了MIPI会员尤其是正在着重发展研发能力的中国公司将怎样从MIPI的接口规范中受益。对于很多中国的公司,正从纯粹的制造商向创立其自有品牌及拥有更高研发能力的方向转变。MIPI联盟希望吸引更多来自中国的声音与力量加盟,参与到这些技术发展的趋势中。 附:视频链接如下: 优酷:http://v.youku.com/v_show/id_XODY5OTkwNDU2.html  
相关资源
广告