- const uint8_t Speaker_DeviceDescriptor[] =
 
-   {
 
-     SPEAKER_SIZ_DEVICE_DESC,          /* bLength */
 
-     USB_DEVICE_DESCRIPTOR_TYPE,           /* bDescriptorType */
 
-     0x00,          /* 2.00 */             /* bcdUSB */
 
-     0x02,
 
-     0x00,                                 /* bDeviceClass */
 
-     0x00,                                 /* bDeviceSubClass */
 
-     0x00,                                 /* bDeviceProtocol */
 
-     0x40,                                 /* bMaxPacketSize 40 */
 
-     0x83,                                 /* idVendor */
 
-     0x04,
 
-     0x30,                                 /* idProduct  = 0x5730*/
 
-     0x5a,
 
-     0x00,          /* 2.00 */             /* bcdDevice */
 
-     0x02,
 
-     1,                                    /* iManufacturer */
 
-     2,                                    /* iProduct */
 
-     3,                                    /* iSerialNumber */
 
-     0x01                                  /* bNumConfigurations */
 
-   };
- const uint8_t Speaker_ConfigDescriptor[] =
 
-   {
 
-     /* Configuration 1 */
 
-     0x09,                                 /* bLength */
 
-     USB_CONFIGURATION_DESCRIPTOR_TYPE,    /* bDescriptorType */
 
-     0x6D,                                 /* wTotalLength  110 bytes*/
 
-     0x00,
 
-     0x02,                                 /* bNumInterfaces */
 
-     0x01,                                 /* bConfigurationValue */
 
-     0x00,                                 /* iConfiguration */
 
-     0xC0,                                 /* bmAttributes Self Powered*/
 
-     0x32,                                 /* bMaxPower = 100 mA*/
 
-     /* 09 byte*/
 
 
-     /* USB Speaker Standard interface descriptor */
 
-     SPEAKER_SIZ_INTERFACE_DESC_SIZE,      /* bLength */
 
-     USB_INTERFACE_DESCRIPTOR_TYPE,        /* bDescriptorType */
 
-     0x00,                                 /* bInterfaceNumber */
 
-     0x00,                                 /* bAlternateSetting */
 
-     0x00,                                 /* bNumEndpoints */
 
-     USB_DEVICE_CLASS_AUDIO,               /* bInterfaceClass */
 
-     AUDIO_SUBCLASS_AUDIOCONTROL,          /* bInterfaceSubClass */
 
-     AUDIO_PROTOCOL_UNDEFINED,             /* bInterfaceProtocol */
 
-     0x00,                                 /* iInterface */
 
-     /* 09 byte*/
 
 
-     /* USB Speaker Class-specific AC Interface Descriptor */
 
-     SPEAKER_SIZ_INTERFACE_DESC_SIZE,   /* bLength */
 
-     AUDIO_INTERFACE_DESCRIPTOR_TYPE,      /* bDescriptorType */
 
-     AUDIO_CONTROL_HEADER,                 /* bDescriptorSubtype */
 
-     0x00,          /* 1.00 */             /* bcdADC */
 
-     0x01,
 
-     0x27,                                 /* wTotalLength = 39*/
 
-     0x00,
 
-     0x01,                                 /* bInCollection */
 
-     0x01,                                 /* baInterfaceNr */
 
-     /* 09 byte*/
 
 
-     /* USB Speaker Input Terminal Descriptor */
 
-     AUDIO_INPUT_TERMINAL_DESC_SIZE,       /* bLength */
 
-     AUDIO_INTERFACE_DESCRIPTOR_TYPE,      /* bDescriptorType */
 
-     AUDIO_CONTROL_INPUT_TERMINAL,         /* bDescriptorSubtype */
 
-     0x01,                                 /* bTerminalID */
 
-     0x01,                                 /* wTerminalType AUDIO_TERMINAL_USB_STREAMING   0x0101 */
 
-     0x02,
 
-     0x00,                                 /* bAssocTerminal */
 
-     0x01,                                 /* bNrChannels */
 
-     0x00,                                 /* wChannelConfig 0x0000  Mono */
 
-     0x00,
 
-     0x00,                                 /* iChannelNames */
 
-     0x00,                                 /* iTerminal */
 
-     /* 12 byte*/
 
 
-     /* USB Speaker Audio Feature Unit Descriptor */
 
-     0x09,                                 /* bLength */
 
-     AUDIO_INTERFACE_DESCRIPTOR_TYPE,      /* bDescriptorType */
 
-     AUDIO_CONTROL_FEATURE_UNIT,           /* bDescriptorSubtype */
 
-     0x03,                                 /* bUnitID */
 
-     0x01,                                 /* bSourceID */
 
-     0x01,                                 /* bControlSize */
 
-     AUDIO_CONTROL_MUTE,                   /* bmaControls(0) */
 
-     0x00,                                 /* bmaControls(1) */
 
-     0x00,                                 /* iTerminal */
 
-     /* 09 byte*/
 
 
-     /*USB Speaker Output Terminal Descriptor */
 
-     0x09,      /* bLength */
 
-     AUDIO_INTERFACE_DESCRIPTOR_TYPE,      /* bDescriptorType */
 
-     AUDIO_CONTROL_OUTPUT_TERMINAL,        /* bDescriptorSubtype */
 
-     0x02,                                 /* bTerminalID */
 
-     0x01,                                 /* wTerminalType  0x0101*/
 
-     0x01,
 
-     0x00,                                 /* bAssocTerminal */
 
-     0x01,                                 /* bSourceID */
 
-     0x00,                                 /* iTerminal */
 
-     /* 09 byte*/
 
 
-     /* USB Speaker Standard AS Interface Descriptor - Audio Streaming Zero Bandwidth */
 
-     /* Interface 1, Alternate Setting 0                                             */
 
-     SPEAKER_SIZ_INTERFACE_DESC_SIZE,  /* bLength */
 
-     USB_INTERFACE_DESCRIPTOR_TYPE,        /* bDescriptorType */
 
-     0x01,                                 /* bInterfaceNumber */
 
-     0x00,                                 /* bAlternateSetting */
 
-     0x00,                                 /* bNumEndpoints */
 
-     USB_DEVICE_CLASS_AUDIO,               /* bInterfaceClass */
 
-     AUDIO_SUBCLASS_AUDIOSTREAMING,        /* bInterfaceSubClass */
 
-     AUDIO_PROTOCOL_UNDEFINED,             /* bInterfaceProtocol */
 
-     0x00,                                 /* iInterface */
 
-     /* 09 byte*/
 
 
-     /* USB Speaker Standard AS Interface Descriptor - Audio Streaming Operational */
 
-     /* Interface 1, Alternate Setting 1                                           */
 
-     SPEAKER_SIZ_INTERFACE_DESC_SIZE,  /* bLength */
 
-     USB_INTERFACE_DESCRIPTOR_TYPE,        /* bDescriptorType */
 
-     0x01,                                 /* bInterfaceNumber */
 
-     0x01,                                 /* bAlternateSetting */
 
-     0x01,                                 /* bNumEndpoints */
 
-     USB_DEVICE_CLASS_AUDIO,               /* bInterfaceClass */
 
-     AUDIO_SUBCLASS_AUDIOSTREAMING,        /* bInterfaceSubClass */
 
-     AUDIO_PROTOCOL_UNDEFINED,             /* bInterfaceProtocol */
 
-     0x00,                                 /* iInterface */
 
-     /* 09 byte*/
 
 
-     /* USB Speaker Audio Streaming Interface Descriptor */
 
-     AUDIO_STREAMING_INTERFACE_DESC_SIZE,  /* bLength */
 
-     AUDIO_INTERFACE_DESCRIPTOR_TYPE,      /* bDescriptorType */
 
-     AUDIO_STREAMING_GENERAL,              /* bDescriptorSubtype */
 
-     0x02,                                 /* bTerminalLink */
 
-     0x01,                                 /* bDelay */
 
-     0x02,                                 /* wFormatTag AUDIO_FORMAT_PCM  0x0001*/
 
-     0x00,
 
-     /* 07 byte*/
 
 
-     /* USB Speaker Audio Type I Format Interface Descriptor */
 
-     0x0B,                                 /* bLength */
 
-     AUDIO_INTERFACE_DESCRIPTOR_TYPE,      /* bDescriptorType */
 
-     AUDIO_STREAMING_FORMAT_TYPE,          /* bDescriptorSubtype */
 
-     AUDIO_FORMAT_TYPE_I,                  /* bFormatType */
 
-     0x01,                                 /* bNrChannels */
 
-     0x02,                                 /* bSubFrameSize */
 
-     16,                                    /* bBitResolution */
 
-     0x01,                                 /* bSamFreqType */
 
-     0xF0,                                 /* tSamFreq 22000 = 0x55F0 */
 
-     0x55,
 
-     0x00,
 
-     /* 11 byte*/
 
 
-     /* Endpoint 1 - Standard Descriptor */
 
-     AUDIO_STANDARD_ENDPOINT_DESC_SIZE,    /* bLength */
 
-     USB_ENDPOINT_DESCRIPTOR_TYPE,         /* bDescriptorType */
 
-     0x81,                                 /* bEndpointAddress 1 in endpoint*/
 
-     USB_ENDPOINT_TYPE_ISOCHRONOUS,        /* bmAttributes */
 
-     44,                                 /* wMaxPacketSize 16 bytes*/
 
-     0x00,
 
-     0x01,                                 /* bInterval */
 
-     0x00,                                 /* bRefresh */
 
-     0x00,                                 /* bSynchAddress */
 
-     /* 09 byte*/
 
 
-     /* Endpoint - Audio Streaming Descriptor*/
 
-     AUDIO_STREAMING_ENDPOINT_DESC_SIZE,   /* bLength */
 
-     AUDIO_ENDPOINT_DESCRIPTOR_TYPE,       /* bDescriptorType */
 
-     AUDIO_ENDPOINT_GENERAL,               /* bDescriptor */
 
-     0x00,                                 /* bmAttributes */
 
-     0x00,                                 /* bLockDelayUnits */
 
-     0x00,                                 /* wLockDelay */
 
-     0x00,
 
-     /* 07 byte*/
 
-   };
    注:这里对于特殊功能描述符可以参考USB官网的audio 10文档,下载路径为https://usb.org/document-library/audio-device-document-10,改文档包含了描述符和请求的格式,以及描述符的举例,很有参考价值;
    因为本人是用ST的Speaker改写的,所以,如果把ST的Speaker的描述符替换之后,就能够在PC端的设备管理器看到USB的麦克风了;
    这里只上传了usb_desc文件,本期学习笔记暂时就到这里,后面空下来会出后续的实现代码以及源码的上传;