| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> USB协议 - UVC标准协议规范(二) -> 正文阅读 |
|
[嵌入式]USB协议 - UVC标准协议规范(二) |
USB协议-UVC标准协议规范(二)1.概述UVC,全称为:USB video(device) class,是微软与另外几家设备厂商联合推出的为USB视频捕获设备定义的协议标准,目前已成为USB org标准之一。 USB协议中,除了通用的软硬件电气接口规范等,还包含了各种各样的Class协议,用来为不同的功能定义各自的标准接口和具体的总线上的数据交互格式和内容。这些Class协议的数量非常多,最常见的比如支持U盘功能的Mass Storage Class,以及通用的数据交换协议:CDC class。此外还包括Video、Audio Class, Print Class等等。正是由于这些Class协议,大大促进了USB设备的普及,比如说各个厂商生产的U盘都能通过操作系统自带的驱动程序来使用。 所以说UVC仅仅只是USB规范协议中设备类规范的其中一种,是用作USB接口的视频设备的一个统一的数据交换规范。使用 UVC 的好处 USB 在 Video这块也成为一项标准了之后,硬件在各个程序之间彼此运行会更加顺利,而且也省略了驱动程序安装这一环节,操作系统只要是 Windows XP SP2 之后的版本都可以支持 UVC,Linux系统自2.4以后的内核都支持了大量的设备驱动,其中支持UVC设备。 在UVC规范中明确要求,具有实际UVC功能的视频设备需要具备两种接口:一种为VC Interface(视频控制接口),VS Interface(视频流接口)。其中VC接口用于对UVC设备进行配置操控,而VS接口则用于负责传输视频数据流,两者相互配合完成UVC设备功能。一般情况下设备是只有有一个VC接口和多个VS接口。 本文对USB的功能类协议USB Video Class(UVC)的具体设计进行介绍,但不会介绍USB基础协议,所以需要对USB基础协议有一定的了解,包括USB四大描述符以及四种传输方式。 规范文档通过官方链接下载USB_Video_Class_1_5 2.UVC功能特征video function(视频功能) 位于设备类层次结构中的接口级别。它由许多接口组成,这些接口将相关pipe(管道)分组在一起,共同实现video function(视频功能)的接口。 video function(视频功能)通过其(Video interface)视频接口寻址。 每个视频功能都有一个 VideoControl (VC) 接口,并且可以有多个 VideoStreaming (VS) 接口。 VideoControl (VC) 接口用于访问该功能的设备控件,而 VideoStreaming (VS) 接口用于将数据流传输进和出该功能。 单个 VideoControl 接口和属于同一视频功能的 VideoStreaming 接口的集合称为VideoInterfaceCelloction视频接口集合(VIC)。 Interface Association Descriptor(接口关联描述符 )(IAD) 用于描述视频接口集合。 2.1 Video Interface Class视频接口类(Video interface class)将所有可以与 USB 兼容视频数据流交互的功能分组。 视频接口类有专门的code码标识:
2.2 Video Interface subclass and ProtocolVideo interface class又细分两种subclass类:
Interface Association Descriptor(IAD)也有自己的功能subclass:
视频接口subclass code码:
视频接口协议code标识码:
2.3 UVC功能拓扑为了能够操纵视频功能的物理属性,其功能必须划分为可寻址实体。
2.3.1 Unit单元Unit可以理解为构建出UVC设备功能的各功能单元,多个Unit按照一定的规则连接后就是一个完整的UVC功能设备。Spec规定Unit有一个或多个入口,一个出口;也就是说可以有多个Unit或Terminal作为一个Unit的输入源头,而数据在流经Unit后仅能作为其他Unit或Terminal的一个输入源头。 规范1.5中定义了四种Unit:
2.3.1.1 SU(选择器单元)SU单元用来控制图像数据采集源的切换和选择。比如一个设备支持多种输入源,将通过SU进行选择切换。 2.3.1.2 PU(处理单元)PU代表对采集所得图像数据进行加工的单元,负责对采集到的图像特性进行调整设置,它有一个单一的输入和输出引脚。
处理单元一般在拓扑图中用下图表示: 2.3.1.3 EU(编码单元)EU用于对采集所得的数据进行个性化处理的功能。编码单元控制编码器的属性,该编码器对通过它流式传输的视频进行编码。 它具有单个输入和多个输出引脚。 它支持以下功能,这些功能可以在流式传输开始之前或之后使用。 参考规范2.3.6 Encoding Unit 2.3.1.4 XU(扩展单元)XU是为了特定供应商添加规范而提供的单元。 2.3.2 Teminals端点Terminal是指整个UVC功能的入口和出口,逻辑意义上讲Terminal只有一个出口或者入口,它要么代表整个UVC功能的数据输入点,要么代表数据在流经UVC功能内部的各Unit功能单元后的最终流入点。 规范中描述了以下Teminals:
2.3.2.1 IT(Input Terminal)作为数据流入video function的接收器,功能是作为已经被提取出来的数据的数据源,说白了就是UVC功能的数据源头。 2.3.2.2 OT(Output Terminal)作为Video Function视频信息流出的出口,功能是作为输出数据的接收器。OT只有一个输入pin,处理流程最后一个单元会将它的out pin与OT的in pin连接在一起。 2.3.2.3 CT(Camera Terminal)CT代表硬件上的数据采集源(sensor), 用于控制视频流传输中的设备特性的。
在USB_Video_Example 1.5中以一个网络摄像头设备为例展现其拓扑结构的示例图如下: |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/29 9:17:44- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |