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

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

3天内不再提示

什么是中断端点?什么情况下需要用到UVC中断端点呢?

漫谈嵌入式 来源:漫谈嵌入式 2023-11-27 10:15 次阅读

本文主要介绍一下UVC 中断控制端点,大多数情况下UVC 的控制都是由端点0 控制的,一般情况下很少用到UVC 中断端点。今天主要介绍一下UVC 中断端点以及什么情况下需要用到中断端点。

1. 什么是中断端点?

一个USB视频控制接口可以支持一个可选的中断端点,以通知主机关于视频功能中不同的可寻址实体(终端、单元、接口和端点)的状态。如果存在中断端点,则被整个视频接口集合用于向主机传递状态信息。它被认为是视频控制接口的一部分,因为这是集合的锚定接口。

以下情况中断端点是必须支持的:

设备支持硬件触发静态抓拍

设备支持 AutoUpdate 控件

该设备实现任何异步控制

b9bb7b84-8c45-11ee-939d-92fbcf53809c.jpg

2. 标准请求

2.1 Status Packet Format

Offset Field Size Value Description
0 bStatuType 1 Bitmap/Number D7...D4:Reserved
D3...D0:Originator
0:Reserved
1:VideoControl interface
2:VideoStreaming interface
1 bOriginator 1 Number ID of the Terminal, Unit or Interface that
reports the interrupt

bStatusType:Status 类型

Originator:表示请求来源是VC 还是VS

bOriginator:表示来源的有效ID 或者接口号

Terminal ID

Unit ID

Interface numer

2.2 Status Packet Format(Video Control)

Offset Field Size Value Description
0 bStatuType 1 Bitmap/Number 0x1
1 bOriginator 1 Number ID of the Terminal, Unit or Interface that
reports the interrupt
2 bEvent 1 Number 0x00: Control Change
0x01 – 0xFF: Reserved
3 bSelector 1 Number Control Change Report the Control Selector
of the control that (cs)
4 bAttribute 1 Number Specify the type of control change:
0x00: Control value change
0x01: Control info change
0x02: Control failure change
0x03: Control min change
0x04: Control max change
0x05 – 0xFF: Reserved
5 bValue n bAttribute: Description:
0x00 Equivalent to the result of a GET_CUR
0x01 Equivalent to the result of a GET_INFO
0x02 Equivalent to the result of a GET_CUR
request on VC_REQUEST_ERROR_CODE_CONTROL
0x03 Equivalent to the result of a GET_MIN
0x04 Equivalent to the result of a GET_MAX

2.3 Status Packet Format(Video Stream)

Offset Field Size Value Description
0 bStatuType 1 Bitmap/Number 0x2
1 bOriginator 1 Number ID of the Terminal, Unit or Interface that
reports the interrupt
2 bEvent 1 Number 0x00: Button Press
0x01 – 0xFF: Sream Error
3 bValue n Number Button Press: (n=1)
0x00: Button released
0x01: Button pressed

3. 硬件触发中断

状态中断端点的定义用途之一是让硬件触发器通知主机软件启动静止图像捕获。例如,当硬件检测到按下按钮时,状态中断端点将发出来自相关视频流接口的中断。触发中断的事件(按键按下或者释放)在中端包里面显示。该按钮的默认初始状态是“释放”状态。

设备必须指定它是否支持硬件触发器,以及主机软件应该如何响应硬件触发器事件。这些都是在相关的视频流接口中特定于类的描述符中指定的。

4. Still image Capture

5.1 Still image 方法

摄像机的一个共同特性是支持与视频流相关联的静态图像捕获。这可以通过可编程的软件触发器或硬件触发器来启动。

根据所使用的方法,静止图像帧可能必须与流的视频帧大小相同。有几种支持的方法来捕获静态图像,设备必须在相关视频流接口的特定类描述符中指定它支持哪种方法。

Method 1 :主机软件将在接收到硬件触发事件后,将从相关视频流接口中的活动视频管道中提取下一个可用的视频帧。在这种情况下,硬件不会中断或改变视频流。对于这种方法,静止图像帧始终与流的视频帧大小相同

Method 2:如果设备支持更高质量的静止图像,它可以选择通过活动视频管道传输特定的数据包,在这种情况下,主机软件将暂停视频流,根据静态探测/提交协商(根据带宽可用性)选择最佳带宽替代设置。发送一个 VS_STILL_IMAGE_TRIGGER_CONTROL 请求((see section 4.3.1.4, "Still Image Trigger Control"),并准备好接收静止的图像数据。该设备传输在有效载荷包头中被标记为这样的静止图像数据。一旦收到完整的静止图像,主机软件将恢复到原来的替代设置,并恢复视频流。

Method 3 :这种方法能够从一个专用的批量静止图像管道中捕获更高质量的静止图像。通过这样做,活动的数据流将继续不间断地运行。这种方法涵盖有两种情况:

Method Isochronous video data pipe Bulk video data pipe
Method 1 1 Isochronous (Video) 1 Bulk (Video)
Method 2 1 Isochronous (Video/Still) 1 Bulk (Video/Still)
Method 3 1 Isochronous (Video)
1 Bulk (Still)
1 Bulk (Video)
1 Bulk (Still)

在第一种情况下,主机软件从该设备启动静止图像捕获。它通过发送一个 VS_STILL_IMAGE_TRIGGER_CONTROL 请求,通过专用的bulk 端点((see section 4.3.1.4, "Still Image Trigger Control")。在发出请求后,主机将开始从相关的视频流接口的批量静态图像端点接收静态图像,该设备捕获高质量的静止图像,并将数据传输到批量静止图像端点。

在第二种情况下,设备在检测到硬件触发器后启动静止图像传输。当硬件检测到按下按钮时,状态中断端点将发出来自相关视频流接口的中断。如果bTriggerUsage字段被设置为初始化静止图像捕获(initiate still image capture),设备将设置 VS_STILL_IMAGE_TRIGGER_CONTROL 的bTrigger 字段为分离的bulk 传输,然后,主机软件应该开始接收在接收到中断后设备捕获的静止图像数据。传输完成后,设备应将bTrigger 字段重置为“正常运行”

5.2 Still image trigger control

此控件通知设备开始通过相关的同步或批量管道发送静止图像数据。一个专用的静止图像批量管道仅用于静止图像捕获的方法3。此控制仅在流媒体发生时设置,并在发送静止图像后由硬件重置为“正常运行”模式。只有当设备支持静止图像检索的方法2或方法3时,才需要此控制。

Control Selector VS_STILL_IMAGE_TRIGGER_CONTROL
Mandatory Requests SET_CUR, GET_CUR, GET_INFO
wLength 1
Offset Field Size Value Description
0 bTrigger 1 Number The setting for the Still Image Trigger
Control:
0: Normal operation.
1: Transmit still image.
2: Transmit still image via dedicated bulk pipe
3: Abort still image transmission

b9d7b434-8c45-11ee-939d-92fbcf53809c.png

5. Stream Error Control

当发生以下事件之一时,主机软件应该向此控件发送一个GET_CUR请求,以确定该错误:

视频或静止图像有效负载头中的错误位被设置了。

该设备向主机发出一个“流错误”中断(Error Code Control)。Status Interrupt Endpoint 上报

批量视频端点在事务的数据或握手阶段向主机返回一个stall

对于主机正在向设备传输视频数据的场景,主机不能使用有效负载报头中的错误位来检测设备错误。因此,为了确定何时发生流媒体错误,主机必须依赖于来自设备的控制更改中断或批量端点Stall

Stream Error Control

Control Selector VS_STREAM_ERROR_CODE_CONTROL
Mandatory Requests GET_CUR, GET_INFO
wLength 1
Offset Field Size Value Description
0 bStreamErrorCode 1 Number 0: No Error.
1: Protected content。如果数据源设备检测到视频或静止图像数据是保护的或者不能被传输,会发生这种情况。在这种情况下,在受保护内容期间将发送只包含头的空包
2: Input buffer underrun。如果数据源设备无法按请求的速率提供数据,则它将在缓冲区运行不足期间传输只包含磁头文件的空数据包。
3:Data discontinuity 。表示数据不连续(由于不良介质、编码器错误等)在当前传输中的数据有效负载之前。
4: Output buffer underrun 。数据接收设备没有以足够的速率接收数据。
5: Output buffer overrun。数据接收器设备正在以超过其缓冲能力的速率提供数据。
6: Format change。发生了一个动态格式更改事件。
7: Still image capture error。在静态图像捕获期间出错。

6. Dynamic Format Change Support

某些设备,能够在流媒体发生时动态地改变正在流媒体到主机的视频格式。由于新的视频格式可能具有与旧格式不同的总线带宽要求,因此必须通知主机格式的变化,并允许执行重新配置和总线带宽重新分配所需的,以支持新的视频格式。

该设备通过视频流媒体输入报头(Video Strem Input header )的bmInfo字段表示其对动态格式更改事件的支持。

当发生动态格式更改事件时,将执行以下步骤:

检测到动态格式变化(当流媒体发生时)。(通过 Status Interrupt Endpoint 上报)

设备开始在视频流有效负载头中设置错误位发送空数据有效负载到主机。(uvc payload herder)

设备设置 Stream Error Code Control为格式变化(format change)

主机探测新的流状态,通过VS_PROBE_CONTROL 请求,发送GET_CUR

如果新的格式可用,主机将通过 VS_COMMIT_CONTROL 请求, 发送 SET_CUR。如有必要,通过一个备用接口选择标准请求重新分配USB带宽。如果不能接受新格式,主机将与流探测/提交控件协商一种新格式。

7. 总结

UVC 中断端点 用法如下:

所有VC 上的请求的异步控制(比如图像对比度、亮度、zoom 等)

静态抓拍或者抓拍控制

动态格式切换同步。

典型用法如下:

b9edd3cc-8c45-11ee-939d-92fbcf53809c.jpg

具体路径(以拍照为例):按键拍照,设备通过Status Interrput Endpoint 上报 到 host,host 重新协商开启抓拍。

其他控制也是类似的。中断端点的作用是把设备的行为,及时上报到host 端,以便主机做出调整。






审核编辑:刘清

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

    关注

    9

    文章

    699

    浏览量

    55517
  • 触发器
    +关注

    关注

    14

    文章

    1994

    浏览量

    60999
  • 触发中断
    +关注

    关注

    0

    文章

    11

    浏览量

    6555
  • uvc
    uvc
    +关注

    关注

    1

    文章

    126

    浏览量

    14486

原文标题:UVC 学习:UVC 中断端点介绍

文章出处:【微信号:漫谈嵌入式,微信公众号:漫谈嵌入式】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    同步FIFO和异步FIFO各在什么情况下应用

    我想问一什么情况下需要用异步FIFO,什么情况下用同步FIFO?
    发表于 11-03 17:19

    FX3 SDK 1.3.4使用中断端点来响应UVC控制请求响应非常慢

    JTAG的工作,重新编译固件并设法在硬件上运行它。我有一些代码处理UVC控制请求(一种在EP0上的安装请求),对于某些控件,它不能满足UVC控制请求响应的10毫秒最后期限,因此响应通过中断端点
    发表于 09-18 14:24

    请问mcfw的link什么情况下要用到noNotifyMode?

    请教一mcfw的link,什么情况下需要用到noNotifyMode,以及把notifyNextLink、notifyPrevLink设置为false?不通知对方的话,对方不就不知道了吗?
    发表于 02-18 10:35

    中断端点如何检测中断

    和BulkJin。我在主机上有一个C 2应用程序,用于发送和接收数据。将数据发送到测试系统是完美的。但我收到以下问题:中断端点:如何检测中断?在CYUSB .NET引用中没有示例…任何标志或例程,没有描述
    发表于 06-25 07:37

    HAL库中的CAN在什么情况下会进FIFO0接收中断

    与CAN外设相关的中断向量表有哪些?HAL库中的CAN在什么情况下会进FIFO0接收中断?哪些寄存器的改变会产生相应的中断
    发表于 11-16 09:16

    一般在什么情况下需要用到simulink?

    使用simlink生成嵌入式的代码,一般在什么情况下需要用到simulink,simulink的教程,谁有提供一
    发表于 11-06 08:06

    volte语音通话有什么用,什么情况下可以开/关volte

    听很多人都在讲volte高清语音通话那么什么是vote什么情况下需要开通volte什么情况下又可以关闭volte
    发表于 10-21 16:36 1.7w次阅读

    运算放大电路什么情况下需要用到运放调零?

    在设计电路时,常常会用到运放,很多人对运放的使用还是有些陌生的。其中调零电路,有时候会被认为是鸡肋。究竟什么情况下需要用到运放调零?
    的头像 发表于 10-26 14:13 1.1w次阅读
    运算放大电路<b class='flag-5'>什么情况下</b><b class='flag-5'>需要用到</b>运放调零?

    涨轴磨损修补需要用到什么材料

    涨轴磨损修补需要用到什么材料
    发表于 12-18 10:40 9次下载

    什么情况下使用示波器

    示波器可以把我们看不见的电信号变换成看得见的图像,方便来研究各种电现象的变化过程。那么什么情况下使用示波器? 使用示波器进行测量需要涂有荧光物质的屏面、主机、探头配置和稳定的信号。示波器一般都是
    的头像 发表于 02-01 11:00 5642次阅读

    什么情况下要进行电能质量检测?

    什么情况下要进行电能质量检测?
    发表于 09-08 14:20 655次阅读

    什么情况下选用工业主板

    虽然工业主板和普通主板差异比较多,但是在某些情况下工业主板用于商业环境也是可以的,但是实用性不是很好。什么情况下选用工业主板
    的头像 发表于 02-14 10:34 785次阅读
    <b class='flag-5'>什么情况下</b>选用工业主板

    电机什么情况下需要配减速机?

    电机是运动机械的最常用动力源,今天分享什么情况下电机需要配减速机。
    的头像 发表于 05-26 17:47 1797次阅读
    电机<b class='flag-5'>什么情况下</b><b class='flag-5'>需要</b>配减速机?

    电机什么情况下需要配减速机

    电机是运动机械的最常用动力源,今天分享什么情况下电机需要配减速机。
    的头像 发表于 07-21 17:31 1400次阅读
    电机<b class='flag-5'>什么情况下</b><b class='flag-5'>需要</b>配减速机<b class='flag-5'>呢</b>

    变频器维修需要用到的工具都有哪些

    变频器维修需要用到的工具都有哪些
    的头像 发表于 10-20 08:42 3658次阅读