USB 20与UVC 11 在Webcam FW传输设定.docx

上传人:b****5 文档编号:3422664 上传时间:2022-11-22 格式:DOCX 页数:48 大小:6.27MB
下载 相关 举报
USB 20与UVC 11 在Webcam FW传输设定.docx_第1页
第1页 / 共48页
USB 20与UVC 11 在Webcam FW传输设定.docx_第2页
第2页 / 共48页
USB 20与UVC 11 在Webcam FW传输设定.docx_第3页
第3页 / 共48页
USB 20与UVC 11 在Webcam FW传输设定.docx_第4页
第4页 / 共48页
USB 20与UVC 11 在Webcam FW传输设定.docx_第5页
第5页 / 共48页
点击查看更多>>
下载资源
资源描述

USB 20与UVC 11 在Webcam FW传输设定.docx

《USB 20与UVC 11 在Webcam FW传输设定.docx》由会员分享,可在线阅读,更多相关《USB 20与UVC 11 在Webcam FW传输设定.docx(48页珍藏版)》请在冰豆网上搜索。

USB 20与UVC 11 在Webcam FW传输设定.docx

USB20与UVC11在WebcamFW传输设定

題目:

USB2.0與UVC1.1在WebcamF/W傳輸設定

尚立Webcam高級工程師Aladdin

前言:

Webcam使用USBVideoClass1.1以及使用USB2.0的通訊協定將Webcam的影像資料傳輸到PC或NB,如果有支援聲音則使用USBAudioClass1.0的協定

內容:

Webcam可以從程式設定了解USB協定

(1)設定StandardDevice

主要設定USB2.0HighSpeed的StandardDeviceDescriptor,定義在USB2.0Spec.Table9.8

設定USB版本,產品的VID,PID,SerialNumber....等

0x00,0x12,//lengthofdevicedecriptor

//DeviceDescriptor

0x12,//bLength:

0x12byte

0x01,//bDescriptorType:

DEVICE

0x00,0x02,//bcdUSB:

version2.00

0xEF,//bDeviceClass:

independentinterfaces

0x02,//bDeviceSubClass:

2

0x01,//bDeviceProtocol:

classspecificprotocolsNOTusedondevicebasis

0x40,//bMaxPacketSize0:

maximumpacketsizeforendpointzero

0xF2,0x04,//idVendor:

vendorID

0xC3,0xB2,//idProduct:

productID

0x27,0x11,//bcdDevice:

devicereleasenumberinBCD

0x01,//iManufacturer:

indexofstring

0x02,//iProduct:

indexofstring

0x00,//iSerialNumber:

indexofstring

0x01,//bNumConfigurations:

1configuration

解釋

Offset0->bLength:

為這個Descriptor的長度為18Bytes,,占1Byte,設定為0x12

Offset1->bDescriptorType,這個Descriptortype,占1Byte,為0x01

Offset2->bcdUSB,USB通訊的版本,占2個Bytes,由於是支援USB2.0,所以要設定0x00,0x02(傳輸先傳低位元組再傳高位元組)

Offset4->bDeviceClass,USB_IF對這DeviceClass的編碼,0xEF

Offset5->bDeviceSubClass,USB_IF對這DevicesubClass編碼,0x02

Offset6->bDeviceProtocol,USB_IF對這DeviceProtocol編碼,0x01

Offset7->bMaxPacketSize,傳輸最大數據包的Size,只可以定義8,16,32,64,這裡定義為64Bytes,為0x40

Offset8->idVendor,為產品的VID根據USB-IF定義,占2bytes,0xF2,0x40

Offset10->idProduct,定義產品的PID,占2bytes,0xC3,0xB2

Offset12->bcdDevice,可定義產品的版本,占2bytes,0x27,0x11

Offset14->iManufacturer,製造廠商,利用index選擇Strings,0x01

Offset15->iProduct,產品名稱,利用index選擇Strings,0x02

Offset16->iSerialNumber,序號,利用index選擇Strings,0x00

Offset17->bNumConfigurations,結構的編號,使用Configuration1,0x01

這個Devicedescriptor傳輸到NB或PC,在Windows的系統的硬體識別碼顯示VID,PID,與Rev

(2)其他速率傳輸設定

Device_QualifierDescriptor,設定非HighSpeedUSBDeviceDescriptor,如Webcam也有支援FullSpeed傳輸,定義在USBSpec.Table9.9

F/W設定為

0x00,0x0A,//lengthofdevicequalifierdescriptor

//DeviceQualifierDescriptor

0x0A,//bLength:

0x0Abyte

0x06,//bDescriptorType:

DEVICEQUALIFIER

0x00,0x02,//bcdUSB:

version2.00

0xEF,//bDeviceClass:

independentinterfaces

0x02,//bDeviceSubClass:

2

0x01,//bDeviceProtocol:

classspecificprotocolsNOTusedondevicebasis

0x40,//bMaxPacketSize0:

maximumpacketsizeforendpointzero

0x01,//bNumConfigurations:

1configuration

0x00,//bReserved:

0x00

解釋

Offset0,為bLength,這DeviceQualifier為10bytes,0x0A

Offset1,為bDescriptorType,設定為0x06

Offset2,為bcdUSB,USB通訊的版本,占2個Bytes,由於是USB2.0,所以要設定0x00,0x02

Offset4,為bDeviceClass,USB-IF對這Device的class編碼,0xEF

Offset5,為bDeviceSubClass,USB-IF對這Device的subclass編碼,0x0x02

Offset6,為bDeviceProtocol,USB-IF對這Device的protocol編碼,0x0x01

Offset7->bMaxPacketSize,傳輸最大數據包的Size,只可以定義8,16,32,64,這裡定義為64,為0x40

Offset8->bNumConfigurations,結構的編號,使用Configuration1,0x01

Offset9->bReserved,保留,需設定0x00

(3)顯示語言編碼

顯示Webcam字串的語言編碼,定義在USB2.0Spec.Table9.15

F/W設定

0x00,0x04,//lengthoflanguageidstringdescriptor

//LanguageIDStringDescriptor

0x04,//bLength

0x03,//bDescriptorType:

STRING

0x09,0x04,//bString:

English(US)

解釋

Offset0為bLength,因指定義一種語言所以為0x04

Offset1為bbDescriptorType,String的Descriptor為0x03

Offset2為wLANGID[0],占2bytes,英文編碼為0x09,0x04參考USBLanguage編碼

(4)產品名稱編碼

Webcam的產品名稱,定義在USB2.0Spec.Table9.16

F/W設定

0x00,0x32,//lengthofproductstringdescriptor

0x32,//ProductStringDescriptor

0x03,//bLength

0x53,0x00,

0x50,0x00,

0x43,0x00,

0x41,0x00,

0x32,0x00,

0x32,0x00,

0x38,0x00,

0x31,0x00,

0x20,0x00,

0x57,0x00,//'W'

0x65,0x00,//'e'

0x62,0x00,//'b'

0x20,0x00,//''

0x43,0x00,//'C'

0x61,0x00,//'a'

0x6D,0x00,//'m'

0x65,0x00,//'e'

0x72,0x00,//'r'

0x61,0x00,//'a'

0x20,0x00,

0x20,0x00,

0x20,0x00,

0x20,0x00,

解釋

Offset0為bLength,更具字串+2來定義Length

Offset1為bDescriptorType,設定字串的Descriptor為0x03

Offset2~OffsetN設定字串編碼,使用Unicode碼,每個字為2Bytes

這個Stringsdescriptor傳輸到NB或PC,在顯示名稱會秀出如USBCamera

2.傳輸設定:

主要設定USB2.0的Configuration及UVC1.1的定義處理如feature,resolution...等等

可分為FullSpeedUSB定義及HighSpeedUSB定義,兩者的Descriptor類似只是參數設定不同,

(1)USBConfiguration

F/W編碼

//ConfigurationDescriptor

0x09,//bLength:

0x09byte

0x02,//bDescriptorType:

CONFIGURATION

0x81,0x05,//wTotalLength:

0x062dbyte

0x04,//bNumInterfaces:

2interfaces

0x01,//bConfigurationValue:

configuration1

0x00,//iConfiguration:

indexofstring

0x80,//bmAttributes:

buspowered

0xFA,//MaxPower:

500mA

這定義USB2.0傳送UVC及UAC的型態,規範在USB2.0Spec.Table9.10

解釋

Offset0為bLength,ConfigurationDescriptor的長度為9bytes,0x09

Offset1為bDescriptorType,ConfigurationDescriptortype,0x02

Offset2為wTotalLength,占2bytes為傳送USB2.0的UVC或UAC定義資料的全部長度,包括ConfigurationDescriptor,0x81,0x05(0x581bytes)

Offset4為bNumInterfaces,Interfacenumber,SPCA2281有Audio所以設定0x04,如沒有Audio設定0x02

Offset5為bConfigurationValue,為設定結構值,定義0x01

Offset6為iConfiguration,為設定這結構的描述字串指標,0x00

Offset7為bmAttributes,為設定bus的power狀況,D7為reserved必須設定為1,D6為是否要SelfPower,D5為遠端遙控開機功能,D4~D0為reserved設為0,所以為0x80

Offset8為bMaxPower,設定USBbus最大電流,每單為為2mA,所以0xfa=250即為500mA

(2)VideoInterfaceAssociationDescriptor

USB在Video介面接口關連描述(IAD)

定義在UVC1.1Spec.Table3-1

F/W設定

//VideoInterfaceAssociationDescriptor

0x08,//bLength:

0x08byte

0x0B,//bDescriptorType:

INTERFACEASSOCATIONDescriptor

0x00,//bInterfaceNumber:

interface0

0x02,//bInterfaceCount:

2

0x0E,//bFunctionClass:

0x0E

0x03,//bFunctionSubClass:

0x03

0x00,//bInterfaceProtocol:

classspecificprotocolNOTusedonthisinterface

0x02,//iFunction:

2

解釋

Offset0為bLength,IAD長度為8bytes,0x08

Offset1bDescriptorType,InterfaceAssociationdescriptortype,Value=11,0x0B

 

DescriptorTypes編號

Offset2為bFirstInterface為第一個Videocontrolnumber,設定0x00

Offset3為bInterfaceCount為鄰近的interface總數,設定0x02(Webcam,NBorPC)

Offset4為bFunctionClass,VideoInterfaceClasscode的CC_VIDEO,0x0E

Offset5為bFunctionSubClass,設定SC_VIDEO_INTERFACE_COLLECTION

0x03

Offset6為bFunctionProtocol,必須設為PC_PROTOCOL_UNDEFINED,0x00

Offset7為iFunction,這界面字串的指標,0x02

(3)StandardVCInterfaceDescriptor

設定基本VideoControl介面的Descriptor,定義UVC1.1SpecTable3-2

F/W設定

//VideoControlInterfaceDescriptor

0x09,//bLength:

0x09byte

0x04,//bDescriptorType:

INTERFACE

0x00,//bInterfaceNumber:

interface0

0x00,//bAlternateSetting:

alternatesetting0

0x01,//bNumEndpoints:

1endpoint

0x0E,//bInterfaceClass:

0x0E

0x01,//bInterfaceSubClass:

0x01

0x00,//bInterfaceProtocol:

classspecificprotocolNOTusedonthisinterface

0x02,//iInterface:

indexofstring

解釋

Offset0為bLength,這VCinterfaceDescriptor固定長度為9Bytes,0x09

Offset1為bDescriptorType,介面Descriptortype,0x04

Offset2為bInterfaceNumber,介面數,設定為0

Offset3為bAlternateSetting,間隔數的設定,設為0間隔,0x00

Offset4為bNumEndpoints,端點的設定,需設為1,0x01

Offset5為bInterfaceClass,設定為CC_VIDEO,0x0E

Offset6為bInterfaceSubClass,設定SC_VIDEOCONTROL,0x01

Offset7為bInterfaceProtocol,沒使用必須設PC_PROTOCOL_UNDEFINED,0x00

Offset8為iInterface,介面descriptor描述字串指標,設定0x02

(4)Class-specificVCInterfaceHeaderDescriptor

主要是設定Class-specific的totallength及DeviceclockFrequency,參考UVCSpecTable3-3

F/W設定

//Class-specificVideoControlInterfaceHeaderDescriptor

0x0D,//bLength:

0x0Dbyte

0x24,//bDescriptorType:

0x24

0x01,//bDescriptorSubType:

VC_HEADERsubtype

0x00,0x01,//bcdVDC:

Revisionofclassspecificationthatthisdeviceisbasedupon

0x50,0x00,//wTotalLength:

Totalsizeofclass-specificdescriptors

0x00,0x6C,0xDC,0x02,//dwClockFrequency:

48MHz

0x01,//bInCollection:

Numberofstreaminginterfaces

0x01,//baInterfaceNr

(1):

InterfacenumberofthefirstVideoStreaminginterface

解釋

Offset0為bLength,基本Length為12,另外增加1Byte的interfacenumber,為13,0x0D

Offset1為bDescriptorType,設定CS_INTERFACE,為0x24

Offset2為bDescriptorSubType,要設VC_Header,0x01

Offset3為bcdUVC,定義VideoDeviceClassSpecificationreleasenumber,占2bytes,0x00,0x01

Offset5為wTotalLength,定義class-specificVideoControlinterfacedescriptor的全部長度,占2bytes,為0x50,0x00

Offset7為dwClockFrequency,裝置的clockFrequency,為48MHz->48000000->02DC6C00,占4bytes,0x00,0x6C,0xDC,0x02

Offset11為bInCollection,為VideoStreamingnumber,設定0x01

Offset12為baInterfaceNr

(1),為第一個VideoStreaming有多少interface,為0x01

(5)Input(Camera)TerminalDescriptor

設定VideoControlCameraInputTerminalDescriptor,參考UVCSpecTable3-6

F/W設定

//VideoControlCameraTerminalDescriptor

0x12,//bLength:

0x12byte

0x24,//bDescriptorType:

0x24

0x02,//bDescriptorSubType:

VC_INPUT_TERMINALsubtype

0x01,//bTerminalID:

IDofthisinputterminal

0x01,0x02,//wTerminalType:

ITT_CAMERAtype.

0x00,//bAssocTerminal:

Noassocation

0x00,//iTerminal:

Unused

0x00,0x00,//wObjectiveFocalLengthMin:

Nooptionalzoomsupported

0x00,0x00,//wObjectiveFocalLengthMax:

Nooptionalzoomsupported

0x00,0x00,//wOcularFocalLength:

Nooptionalzoomsupported

0x03,//bControlSize:

ThesizeofthebmControlsis2bytes

0x0A,0x00,0x00,//bmControls:

CameraTerminalcontrolsaresupported

解釋:

Offset0為bLength,設定0x12

Offset1為bDescriptorType,設定CS_INTERFACE,0x24

Offset2為bDescriptorSubtype,設定VC_INPUT_TERMINAL,0x02

Offset3為bTerminalID,為InputterminalID,0x01

Offset4為wTermina

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 学科竞赛

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1