USB UVC开启 PU功能研究


前言

提示:这里可以添加本文要记录的大概内容:

项目需要:
在哪里学习UVC 肯定是USB中文网
网址

https://www.usbzh.com/article/detail-832.html


提示:以下是本篇文章正文内容,下面案例可供参考

一、UVC拓展结构

UVC摄像头实现的拓扑结构在这里插入图片描述
最简单的结构就是输入直接输出

输入输出连接:通过设置输入输出标志来给连接:输入ID:是01(IT)、PU ID:(连接01 自己是02)、OT ID(03)

在这里插入图片描述

二、修改是否开启亮度等功能 在处理单元

1. 处理单元理解

在这里插入图片描述

处理单元的解释

在这里插入图片描述

 UINT8  bLength;
   UINT8  bDescriptorType;
   UINT8  bDescriptorSubtype;
   UINT8  bUnitID;
   UINT8  bSourceID;
   UINT16 wMaxMultiplier;
   UINT8 bControlSize;
   UINT8 bmControls[3];
   UINT8 iProcessing;
   UINT8 bmVideoStandards;
bLength:描述符的长度,13字节。
bDescriptorType:描述符类型,CS_INTERFACE,值为0x24.
bDescriptorSubtype:描述符子类型。 VC_PROCESSING_UNIT ,值为0x05
bUnitID:ID,非零值。
bSourceID:连接到此单元的单元ID或实体ID.
wMaxMultiplier:如果支持数字乘法器控制,此字段表示最大数字放大倍数乘以100。例如,对于支持1-4.5X的设备数码变焦(4.5倍倍增),此区域设置为450。如不支持,则为0
bControlSize:bmControls的字节大小,为3
bmControls:相应的位为1表示支持这种控制。
D0:亮度
D1:对比度
D2:色调
D3:饱和
D4:锐度
D5:伽马射线
D6:白平衡温度
D7:白平衡分量
D8:背光补偿
D9:增益
D10:电源线频率
D11:色调,自动
D12:白平衡温度,自动
D13:白平衡组件,自动
D14:数字乘法器
D15:数字乘法器限制
D16:模拟视频标准
D17:模拟视频锁定状态
D18:对比度,自动
D19–D23:保留。设为零
bmVideoStandards:处理单元支持的所有模拟视频标准的位图。
D0: None
D1: NTSC – 525/60
D2: PAL – 625/50
D3: SECAM – 625/50
D4: NTSC – 625/50
D5: PAL – 525/60
D6-D7: Reserved. Set to zero.

参考链接

https://www.usbzh.com/article/detail-84.html

2.实际代码部分

参考链接

UVC 描述符实例

https://www.usbzh.com/article/detail-834.html

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

代码如下(示例):

这段代码是一个USB视频类(UVC)设备描述符的片段,具体描述了一个输入终端(Input Terminal),它在这个演示中模拟了一个电荷耦合器件(CCD)传感器(即摄像头)。以下是各个字段的解释:

0x12:bLength字段,表示这个描述符的长度为18字节(十六进制12)。
USB_DESCTYPE_CS_INTERFACE:bDescriptorType字段,表明这是一个类特定的接口描述符(Class-specific Interface Descriptor)。
USB_VC_INPUT_TERMINAL:bDescriptorSubType字段,表明这是一个输入终端(INPUT TERMINAL)子描述符。
0x01:bTerminalID字段,表示这个输入终端的ID为10x01, 0x02:wTerminalType字段,表示这个终端的类型是ITT_CAMERA(即摄像头),具体是CCD传感器类型(十六进制01 02)。
0x00:bAssocTerminal字段,表示这个输入终端没有与任何其他终端关联。
0x00:iTerminal字段,表示这个终端的字符串描述符索引为0(即未使用)。
0x00, 0x00:wObjectiveFocalLengthMin字段,表示最小物镜焦距为0,意味着不支持光学变焦。
0x00, 0x00:wObjectiveFocalLengthMax字段,表示最大物镜焦距为0,同样意味着不支持光学变焦。
0x00, 0x00:wOcularFocalLength字段,通常用于表示目镜焦距,但在这里也为0,表示不支持与目镜相关的功能(在摄像头中通常不适用)。
0x03:bControlSize字段,表示控制字段的大小为3字节。
0x00, 0x00, 0x00:bmControls字段,表示没有支持的控制功能。在这个例子中,所有控制位都被设置为0。
这个输入终端描述符为UVC设备中的摄像头(模拟为CCD传感器)提供了基本的配置信息。它表明这个摄像头不支持光学变焦,也没有与其他终端关联,且没有支持的控制功能。这对于设备枚举和配置过程很重要,使得主机能够正确识别和配置UVC设备中的摄像头部分。

2.修改主要对控制段进行修改

代码如下(示例):

0x00, 0x00, 0x00:bmControls字段,表示没有支持的控制功能。在这个例子中,所有控制位都被设置为0

24 位全为1 就能开启这个功能

在bmControls:相应的位为1表示支持这种控制。
D0:亮度
D1:对比度
D2:色调
D3:饱和
D4:锐度
D5:伽马射线
D6:白平衡温度
D7:白平衡分量
D8:背光补偿
D9:增益
D10:电源线频率
D11:色调,自动
D12:白平衡温度,自动
D13:白平衡组件,自动
D14:数字乘法器
D15:数字乘法器限制
D16:模拟视频标准
D17:模拟视频锁定状态
D18:对比度,自动
D19–D23:保留。设为零

总结

学习使人快乐!
音乐使人愉悦!
日积月累使人充实和自信!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值