IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: 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标准协议规范(二)

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
或者云盘下载: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 兼容视频数据流交互的功能分组。
事实上,Video interface class包含了VC和VS。

视频接口类有专门的code码标识:

Video Interface Class CodeValue
CC_VIDEO0x0E

2.2 Video Interface subclass and Protocol

Video interface class又细分两种subclass类:

  • Video Control interface
  • Video streaming interface

说明:
视频控制接口是访问视频功能内部的单个入口点,所有与视频功能各拓扑单元或终端都必须通过视频控制接口来实现。所以视频函数内部相关的所有描述符都是特定于类的视频控制接口描述符的一部分。
视频流接口用于主机和设备视频功能之间进行传输视频数据。一个视频功能可以不包括视频流接口,也可以包含多个视频流接口。

Interface Association Descriptor(IAD)也有自己的功能subclass:

  • Video interface colloction

视频接口subclass code码:

Video Subclass CodesValue
SC_UNDEFINED0x00
SC_VIDEOCONTROL0x01
SC_VIDEOSTREAMING0x02
SC_VIDEO_INTERFACE_COLLECTION0x03

视频接口协议code标识码:

Video Interface Protocol CodesValue
PC_PROTOCOL_UNDEFINED0x00
PC_PROTOCOL_150x01

2.3 UVC功能拓扑

为了能够操纵视频功能的物理属性,其功能必须划分为可寻址实体。
UVC确定了以下两个通用实体:

  • Units
  • Teminals

2.3.1 Unit单元

Unit可以理解为构建出UVC设备功能的各功能单元,多个Unit按照一定的规则连接后就是一个完整的UVC功能设备。Spec规定Unit有一个或多个入口,一个出口;也就是说可以有多个Unit或Terminal作为一个Unit的输入源头,而数据在流经Unit后仅能作为其他Unit或Terminal的一个输入源头。
如下图规范:

在这里插入图片描述

规范1.5中定义了四种Unit:

  • Selector Unit (SU)
  • Processing Unit (PU)
  • Encoding Unit (EU)
  • Extension (XU)

2.3.1.1 SU(选择器单元)

SU单元用来控制图像数据采集源的切换和选择。比如一个设备支持多种输入源,将通过SU进行选择切换。
例如下面相机拓扑图有两个数据输入源,这时需要SU来进行切换和选择。
选择器单元一般在拓扑图中用下图表示:
在这里插入图片描述

2.3.1.2 PU(处理单元)

PU代表对采集所得图像数据进行加工的单元,负责对采集到的图像特性进行调整设置,它有一个单一的输入和输出引脚。
主要有以下一些特性:
User Controls

  • Brightness 背光
  • Hue 色度
  • Saturation 饱和度
  • Sharpness 锐度
  • Gamma 伽马
  • Digital Multiplier (Zoom) 数字放大
    Auto Controls
  • White Balance Temperature 白平衡色温
  • White Balance Component 白平衡组件
  • Backlight Compensation 背光补偿
  • Contrast 对比度
    Other
  • Gain 增益
  • Power Line Frequency 电源线频率
  • Analog Video Standard 模拟视频标准
  • Analog Video Lock Status 模拟视频锁状态

处理单元一般在拓扑图中用下图表示:
在这里插入图片描述

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:

  • Input Terminal
  • Output Terminal

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), 用于控制视频流传输中的设备特性的。
它规定支持以下特性控制 :

  • Scanning Mode (Progressive or Interlaced) 自动扫描(逐行或隔行扫描)
  • Auto-Exposure Mode 自动曝光模式
  • Auto-Exposure Priority 自动曝光优先级
  • Exposure Time 曝光时间
  • Focus 焦点
  • Auto-Focus 自动对焦
  • Simple Focus 简单聚焦
  • Iris 可变光圈
  • Zoom 缩放
  • Pan 移动镜头
  • Roll 滚动
  • Tilt 倾斜
  • Digital Windowing 数字窗口
  • Region of Interest 感兴趣区域

在USB_Video_Example 1.5中以一个网络摄像头设备为例展现其拓扑结构的示例图如下:
拓扑一:
在这里插入图片描述
拓扑二:
在这里插入图片描述

参考文章

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-09-09 11:56:09  更:2021-09-09 11:57:35 
 
开发: 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-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计