Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
10 / 10 / 1
Регистрация: 15.08.2011
Сообщений: 411
1

Дескриптор для usb микрофона

28.02.2021, 16:49. Показов 1904. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Генерирую код CubeMX usb audio device, но контроллер определяется как динамик, пытался подставлять дескриптор из чужих примеров usb микрофона, но не работает, как генерируют эти дескрипторы?
А вообще задача снять звук с двух микрофонов и передать их по юзб.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.02.2021, 16:49
Ответы с готовыми решениями:

Дескриптор конфигурации для WinUSB
В качестве драйвера для USB устройства на МК пытаюсь использовать стандартный WinUSB. Для этой цели...

не работают usb и входы для наушников/микрофона..
Добрый вечер! меня направили сюда вот отсюда....

Не работают usb и входы для наушников/микрофона
Всем добрый вечер. у меня ноутбук e machines E525, куплен примерно 2 года назад. ОС - windows7...

Дескриптор конфигурации USB
Каким образом можно вывести в консоль дескриптор конфигурации USB с помощью с# и можно ли сделать...

3
3881 / 2479 / 418
Регистрация: 09.09.2017
Сообщений: 10,884
02.03.2021, 13:16 2
Лучший ответ Сообщение было отмечено Korbofos как решение

Решение

Вдруг поможет: снял lsusb для "внешней звуковой карты". Там, кажется, много мусора вроде кнопок громкости (которых на карте нет), но хоть шаблон будет
Кликните здесь для просмотра всего текста

Код
Bus 001 Device 107: ID 0d8c:013c C-Media Electronics, Inc. CM108 Audio Controller
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            0 
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0         8
  idVendor           0x0d8c C-Media Electronics, Inc.
  idProduct          0x013c CM108 Audio Controller
  bcdDevice            1.00
  iManufacturer           1 
  iProduct                2 
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x00fd
    bNumInterfaces          4
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      1 Control Device
      bInterfaceProtocol      0 
      iInterface              0 
      AudioControl Interface Descriptor:
        bLength                10
        bDescriptorType        36
        bDescriptorSubtype      1 (HEADER)
        bcdADC               1.00
        wTotalLength       0x0064
        bInCollection           2
        baInterfaceNr(0)        1
        baInterfaceNr(1)        2
      AudioControl Interface Descriptor:
        bLength                12
        bDescriptorType        36
        bDescriptorSubtype      2 (INPUT_TERMINAL)
        bTerminalID             1
        wTerminalType      0x0101 USB Streaming
        bAssocTerminal          0
        bNrChannels             2
        wChannelConfig     0x0003
          Left Front (L)
          Right Front (R)
        iChannelNames           0 
        iTerminal               0 
      AudioControl Interface Descriptor:
        bLength                12
        bDescriptorType        36
        bDescriptorSubtype      2 (INPUT_TERMINAL)
        bTerminalID             2
        wTerminalType      0x0201 Microphone
        bAssocTerminal          0
        bNrChannels             1
        wChannelConfig     0x0001
          Left Front (L)
        iChannelNames           0 
        iTerminal               0 
      AudioControl Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      3 (OUTPUT_TERMINAL)
        bTerminalID             6
        wTerminalType      0x0301 Speaker
        bAssocTerminal          0
        bSourceID               9
        iTerminal               0 
      AudioControl Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      3 (OUTPUT_TERMINAL)
        bTerminalID             7
        wTerminalType      0x0101 USB Streaming
        bAssocTerminal          0
        bSourceID               8
        iTerminal               0 
      AudioControl Interface Descriptor:
        bLength                 7
        bDescriptorType        36
        bDescriptorSubtype      5 (SELECTOR_UNIT)
        bUnitID                 8
        bNrInPins               1
        baSourceID(0)          10
        iSelector               0 
      AudioControl Interface Descriptor:
        bLength                10
        bDescriptorType        36
        bDescriptorSubtype      6 (FEATURE_UNIT)
        bUnitID                 9
        bSourceID              15
        bControlSize            1
        bmaControls(0)       0x01
          Mute Control
        bmaControls(1)       0x02
          Volume Control
        bmaControls(2)       0x02
          Volume Control
        iFeature                0 
      AudioControl Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      6 (FEATURE_UNIT)
        bUnitID                10
        bSourceID               2
        bControlSize            1
        bmaControls(0)       0x43
          Mute Control
          Volume Control
          Automatic Gain Control
        bmaControls(1)       0x00
        iFeature                0 
      AudioControl Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      6 (FEATURE_UNIT)
        bUnitID                13
        bSourceID               2
        bControlSize            1
        bmaControls(0)       0x03
          Mute Control
          Volume Control
        bmaControls(1)       0x00
        iFeature                0 
      AudioControl Interface Descriptor:
        bLength                13
        bDescriptorType        36
        bDescriptorSubtype      4 (MIXER_UNIT)
        bUnitID                15
        bNrInPins               2
        baSourceID(0)           1
        baSourceID(1)          13
        bNrChannels             2
        wChannelConfig     0x0003
          Left Front (L)
          Right Front (R)
        iChannelNames           0 
        bmControls(0)        0x00
        iMixer                  0 
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0 
      iInterface              0 
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       1
      bNumEndpoints           1
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0 
      iInterface              0 
      AudioStreaming Interface Descriptor:
        bLength                 7
        bDescriptorType        36
        bDescriptorSubtype      1 (AS_GENERAL)
        bTerminalLink           1
        bDelay                  1 frames
        wFormatTag         0x0001 PCM
      AudioStreaming Interface Descriptor:
        bLength                14
        bDescriptorType        36
        bDescriptorSubtype      2 (FORMAT_TYPE)
        bFormatType             1 (FORMAT_TYPE_I)
        bNrChannels             2
        bSubframeSize           2
        bBitResolution         16
        bSamFreqType            2 Discrete
        tSamFreq[ 0]        48000
        tSamFreq[ 1]        44100
      Endpoint Descriptor:
        bLength                 9
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            9
          Transfer Type            Isochronous
          Synch Type               Adaptive
          Usage Type               Data
        wMaxPacketSize     0x00c8  1x 200 bytes
        bInterval               1
        bRefresh                0
        bSynchAddress           0
        AudioStreaming Endpoint Descriptor:
          bLength                 7
          bDescriptorType        37
          bDescriptorSubtype      1 (EP_GENERAL)
          bmAttributes         0x01
            Sampling Frequency
          bLockDelayUnits         1 Milliseconds
          wLockDelay         0x0001
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0 
      iInterface              0 
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       1
      bNumEndpoints           1
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0 
      iInterface              0 
      AudioStreaming Interface Descriptor:
        bLength                 7
        bDescriptorType        36
        bDescriptorSubtype      1 (AS_GENERAL)
        bTerminalLink           7
        bDelay                  1 frames
        wFormatTag         0x0001 PCM
      AudioStreaming Interface Descriptor:
        bLength                14
        bDescriptorType        36
        bDescriptorSubtype      2 (FORMAT_TYPE)
        bFormatType             1 (FORMAT_TYPE_I)
        bNrChannels             1
        bSubframeSize           2
        bBitResolution         16
        bSamFreqType            2 Discrete
        tSamFreq[ 0]        48000
        tSamFreq[ 1]        44100
      Endpoint Descriptor:
        bLength                 9
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            9
          Transfer Type            Isochronous
          Synch Type               Adaptive
          Usage Type               Data
        wMaxPacketSize     0x0064  1x 100 bytes
        bInterval               1
        bRefresh                0
        bSynchAddress           0
        AudioStreaming Endpoint Descriptor:
          bLength                 7
          bDescriptorType        37
          bDescriptorSubtype      1 (EP_GENERAL)
          bmAttributes         0x01
            Sampling Frequency
          bLockDelayUnits         0 Undefined
          wLockDelay         0x0000
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        3
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      0 
      bInterfaceProtocol      0 
      iInterface              0 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.00
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      60
         Report Descriptors: 
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x87  EP 7 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0004  1x 4 bytes
        bInterval               2

        
char packet_bytes[] = {
  0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x15, 0x00,
  0x25, 0x01, 0x09, 0xe9, 0x09, 0xea, 0x75, 0x01,
  0x95, 0x02, 0x81, 0x02, 0x09, 0xe2, 0x09, 0x00,
  0x95, 0x02, 0x81, 0x06, 0x05, 0x0c, 0x09, 0xb7,
  0x09, 0xb5, 0x09, 0xb6, 0x09, 0xcd, 0x95, 0x04,
  0x81, 0x06, 0x26, 0xff, 0x00, 0x09, 0x00, 0x75,
  0x08, 0x95, 0x03, 0x81, 0x02, 0x09, 0x00, 0x95,
  0x04, 0x91, 0x02, 0xc0
};

Еще можно почитать тут:
http://we.easyelectronics.ru/A... lezka.html
https://www.usb.org/sites/defa... udio10.pdf
1
3881 / 2479 / 418
Регистрация: 09.09.2017
Сообщений: 10,884
21.03.2021, 16:28 3
Может, еще актуально. В какой-то степени разобрался с аудио устройствами. Дескрипторы там довольно странные, но вот такой простенький вроде определяется как одноканальный микрофон:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
static const uint8_t USB_ConfigDescriptor[] = {
  ARRLEN34(
  ARRLEN1(
    bLENGTH, // bLength: Configuration Descriptor size
    USB_DESCR_CONFIG,    //bDescriptorType: Configuration
    wTOTALLENGTH, //wTotalLength
    2, // bNumInterfaces
    1, // bConfigurationValue: Configuration value
    0, // iConfiguration: Index of string descriptor describing the configuration
    0x80, // bmAttributes: bus powered
    0x32, // MaxPower 100 mA
  )
  ARRLEN1(//0: Audio control Interface
    bLENGTH, // bLength
    USB_DESCR_INTERFACE, // bDescriptorType
    0, // bInterfaceNumber
    0, // bAlternateSetting
    0, // bNumEndpoints (если испольуется Interrupt endpoint, может быть 1)
    USB_CLASS_AUDIO, // bInterfaceClass: 
    USB_SUBCLASS_AUDIOCONTROL, // bInterfaceSubClass: 
    0x00, // bInterfaceProtocol: 
    0x00, // iInterface
  )
    ARRLEN67(//AC interface
      ARRLEN1(//AC interface header
        bLENGTH, //bLength
        USB_DESCR_CS_INTERFACE, //bDescriptorType
        1, //bDescriptorSubType
        USB_U16(1), //bcdADC //AudioDeviceClass серийный номер
        wTOTALLENGTH, //wTotalLength
        1, //bInCollection //количество интерфейсов в коллекции
        1, //bInterfaceNr(1), //массив (список) номеров интерфейсов в коллекции
        //bInterfaceNr(2), ...
      )
      ARRLEN1(//1. AC Input terminal
        bLENGTH, //bLength
        USB_DESCR_CS_INTERFACE, //bDescriptorType
        USBAUDIO_IF_TERM_IN, //bDescriptorSubType
        1, //bTerminalID
        USB_U16( USBAUDIO_TERMINAL_MIC ), //wTerminalTypeЧто это вообще такое (а вариантов немало!)
        0, //bAssocTerminal привязка выходного терминала для создания пары. Не используем
        1, //bNrChannels
        USB_U16( 0 ), //wChannelConfig //к чему именно подключены каналы
        0, //iChannelNames
        0, //iTerminal
      )
      ARRLEN1(//2. AC Feature Unit
        bLENGTH, //bLength
        USB_DESCR_CS_INTERFACE, //bDescriptorType
        USBAUDIO_IF_FEATURE, //bDescriptorSubType
        2, //UnitID
        1, //bSourceID  <---------------------------------------------
        1, //bControlSize //размер одного элемента в массиве
        //bmaControls чем именно можно управлять
          USBAUDIO_FEATURE_MUTE, //Channel(0)
          USBAUDIO_FEATURE_NONE, //Channel(1) канал 1 - Mute
          //нужно описать оба канала?
        0, //iFeature
      )
      ARRLEN1(//3. AC Output Terminal
        bLENGTH, //bLength
        USB_DESCR_CS_INTERFACE, //bDescriptorType
        USBAUDIO_IF_TERM_OUT, //bDescriptorSubType
        3, //bTerminalID
        USB_U16( USBAUDIO_TERMINAL_USB ), //wTerminalType:speaker
        0, //bAssocTerminal
        2, //bSourceID  <-------------------------------------------
        0, //iTerminal
      )
    )
  ARRLEN1(//1 Audio Streaming Interface
    bLENGTH, //bLength
    USB_DESCR_INTERFACE, //bDescriptorType
    1, //bInterfaceNumber
    0, //bAlternateSetting
    0, //bNumEndpoints
    USB_CLASS_AUDIO, //bInterfaceClass
    USB_SUBCLASS_AUDIOSTREAMING, //bInterfaceSubClass
    0, //bInterfaceProtocol
    0, //iInterface
  )
  ARRLEN1(//1alt Audio Streaming Interface (alternative)
    bLENGTH, //bLength
    USB_DESCR_INTERFACE, //bDescriptorType
    1, //bInterfaceNumber
    1, //bAlternateSetting
    1, //bNumEndpoints
    USB_CLASS_AUDIO, //bInterfaceClass
    USB_SUBCLASS_AUDIOSTREAMING, //bInterfaceSubClass
    0, //bInterfaceProtocol
    0, //iInterface
  )
  
  ARRLEN1(//AS Interface
    bLENGTH, //bLength
    USB_DESCR_CS_INTERFACE, //bDescriptorType
    USBAUDIO_AS_GENERAL, //bDescriptorSubType
    3, //bTerminalLink  <----------------------------------------
    1, //bDelay //задержка, вносимая устройством (в единицах числа фреймов)
    USB_U16( USBAUDIO_FORMAT_PCM ), //wFormatTag=PCM, тип кодирования данных //TODO описать возможные типы
  )
  ARRLEN1(//AS Format Type 1
    bLENGTH, //bLength
    USB_DESCR_CS_INTERFACE, //bDescriptorType
    USBAUDIO_AS_FORMAT, //bDescriptorSubType
    1, //bFormatType
    1, //bNrChannels
    2, //bSubFrameSize //количество БАЙТОВ на отсчет (1-4)
    16, //bBitResolution //количество БИТОВ на отсчет (<= bSubFrameSize*8) //наверное, то-занимаемое в потоке место, а это - реальная разрешающая способность
    1, //bSamFreqType //количество поддерживаемых частот
    USB_AC24(48000), //tSamFreq //(6 байт!) массив диапазонов частот
  )
  
  ARRLEN1(//Endpoint descriptor
    bLENGTH, //bLength
    USB_DESCR_ENDPOINT, //bDescriptorType
    ENDP_DATA_NUM | 0x80, 
    USB_ENDP_ISO, //Isochronous / Synch=none / usage=data //TODO
    USB_U16(ENDP_DATA_SIZE),
    1, //bInterval - частота опроса, для изохронных всегда 1
    0, //bRefresh - хз что это, сказано выставить в 0
    0, //bSynchAddress - адрес endpoint'а для синхронизации
  )
  ARRLEN1(//Isochronous endpoint descriptor
    bLENGTH, //bLength
    USB_DESCR_ENDP_ISO, //bDescriptorType
    1, //bDescriptorSubType
    0, //bmAttributes
    0, //bLockDelayUnits (undefned)
    USB_U16(0), //wLockDelay
  )
  )
};
Основных шаманств два:
Во-первых, в дескрипторе надо задать весь путь прохождения сигнала от источника (микрофон или usb) через фильтры (в моем случае только через Feature) до выхода (usb или динамик). Каждое из них имеет свой номер и присоединяется входами к выходам других.
Второе шаманство в том, что дескриптор конечной точки по умолчанию точек не содержит. А содержит только в альтернативной конфигурации. Насколько это обязательно не знаю.
Ах да, там еще и грабли закопаны: формат данных обязательно 16-битный, хотя судя по формату можно и другие писать. Но нельзя - винда с ума сходит пытаясь такое подключить.
1
10 / 10 / 1
Регистрация: 15.08.2011
Сообщений: 411
22.03.2021, 18:27  [ТС] 4
Спасибо, посмотрел ещё ваш пример на гитхабе по работе с юсб, отлично!

Добавлено через 3 минуты
Юзаю f407, регистры сильно отличаются, попробую использовать audio class из куба, да ещё время к сожалению поджимает
0
22.03.2021, 18:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.03.2021, 18:27
Помогаю со студенческими работами здесь

Получить дескриптор устройства USB
Как получить дескриптор устройства USB? Я пока только пытаюсь разобраться с API функциями. Пытаюсь...

Знатоки USB, гляньте пжлст мой report дескриптор
Всем доброго времени суток! Делаю custom hid divice, перерыл кучу инфы и примеров по hidу и если...

Неизвестное USB устройство (недопустимый дескриптор устройства) при подключении модуля Arduino
Доброго времени суток! Я купил Arduino UNO r3 ...

Шипение у конденсаторного USB микрофона
При записи на микрофон AKG perception 120 USB наблюдается какое-то шипение. В чём может быть...

Отличия USB-конденсаторного микрофона от линейного
Тут вот вопрос назрел об отличия конденсаторного микрофона подключаемого напрямую к звуковой карте,...

Аналог микрофона Logitech usb desktop
Посоветуйте, пожалуйста, что взять на замену микрофону Logitech usb desktop? Микрофон мне...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru