Jump to content

    
r2axz

Полноценный адаптер USB-Serial с 3 UART портами на STM32 Blue Pill

Recommended Posts

59 minutes ago, AlexandrY said:

А три порта на 8-и эндпоинтах - фейк. 

Я уже в подобном споре участвовал. И прикола ради написал СЕМЬ CDC на одном STM32F103 (понятно, что без аппаратного коннекта с UART)!!!

И протестировал их работу. Все ОК.

Share this post


Link to post
Share on other sites
6 часов назад, AlexandrY сказал:

А че так нервничаете?

Я спокоен, как удав ;)

Но поскольку Ваш вздор иногда бывает опасным (в прямом смысле смертельно опасным, достаточно ознакомиться с темой):

приходится и носом ткнуть, дабы вдруг у кого иллюзий не возникло...

 

6 часов назад, AlexandrY сказал:


Я же дал направление. Читайте Guideline и просвящаетесь.
Спорьте с авторитетными производителями, а не со мной.
 

Т.е. приобщиться к сакральному знанию, как отсутствие супрессоров по шине у USB device может угробить компьютер и все остальное, подключенное к устройству, в очередной раз не удастся ? Жаль, мы так и не услышали начальника транспортного цеха. "Авторитетные производители" почему-то тоже молчат, как партизаны на допросе...

 

 

6 часов назад, r2axz сказал:

Далеко не все адаптеры идут залитые и в экране.

Я, например, таких вообще не встречал. USB-RS232 в пластиковом чехле - на вид был очень даже похож на залитый, но по факту защитный чехол прекрасно стягивается с DB9 (допускаю, что они, залитые, есть, но - не видел). А мелочь типа ST-LINK и адаптеров на CP2102 в алюминиевой трубке, так там "экран" это чисто механическая защита, он живет сам по себе и ни с чем не соединяется вообще. И уж если что защищать супрессорами у таких адаптеров, так это GPIO (до шины еще поди доберись, а VBUS по определению смотрит наружу, равно как и слабенький LDO на 3.3). 

Share this post


Link to post
Share on other sites
17 minutes ago, rx3apf said:

Я, например, таких вообще не встречал. USB-RS232 в пластиковом чехле - на вид был очень даже похож на залитый, но по факту защитный чехол прекрасно стягивается с DB9 (допускаю, что они, залитые, есть, но - не видел). А мелочь типа ST-LINK и адаптеров на CP2102 в алюминиевой трубке, так там "экран" это чисто механическая защита, он живет сам по себе и ни с чем не соединяется вообще. И уж если что защищать супрессорами у таких адаптеров, так это GPIO (до шины еще поди доберись, а VBUS по определению смотрит наружу, равно как и слабенький LDO на 3.3). 

Да я тоже не встречал, если честно. Просто готов допустить их существование, а жизненный опыт заставляет воздерживаться от безапелляционных утверждений в ситуациях, когда нет абсолютной уверенности в своих знаниях.

Кстати, анодированный алюминиевый корпус в ST-LINK - в некотором смысле бомба замедленного действия. Иногда, при повреждении оксидный пленки плата замыкается на корпус, что приводит к выходу отладчика из строя. У меня такое однажды случилось...

Share this post


Link to post
Share on other sites

В принципе да, если плата перекосится и ляжет на корпус, можно ожидать неприятностей, так что лучше заранее картонки вставить.

Share this post


Link to post
Share on other sites
9 часов назад, r2axz сказал:

Да я тоже не встречал, если честно. Просто готов допустить их существование

На позапрошлой работе пришлось заняться выпуском таких - ибо готовых за вменяемые деньги не нашлось, да и за невменяемые, как MOXA, тоже.

Базировались на FT234XD.

Касательно того, что 3 переходника лучше, чем один тройной - ну конечно лучше. Вместо одного кабеля к "коробочке" пойдёт три. USB-портов в любом компьютере, конечно же, неограниченное количество, и к каждому из них можно внешний хаб подключить... :biggrin:

Share this post


Link to post
Share on other sites
17 часов назад, AlexandrY сказал:

По любому три отдельный адаптера будет удобней и функциональней  чем лишняя борда на столе представляющаяя собой постоянный головняк.  

А когда 10 портов и на каждый по адаптеру? Вот тогда и начинается настоящий головняк. А уж когда винда начинает в случайном порядке назначать COM-порты....

Share this post


Link to post
Share on other sites
19 hours ago, Eddy_Em said:

Я уже в подобном споре участвовал. И прикола ради написал СЕМЬ CDC на одном STM32F103 (понятно, что без аппаратного коннекта с UART)!!!

И протестировал их работу. Все ОК.

Это один из способов, но он плох тем, что нет возможности отправлять notifications (невозможно использовать несуществующий INTERRUPT IN endpotint). Но если надо просто слать информацию, то сгодится. Альтернативой может быть совместное использование одного INTERRUPT IN endpoint несколькими CDC устройствами. Из стандарта не следует что это не будет работать. Более того, в структуре данных notifications есть поле под номер интерфейса. То есть, теоретические можно сделать 6 полноценных CDC с notifications. Но я не тестировал это с реальными драйверами операционных систем. Очень может быть, что на практике это не взлетит.

Edited by r2axz

Share this post


Link to post
Share on other sites
18 минут назад, r2axz сказал:

Из стандарта не следует что это не будет работать.

r2axz, видно, что вы в теме USB очень хорошо разбираетесь. Какую бы вы посоветовали литературу для изучения USB и CDC в частности?

Меня в первую очередь волнует вопрос: может ли мое устройство CDC, подключенное к хосту, узнать открыт ли порт на хосте сейчас?

При открытии я получаю пачку GET_/SET_LINE_CODING, SET_CONTROL_LINE_STATE, по которым могу сконфигурировать UART и т.п.

Но при закрытии порта вообще никаких пакетов не приходит.

Или открытие/закрытие порта - это головная боль на уровне приложений, а драйвер всегда все принимает?

И еще момент насчет VID/PID от ST: кто-нибудь получал официальное разрешение на их использование в своих изделиях?

Share this post


Link to post
Share on other sites
18 minutes ago, adnega said:

r2axz, видно, что вы в теме USB очень хорошо разбираетесь. Какую бы вы посоветовали литературу для изучения USB и CDC в частности?

Спасибо, на счет "очень хорошо" не уверен :) Немного разбираюсь, да. Посоветую читать стандарты, простите за банальность. Перед этим для разминки можно прочитать USB in a Nutshell. Еще неплохая идея смотреть исходники драйверов (в том же Linux). Я не знаю есть ли хорошие книги обучающие USB и тем более CDC. Скорее всего есть, но я ничего такого не читал и посоветовать не могу, простите.

18 minutes ago, adnega said:

Меня в первую очередь волнует вопрос: может ли мое устройство CDC, подключенное к хосту, узнать открыт ли порт на хосте сейчас?

В общем случае эта задача не имеет решения. В стандарте CDC отсутствует такое событие как открытие порта. Однако до некоторой степени это можно эмулировать с использованием состояния управляющих сигналов. Например, DTR. Надо только убедиться, что терминал (или собственное ПО) при закрытии делает DTR неактивным. Именно для адаптеров как у меня, такой способ не годится, да и не нужен. А для всяких специализированных применений - вполне. Нужная информация передается в SET_CONTROL_LINE_STATE.

18 minutes ago, adnega said:

Или открытие/закрытие порта - это головная боль на уровне приложений, а драйвер всегда все принимает?

В целом, да.

18 minutes ago, adnega said:

И еще момент насчет VID/PID от ST: кто-нибудь получал официальное разрешение на их использование в своих изделиях?

У меня такого опыта не было. Когда организации в которой я работал потребовался VID, мы просто его купили. Для проектов с открытым исходным кодом рекомендую использовать https://pid.codes Эти ребята получили в подарок VID от компании которой он больше не нужен, и это было сделано до момента когда USB консорциум запретил передачу/перепродажу PID. Правда сейчас этот VID считается deprecated, но это не несет ровным счетом никаких последствий кроме того, что USB консорциум потешил свое самолюбие. Назначить этот VID другой компании они не могут согласно своим же правилам.

Edited by r2axz

Share this post


Link to post
Share on other sites
1 hour ago, r2axz said:

Но если надо просто слать информацию, то сгодится.

В моих поделках CDC используются исключительно для общения МК с компьютером. Я не делаю физических преобразователей с 232/485 на USB. В общем, мне и уведомления никакие не нужны.

Кстати, при разработке эмулятора PL2303 я, чтобы не реверсить китайские подделки, взял всю необходимую информацию из модуля ядра. Понятно, что его делали по реверсу (иначе там бы не было комментариев вроде "ХЗ, зачем это нужно, но без этого не работает). Но вот конечная точка Interrupt там используется только номинально! Во многих других CDC она вообще не используется…

Share this post


Link to post
Share on other sites
5 минут назад, r2axz сказал:

Посоветую читать стандарты, простите за банальность.

У меня есть:

- Universal Serial Bus Specification Revision 2.0 April 27, 2000;

- Universal Serial Bus Class Definitions for Communications Devices Revision 1.2 November 16, 2007;

- Universal Serial Bus Communications Class Subclass Specification for PSTN Devices Revision 1.2 February 9, 2007.

Этого достаточно или рекомендуете еще что-то?

5 минут назад, r2axz сказал:

Перед этим для разминки можно прочитать USB in a Nutshell.

Читал. Круто все и довольно глубоко все поясняется, но в стиле "делай раз, делай два", а мне нужно что-то типа спецификаций/стандартов.

5 минут назад, r2axz сказал:

У меня такого опыта не было. Когда организации в которой я работал потребовался VID, мы просто его купили.

Говорят, для ST-MCU могут выдать VID/PID. Мне бы хватило стандартного для VCP, но наверное нужно каким-то требованиям по функционалу удовлетворять. Как появится время - попробую этот вопрос решить.

Share this post


Link to post
Share on other sites

Windows 10.

Shared endpoint не помешала двум портам в составном устройстве нормально приниматиь и передавать данные. Нотификации не слал.

Spoiler
Connection Status Device connected
Current Configuration 1
Speed Full (12 Mbit/s)
Device Address 4
Number Of Open Pipes 6
Offset Field Size Value Description
0 bLength 1 12h  
1 bDescriptorType 1 01h Device
2 bcdUSB 2 0200h USB Spec 2.0
4 bDeviceClass 1 EFh Miscellaneous
5 bDeviceSubClass 1 02h Common Class
6 bDeviceProtocol 1 01h Interface Association Descriptor
7 bMaxPacketSize0 1 40h 64 bytes
8 idVendor 2 FFFFh  
10 idProduct 2 073Bh  
12 bcdDevice 2 0106h 1.06
14 iManufacturer 1 01h "MicroGenSF"
15 iProduct 1 02h "Storch"
16 iSerialNumber 1 03h "SN:19640302_122880000_6"
17 bNumConfigurations 1 01h  
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 02h Configuration
2 wTotalLength 2 01FDh  
4 bNumInterfaces 1 0Bh  
5 bConfigurationValue 1 01h  
6 iConfiguration 1 00h  
7 bmAttributes 1 C0h Self Powered
  4..0: Reserved   ...00000   
  5: Remote Wakeup   ..0.....  No
  6: Self Powered   .1......  Yes
  7: Reserved (set to one)
(bus-powered for 1.0)
  1.......   
8 bMaxPower 1 7Dh 250 mA
Offset Field Size Value Description
0 bLength 1 08h  
1 bDescriptorType 1 0Bh Interface Association
2 bFirstInterface 1 00h  
3 bInterfaceCount 1 01h  
4 bFunctionClass 1 FEh Application-Specific
5 bFunctionSubClass 1 01h Device Firmware Upgrade
6 bFunctionProtocol 1 02h DFU Mode
7 iFunction 1 1Ah "Storch DFU Device"
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 00h  
3 bAlternateSetting 1 00h  
4 bNumEndpoints 1 00h  
5 bInterfaceClass 1 FEh Application-Specific
6 bInterfaceSubClass 1 01h Device Firmware Upgrade
7 bInterfaceProtocol 1 02h DFU Mode
8 iInterface 1 1Bh "@SPI Flash APPLICATION: SPIDF:EF:4018:00/0x70080000/248*064Kg"
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 21h DFU Functional
2 bmAttributes 1 07h  
  0: bitCanDnload   .......1  Yes
  1: bitCanUpload   ......1.  Yes
  2: bitManifestationTolerant   .....1..  Yes
  3: bitWillDetach   ....0...  No
  7..4: Reserved   0000....   
3 wDetachTimeOut 2 01F4h 500 ms
5 wTransferSize 2 0100h 256 bytes
7 bcdDFUVersion 2 0110h 1.10
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 00h  
3 bAlternateSetting 1 01h  
4 bNumEndpoints 1 00h  
5 bInterfaceClass 1 FEh Application-Specific
6 bInterfaceSubClass 1 01h Device Firmware Upgrade
7 bInterfaceProtocol 1 02h DFU Mode
8 iInterface 1 1Ch "@SPI Flash BOOTLOADER: W25Q128JV/0x70000000/08*064Kg"
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 21h DFU Functional
2 bmAttributes 1 07h  
  0: bitCanDnload   .......1  Yes
  1: bitCanUpload   ......1.  Yes
  2: bitManifestationTolerant   .....1..  Yes
  3: bitWillDetach   ....0...  No
  7..4: Reserved   0000....   
3 wDetachTimeOut 2 01F4h 500 ms
5 wTransferSize 2 0100h 256 bytes
7 bcdDFUVersion 2 0110h 1.10
Offset Field Size Value Description
0 bLength 1 08h  
1 bDescriptorType 1 0Bh Interface Association
2 bFirstInterface 1 01h  
3 bInterfaceCount 1 02h  
4 bFunctionClass 1 02h CDC Control
5 bFunctionSubClass 1 02h Abstract Control Model
6 bFunctionProtocol 1 00h  
7 iFunction 1 04h "Storch Serial Port #1"
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 01h  
3 bAlternateSetting 1 00h  
4 bNumEndpoints 1 01h  
5 bInterfaceClass 1 02h CDC Control
6 bInterfaceSubClass 1 02h Abstract Control Model
7 bInterfaceProtocol 1 00h  
8 iInterface 1 00h  
Offset Field Size Value Description
0 bFunctionLength 1 05h  
1 bDescriptorType 1 24h CS Interface
2 bDescriptorSubtype 1 00h Header
3 bcdCDC 2 0110h 1.10
Offset Field Size Value Description
0 bFunctionLength 1 05h  
1 bDescriptorType 1 24h CS Interface
2 bDescriptorSubtype 1 01h Call Management
3 bmCapabilities 1 00h  
  7..2: Reserved   000000..   
  1: Data Ifc Usage   ......0.  Call management only over Comm Ifc
  0: Call Management   .......0  Does not handle call management itself
4 bDataInterface 1 02h  
Offset Field Size Value Description
0 bFunctionLength 1 04h  
1 bDescriptorType 1 24h CS Interface
2 bDescriptorSubtype 1 02h Abstract Control Management
3 bmCapabilities 1 02h  
  7..4: Reserved   0000....   
  3: Connection   ....0...   
  2: Send Break   .....0..   
  1: Line Coding   ......1.  Line Coding requests and Serial State notification supported
  0: Comm Features   .......0   
Offset Field Size Value Description
0 bFunctionLength 1 05h  
1 bDescriptorType 1 24h CS Interface
2 bDescriptorSubtype 1 06h Union
3 bControlInterface 1 01h  
4 bSubordinateInterface0 1 02h CDC Data
Offset Field Size Value Description
0 bLength 1 07h  
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 83h 3 In
3 bmAttributes 1 03h Interrupt
  1..0: Transfer Type   ......11  Interrupt
  7..2: Reserved   000000..   
4 wMaxPacketSize 2 000Ah 10 bytes
6 bInterval 1 FFh 255 ms
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 02h  
3 bAlternateSetting 1 00h  
4 bNumEndpoints 1 02h  
5 bInterfaceClass 1 0Ah CDC Data
6 bInterfaceSubClass 1 00h  
7 bInterfaceProtocol 1 00h  
8 iInterface 1 00h  
Offset Field Size Value Description
0 bLength 1 07h  
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 02h 2 Out
3 bmAttributes 1 02h Bulk
  1..0: Transfer Type   ......10  Bulk
  7..2: Reserved   000000..   
4 wMaxPacketSize 2 0040h 64 bytes
6 bInterval 1 00h  
Offset Field Size Value Description
0 bLength 1 07h  
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 84h 4 In
3 bmAttributes 1 02h Bulk
  1..0: Transfer Type   ......10  Bulk
  7..2: Reserved   000000..   
4 wMaxPacketSize 2 0040h 64 bytes
6 bInterval 1 00h  
Offset Field Size Value Description
0 bLength 1 08h  
1 bDescriptorType 1 0Bh Interface Association
2 bFirstInterface 1 03h  
3 bInterfaceCount 1 02h  
4 bFunctionClass 1 02h CDC Control
5 bFunctionSubClass 1 02h Abstract Control Model
6 bFunctionProtocol 1 00h  
7 iFunction 1 05h "Storch Serial Port #2"
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 03h  
3 bAlternateSetting 1 00h  
4 bNumEndpoints 1 01h  
5 bInterfaceClass 1 02h CDC Control
6 bInterfaceSubClass 1 02h Abstract Control Model
7 bInterfaceProtocol 1 00h  
8 iInterface 1 00h  
Offset Field Size Value Description
0 bFunctionLength 1 05h  
1 bDescriptorType 1 24h CS Interface
2 bDescriptorSubtype 1 00h Header
3 bcdCDC 2 0110h 1.10
Offset Field Size Value Description
0 bFunctionLength 1 05h  
1 bDescriptorType 1 24h CS Interface
2 bDescriptorSubtype 1 01h Call Management
3 bmCapabilities 1 00h  
  7..2: Reserved   000000..   
  1: Data Ifc Usage   ......0.  Call management only over Comm Ifc
  0: Call Management   .......0  Does not handle call management itself
4 bDataInterface 1 04h  
Offset Field Size Value Description
0 bFunctionLength 1 04h  
1 bDescriptorType 1 24h CS Interface
2 bDescriptorSubtype 1 02h Abstract Control Management
3 bmCapabilities 1 02h  
  7..4: Reserved   0000....   
  3: Connection   ....0...   
  2: Send Break   .....0..   
  1: Line Coding   ......1.  Line Coding requests and Serial State notification supported
  0: Comm Features   .......0   
Offset Field Size Value Description
0 bFunctionLength 1 05h  
1 bDescriptorType 1 24h CS Interface
2 bDescriptorSubtype 1 06h Union
3 bControlInterface 1 03h  
4 bSubordinateInterface0 1 04h CDC Data
Offset Field Size Value Description
0 bLength 1 07h  
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 83h 3 In
3 bmAttributes 1 03h Interrupt
  1..0: Transfer Type   ......11  Interrupt
  7..2: Reserved   000000..   
4 wMaxPacketSize 2 000Ah 10 bytes
6 bInterval 1 FFh 255 ms
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 04h  
3 bAlternateSetting 1 00h  
4 bNumEndpoints 1 02h  
5 bInterfaceClass 1 0Ah CDC Data
6 bInterfaceSubClass 1 00h  
7 bInterfaceProtocol 1 00h  
8 iInterface 1 00h  
Offset Field Size Value Description
0 bLength 1 07h  
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 03h 3 Out
3 bmAttributes 1 02h Bulk
  1..0: Transfer Type   ......10  Bulk
  7..2: Reserved   000000..   
4 wMaxPacketSize 2 0040h 64 bytes
6 bInterval 1 00h  
Offset Field Size Value Description
0 bLength 1 07h  
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 85h 5 In
3 bmAttributes 1 02h Bulk
  1..0: Transfer Type   ......10  Bulk
  7..2: Reserved   000000..   
4 wMaxPacketSize 2 0040h 64 bytes
6 bInterval 1 00h  
Offset Field Size Value Description
0 bLength 1 08h  
1 bDescriptorType 1 0Bh Interface Association
2 bFirstInterface 1 05h  
3 bInterfaceCount 1 02h  
4 bFunctionClass 1 01h Audio
5 bFunctionSubClass 1 00h  
6 bFunctionProtocol 1 00h  
7 iFunction 1 09h "Storch RX Voice"
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 05h  
3 bAlternateSetting 1 00h  
4 bNumEndpoints 1 00h  
5 bInterfaceClass 1 01h Audio
6 bInterfaceSubClass 1 01h Audio Control
7 bInterfaceProtocol 1 00h  
8 iInterface 1 09h "Storch RX Voice"
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 24h Audio Control Interface Header
2   7 01 00 01 27 00 01 06   
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 24h Audio Control Output Terminal
2   7 03 30 01 01 00 60 0F   
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 24h Audio Control Feature Unit
2   7 06 60 31 02 03 00 00   
Offset Field Size Value Description
0 bLength 1 0Ch  
1 bDescriptorType 1 24h Audio Control Input Terminal
2   10 02 31 10 07 00 02 03 00 
15 00 
 
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 06h  
3 bAlternateSetting 1 00h  
4 bNumEndpoints 1 00h  
5 bInterfaceClass 1 01h Audio
6 bInterfaceSubClass 1 02h Audio Streaming
7 bInterfaceProtocol 1 00h  
8 iInterface 1 12h "active 1"
 
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 06h  
3 bAlternateSetting 1 01h  
4 bNumEndpoints 1 01h  
5 bInterfaceClass 1 01h Audio
6 bInterfaceSubClass 1 02h Audio Streaming
7 bInterfaceProtocol 1 00h  
8 iInterface 1 12h "active 1"
Offset Field Size Value Description
0 bLength 1 07h  
1 bDescriptorType 1 24h Audio Streaming Interface
2   5 01 30 01 01 00   
Offset Field Size Value Description
0 bLength 1 0Bh  
1 bDescriptorType 1 24h Audio Streaming Format Type
2   9 02 01 02 02 10 01 80 BB 
00 
 
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 81h 1 In
3 bmAttributes 1 25h Isochronous, Asynchronous, Implicit Feedback Data
  1..0: Transfer Type   ......01  Isochronous
  3..2: Sync Type   ....01..  Asynchronous
  5..4: Usage Type   ..10....  Implicit Feedback Data
  7..6: Reserved   00......   
4 wMaxPacketSize 2 00C4h 196 bytes
6 bInterval 1 01h 1 ms
7 bRefresh 1 00h  
8 bSynchAddress 1 00h  
Offset Field Size Value Description
0 bLength 1 07h  
1 bDescriptorType 1 25h Audio Streaming Isochronous Audio Data Endpoint
2   5 01 00 02 00 00   
Offset Field Size Value Description
0 bLength 1 08h  
1 bDescriptorType 1 0Bh Interface Association
2 bFirstInterface 1 07h  
3 bInterfaceCount 1 02h  
4 bFunctionClass 1 01h Audio
5 bFunctionSubClass 1 00h  
6 bFunctionProtocol 1 00h  
7 iFunction 1 0Ah "Storch RX Spectrum"
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 07h  
3 bAlternateSetting 1 00h  
4 bNumEndpoints 1 00h  
5 bInterfaceClass 1 01h Audio
6 bInterfaceSubClass 1 01h Audio Control
7 bInterfaceProtocol 1 00h  
8 iInterface 1 0Ah "Storch RX Spectrum"
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 24h Audio Control Interface Header
2   7 01 00 01 27 00 01 08   
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 24h Audio Control Output Terminal
2   7 03 44 01 01 00 64 10   
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 24h Audio Control Feature Unit
2   7 06 64 45 02 03 00 00   
Offset Field Size Value Description
0 bLength 1 0Ch  
1 bDescriptorType 1 24h Audio Control Input Terminal
2   10 02 45 10 07 00 02 03 00 
15 19 
 
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 08h  
3 bAlternateSetting 1 00h  
4 bNumEndpoints 1 00h  
5 bInterfaceClass 1 01h Audio
6 bInterfaceSubClass 1 02h Audio Streaming
7 bInterfaceProtocol 1 00h  
8 iInterface 1 13h "active 2"
 
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 08h  
3 bAlternateSetting 1 01h  
4 bNumEndpoints 1 01h  
5 bInterfaceClass 1 01h Audio
6 bInterfaceSubClass 1 02h Audio Streaming
7 bInterfaceProtocol 1 00h  
8 iInterface 1 13h "active 2"
Offset Field Size Value Description
0 bLength 1 07h  
1 bDescriptorType 1 24h Audio Streaming Interface
2   5 01 44 01 01 00   
Offset Field Size Value Description
0 bLength 1 0Bh  
1 bDescriptorType 1 24h Audio Streaming Format Type
2   9 02 01 02 03 18 01 00 77 
01 
 
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 82h 2 In
3 bmAttributes 1 25h Isochronous, Asynchronous, Implicit Feedback Data
  1..0: Transfer Type   ......01  Isochronous
  3..2: Sync Type   ....01..  Asynchronous
  5..4: Usage Type   ..10....  Implicit Feedback Data
  7..6: Reserved   00......   
4 wMaxPacketSize 2 0246h 582 bytes
6 bInterval 1 01h 1 ms
7 bRefresh 1 00h  
8 bSynchAddress 1 00h  
Offset Field Size Value Description
0 bLength 1 07h  
1 bDescriptorType 1 25h Audio Streaming Isochronous Audio Data Endpoint
2   5 01 00 02 00 00   
Offset Field Size Value Description
0 bLength 1 08h  
1 bDescriptorType 1 0Bh Interface Association
2 bFirstInterface 1 09h  
3 bInterfaceCount 1 02h  
4 bFunctionClass 1 01h Audio
5 bFunctionSubClass 1 00h  
6 bFunctionProtocol 1 00h  
7 iFunction 1 0Bh "Storch TX Voice"
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 09h  
3 bAlternateSetting 1 00h  
4 bNumEndpoints 1 00h  
5 bInterfaceClass 1 01h Audio
6 bInterfaceSubClass 1 01h Audio Control
7 bInterfaceProtocol 1 00h  
8 iInterface 1 0Bh "Storch TX Voice"
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 24h Audio Control Interface Header
2   7 01 00 01 27 00 01 0A   
Offset Field Size Value Description
0 bLength 1 0Ch  
1 bDescriptorType 1 24h Audio Control Input Terminal
2   10 02 28 01 01 00 02 03 00 
15 0E 
 
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 24h Audio Control Feature Unit
2   7 06 78 28 02 03 00 00   
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 24h Audio Control Output Terminal
2   7 03 29 11 07 00 78 00   
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 0Ah  
3 bAlternateSetting 1 00h  
4 bNumEndpoints 1 00h  
5 bInterfaceClass 1 01h Audio
6 bInterfaceSubClass 1 02h Audio Streaming
7 bInterfaceProtocol 1 00h  
8 iInterface 1 14h "active 3"
 
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 0Ah  
3 bAlternateSetting 1 01h  
4 bNumEndpoints 1 01h  
5 bInterfaceClass 1 01h Audio
6 bInterfaceSubClass 1 02h Audio Streaming
7 bInterfaceProtocol 1 00h  
8 iInterface 1 14h "active 3"
Offset Field Size Value Description
0 bLength 1 07h  
1 bDescriptorType 1 24h Audio Streaming Interface
2   5 01 28 01 01 00   
Offset Field Size Value Description
0 bLength 1 0Bh  
1 bDescriptorType 1 24h Audio Streaming Format Type
2   9 02 01 02 02 10 01 80 BB 
00 
 
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 01h 1 Out
3 bmAttributes 1 25h Isochronous, Asynchronous, Implicit Feedback Data
  1..0: Transfer Type   ......01  Isochronous
  3..2: Sync Type   ....01..  Asynchronous
  5..4: Usage Type   ..10....  Implicit Feedback Data
  7..6: Reserved   00......   
4 wMaxPacketSize 2 00C0h 192 bytes
6 bInterval 1 01h 1 ms
7 bRefresh 1 00h  
8 bSynchAddress 1 00h  
Offset Field Size Value Description
0 bLength 1 07h  
1 bDescriptorType 1 25h Audio Streaming Isochronous Audio Data Endpoint
2   5 01 00 02 00 00   

 

Edited by GenaSPB

Share this post


Link to post
Share on other sites
16 minutes ago, Eddy_Em said:

В моих поделках CDC используются исключительно для общения МК с компьютером. Я не делаю физических преобразователей с 232/485 на USB. В общем, мне и уведомления никакие не нужны.

Кстати, при разработке эмулятора PL2303 я, чтобы не реверсить китайские подделки, взял всю необходимую информацию из модуля ядра. Понятно, что его делали по реверсу (иначе там бы не было комментариев вроде "ХЗ, зачем это нужно, но без этого не работает). Но вот конечная точка Interrupt там используется только номинально! Во многих других CDC она вообще не используется…

И тем не менее, через эту точку я в соответствии со стандартом USB передаю состояние линий DCD, DSR и событие переполнения буфера на прием, ошибку четности, что отображается на хостах. Я могу ошибаться, но PL2303 не работает с CDC Class drivers, а требует своих драйверов. Почему потребовалось эмулировать именно его? Ну и опять же, есть стандарт USB CDC, я со своей стороны стараюсь максимально ему соответствовать. Хотя и там есть пространство для интерпретаций. Если какие-то драйвера не реализуют часть функциональности, то это в целом проблема этих драйверов, а не повод мне отклоняться от стандарта. Разумеется если это не вопрос вида: устройство не работает с кривой реализацией драйвера в популярной операционной системе. Тогда уже придется изворачиваться.

Но я согласен, раз не нужны уведомления, ваш способ вполне имеет право на жизнь. Собственно я об этом в самом начале и сказал.

19 minutes ago, adnega said:

У меня есть:

- Universal Serial Bus Specification Revision 2.0 April 27, 2000;

- Universal Serial Bus Class Definitions for Communications Devices Revision 1.2 November 16, 2007;

- Universal Serial Bus Communications Class Subclass Specification for PSTN Devices Revision 1.2 February 9, 2007.

Этого достаточно или рекомендуете еще что-то?

Я думаю, достаточно. Навскидку больше ничего посоветовать не могу.

20 minutes ago, adnega said:

Говорят, для ST-MCU могут выдать VID/PID. Мне бы хватило стандартного для VCP, но наверное нужно каким-то требованиям по функционалу удовлетворять. Как появится время - попробую этот вопрос решить.

Если честно, то сомневаюсь в возможности получения PID для коммерческого устройства у STM в 2020 году. Причина в позиции организации занимающейся распределением VID. Продавать и передавать PID больше нельзя, к сожалению. У этого запрета сомнительный юридический статус, но тем не менее по моему мнению STM не будет связываться. Но это всего лишь мнение не подкрепленное практикой, поэтому я могу ошибаться.

Share this post


Link to post
Share on other sites
20 минут назад, adnega сказал:

Читал. Круто все и довольно глубоко все поясняется, но в стиле "делай раз, делай два", а мне нужно что-то типа спецификаций/стандартов.

"Энциклопедия Шины PCI, USB и FireWire" Михаила Гука. Довольно подробно и доходчиво описаны основы USB. Правда классы USB-устройств вроде не расписаны.

Share this post


Link to post
Share on other sites
13 minutes ago, GenaSPB said:

Windows 10.

Shared endpoint не помешала двум портам в составном устройстве нормально приниматиь и передавать данные. Нотификации не слал.

  Reveal hidden contents
Connection Status Device connected
Current Configuration 1
Speed Full (12 Mbit/s)
Device Address 4
Number Of Open Pipes 6
Offset Field Size Value Description
0 bLength 1 12h  
1 bDescriptorType 1 01h Device
2 bcdUSB 2 0200h USB Spec 2.0
4 bDeviceClass 1 EFh Miscellaneous
5 bDeviceSubClass 1 02h Common Class
6 bDeviceProtocol 1 01h Interface Association Descriptor
7 bMaxPacketSize0 1 40h 64 bytes
8 idVendor 2 FFFFh  
10 idProduct 2 073Bh  
12 bcdDevice 2 0106h 1.06
14 iManufacturer 1 01h "MicroGenSF"
15 iProduct 1 02h "Storch"
16 iSerialNumber 1 03h "SN:19640302_122880000_6"
17 bNumConfigurations 1 01h  
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 02h Configuration
2 wTotalLength 2 01FDh  
4 bNumInterfaces 1 0Bh  
5 bConfigurationValue 1 01h  
6 iConfiguration 1 00h  
7 bmAttributes 1 C0h Self Powered
  4..0: Reserved   ...00000   
  5: Remote Wakeup   ..0.....  No
  6: Self Powered   .1......  Yes
  7: Reserved (set to one)
(bus-powered for 1.0)
  1.......   
8 bMaxPower 1 7Dh 250 mA
Offset Field Size Value Description
0 bLength 1 08h  
1 bDescriptorType 1 0Bh Interface Association
2 bFirstInterface 1 00h  
3 bInterfaceCount 1 01h  
4 bFunctionClass 1 FEh Application-Specific
5 bFunctionSubClass 1 01h Device Firmware Upgrade
6 bFunctionProtocol 1 02h DFU Mode
7 iFunction 1 1Ah "Storch DFU Device"
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 00h  
3 bAlternateSetting 1 00h  
4 bNumEndpoints 1 00h  
5 bInterfaceClass 1 FEh Application-Specific
6 bInterfaceSubClass 1 01h Device Firmware Upgrade
7 bInterfaceProtocol 1 02h DFU Mode
8 iInterface 1 1Bh "@SPI Flash APPLICATION: SPIDF:EF:4018:00/0x70080000/248*064Kg"
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 21h DFU Functional
2 bmAttributes 1 07h  
  0: bitCanDnload   .......1  Yes
  1: bitCanUpload   ......1.  Yes
  2: bitManifestationTolerant   .....1..  Yes
  3: bitWillDetach   ....0...  No
  7..4: Reserved   0000....   
3 wDetachTimeOut 2 01F4h 500 ms
5 wTransferSize 2 0100h 256 bytes
7 bcdDFUVersion 2 0110h 1.10
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 00h  
3 bAlternateSetting 1 01h  
4 bNumEndpoints 1 00h  
5 bInterfaceClass 1 FEh Application-Specific
6 bInterfaceSubClass 1 01h Device Firmware Upgrade
7 bInterfaceProtocol 1 02h DFU Mode
8 iInterface 1 1Ch "@SPI Flash BOOTLOADER: W25Q128JV/0x70000000/08*064Kg"
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 21h DFU Functional
2 bmAttributes 1 07h  
  0: bitCanDnload   .......1  Yes
  1: bitCanUpload   ......1.  Yes
  2: bitManifestationTolerant   .....1..  Yes
  3: bitWillDetach   ....0...  No
  7..4: Reserved   0000....   
3 wDetachTimeOut 2 01F4h 500 ms
5 wTransferSize 2 0100h 256 bytes
7 bcdDFUVersion 2 0110h 1.10
Offset Field Size Value Description
0 bLength 1 08h  
1 bDescriptorType 1 0Bh Interface Association
2 bFirstInterface 1 01h  
3 bInterfaceCount 1 02h  
4 bFunctionClass 1 02h CDC Control
5 bFunctionSubClass 1 02h Abstract Control Model
6 bFunctionProtocol 1 00h  
7 iFunction 1 04h "Storch Serial Port #1"
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 01h  
3 bAlternateSetting 1 00h  
4 bNumEndpoints 1 01h  
5 bInterfaceClass 1 02h CDC Control
6 bInterfaceSubClass 1 02h Abstract Control Model
7 bInterfaceProtocol 1 00h  
8 iInterface 1 00h  
Offset Field Size Value Description
0 bFunctionLength 1 05h  
1 bDescriptorType 1 24h CS Interface
2 bDescriptorSubtype 1 00h Header
3 bcdCDC 2 0110h 1.10
Offset Field Size Value Description
0 bFunctionLength 1 05h  
1 bDescriptorType 1 24h CS Interface
2 bDescriptorSubtype 1 01h Call Management
3 bmCapabilities 1 00h  
  7..2: Reserved   000000..   
  1: Data Ifc Usage   ......0.  Call management only over Comm Ifc
  0: Call Management   .......0  Does not handle call management itself
4 bDataInterface 1 02h  
Offset Field Size Value Description
0 bFunctionLength 1 04h  
1 bDescriptorType 1 24h CS Interface
2 bDescriptorSubtype 1 02h Abstract Control Management
3 bmCapabilities 1 02h  
  7..4: Reserved   0000....   
  3: Connection   ....0...   
  2: Send Break   .....0..   
  1: Line Coding   ......1.  Line Coding requests and Serial State notification supported
  0: Comm Features   .......0   
Offset Field Size Value Description
0 bFunctionLength 1 05h  
1 bDescriptorType 1 24h CS Interface
2 bDescriptorSubtype 1 06h Union
3 bControlInterface 1 01h  
4 bSubordinateInterface0 1 02h CDC Data
Offset Field Size Value Description
0 bLength 1 07h  
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 83h 3 In
3 bmAttributes 1 03h Interrupt
  1..0: Transfer Type   ......11  Interrupt
  7..2: Reserved   000000..   
4 wMaxPacketSize 2 000Ah 10 bytes
6 bInterval 1 FFh 255 ms
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 02h  
3 bAlternateSetting 1 00h  
4 bNumEndpoints 1 02h  
5 bInterfaceClass 1 0Ah CDC Data
6 bInterfaceSubClass 1 00h  
7 bInterfaceProtocol 1 00h  
8 iInterface 1 00h  
Offset Field Size Value Description
0 bLength 1 07h  
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 02h 2 Out
3 bmAttributes 1 02h Bulk
  1..0: Transfer Type   ......10  Bulk
  7..2: Reserved   000000..   
4 wMaxPacketSize 2 0040h 64 bytes
6 bInterval 1 00h  
Offset Field Size Value Description
0 bLength 1 07h  
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 84h 4 In
3 bmAttributes 1 02h Bulk
  1..0: Transfer Type   ......10  Bulk
  7..2: Reserved   000000..   
4 wMaxPacketSize 2 0040h 64 bytes
6 bInterval 1 00h  
Offset Field Size Value Description
0 bLength 1 08h  
1 bDescriptorType 1 0Bh Interface Association
2 bFirstInterface 1 03h  
3 bInterfaceCount 1 02h  
4 bFunctionClass 1 02h CDC Control
5 bFunctionSubClass 1 02h Abstract Control Model
6 bFunctionProtocol 1 00h  
7 iFunction 1 05h "Storch Serial Port #2"
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 03h  
3 bAlternateSetting 1 00h  
4 bNumEndpoints 1 01h  
5 bInterfaceClass 1 02h CDC Control
6 bInterfaceSubClass 1 02h Abstract Control Model
7 bInterfaceProtocol 1 00h  
8 iInterface 1 00h  
Offset Field Size Value Description
0 bFunctionLength 1 05h  
1 bDescriptorType 1 24h CS Interface
2 bDescriptorSubtype 1 00h Header
3 bcdCDC 2 0110h 1.10
Offset Field Size Value Description
0 bFunctionLength 1 05h  
1 bDescriptorType 1 24h CS Interface
2 bDescriptorSubtype 1 01h Call Management
3 bmCapabilities 1 00h  
  7..2: Reserved   000000..   
  1: Data Ifc Usage   ......0.  Call management only over Comm Ifc
  0: Call Management   .......0  Does not handle call management itself
4 bDataInterface 1 04h  
Offset Field Size Value Description
0 bFunctionLength 1 04h  
1 bDescriptorType 1 24h CS Interface
2 bDescriptorSubtype 1 02h Abstract Control Management
3 bmCapabilities 1 02h  
  7..4: Reserved   0000....   
  3: Connection   ....0...   
  2: Send Break   .....0..   
  1: Line Coding   ......1.  Line Coding requests and Serial State notification supported
  0: Comm Features   .......0   
Offset Field Size Value Description
0 bFunctionLength 1 05h  
1 bDescriptorType 1 24h CS Interface
2 bDescriptorSubtype 1 06h Union
3 bControlInterface 1 03h  
4 bSubordinateInterface0 1 04h CDC Data
Offset Field Size Value Description
0 bLength 1 07h  
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 83h 3 In
3 bmAttributes 1 03h Interrupt
  1..0: Transfer Type   ......11  Interrupt
  7..2: Reserved   000000..   
4 wMaxPacketSize 2 000Ah 10 bytes
6 bInterval 1 FFh 255 ms
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 04h  
3 bAlternateSetting 1 00h  
4 bNumEndpoints 1 02h  
5 bInterfaceClass 1 0Ah CDC Data
6 bInterfaceSubClass 1 00h  
7 bInterfaceProtocol 1 00h  
8 iInterface 1 00h  
Offset Field Size Value Description
0 bLength 1 07h  
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 03h 3 Out
3 bmAttributes 1 02h Bulk
  1..0: Transfer Type   ......10  Bulk
  7..2: Reserved   000000..   
4 wMaxPacketSize 2 0040h 64 bytes
6 bInterval 1 00h  
Offset Field Size Value Description
0 bLength 1 07h  
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 85h 5 In
3 bmAttributes 1 02h Bulk
  1..0: Transfer Type   ......10  Bulk
  7..2: Reserved   000000..   
4 wMaxPacketSize 2 0040h 64 bytes
6 bInterval 1 00h  
Offset Field Size Value Description
0 bLength 1 08h  
1 bDescriptorType 1 0Bh Interface Association
2 bFirstInterface 1 05h  
3 bInterfaceCount 1 02h  
4 bFunctionClass 1 01h Audio
5 bFunctionSubClass 1 00h  
6 bFunctionProtocol 1 00h  
7 iFunction 1 09h "Storch RX Voice"
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 05h  
3 bAlternateSetting 1 00h  
4 bNumEndpoints 1 00h  
5 bInterfaceClass 1 01h Audio
6 bInterfaceSubClass 1 01h Audio Control
7 bInterfaceProtocol 1 00h  
8 iInterface 1 09h "Storch RX Voice"
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 24h Audio Control Interface Header
2   7 01 00 01 27 00 01 06   
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 24h Audio Control Output Terminal
2   7 03 30 01 01 00 60 0F   
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 24h Audio Control Feature Unit
2   7 06 60 31 02 03 00 00   
Offset Field Size Value Description
0 bLength 1 0Ch  
1 bDescriptorType 1 24h Audio Control Input Terminal
2   10 02 31 10 07 00 02 03 00 
15 00 
 
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 06h  
3 bAlternateSetting 1 00h  
4 bNumEndpoints 1 00h  
5 bInterfaceClass 1 01h Audio
6 bInterfaceSubClass 1 02h Audio Streaming
7 bInterfaceProtocol 1 00h  
8 iInterface 1 12h "active 1"
 
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 06h  
3 bAlternateSetting 1 01h  
4 bNumEndpoints 1 01h  
5 bInterfaceClass 1 01h Audio
6 bInterfaceSubClass 1 02h Audio Streaming
7 bInterfaceProtocol 1 00h  
8 iInterface 1 12h "active 1"
Offset Field Size Value Description
0 bLength 1 07h  
1 bDescriptorType 1 24h Audio Streaming Interface
2   5 01 30 01 01 00   
Offset Field Size Value Description
0 bLength 1 0Bh  
1 bDescriptorType 1 24h Audio Streaming Format Type
2   9 02 01 02 02 10 01 80 BB 
00 
 
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 81h 1 In
3 bmAttributes 1 25h Isochronous, Asynchronous, Implicit Feedback Data
  1..0: Transfer Type   ......01  Isochronous
  3..2: Sync Type   ....01..  Asynchronous
  5..4: Usage Type   ..10....  Implicit Feedback Data
  7..6: Reserved   00......   
4 wMaxPacketSize 2 00C4h 196 bytes
6 bInterval 1 01h 1 ms
7 bRefresh 1 00h  
8 bSynchAddress 1 00h  
Offset Field Size Value Description
0 bLength 1 07h  
1 bDescriptorType 1 25h Audio Streaming Isochronous Audio Data Endpoint
2   5 01 00 02 00 00   
Offset Field Size Value Description
0 bLength 1 08h  
1 bDescriptorType 1 0Bh Interface Association
2 bFirstInterface 1 07h  
3 bInterfaceCount 1 02h  
4 bFunctionClass 1 01h Audio
5 bFunctionSubClass 1 00h  
6 bFunctionProtocol 1 00h  
7 iFunction 1 0Ah "Storch RX Spectrum"
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 07h  
3 bAlternateSetting 1 00h  
4 bNumEndpoints 1 00h  
5 bInterfaceClass 1 01h Audio
6 bInterfaceSubClass 1 01h Audio Control
7 bInterfaceProtocol 1 00h  
8 iInterface 1 0Ah "Storch RX Spectrum"
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 24h Audio Control Interface Header
2   7 01 00 01 27 00 01 08   
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 24h Audio Control Output Terminal
2   7 03 44 01 01 00 64 10   
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 24h Audio Control Feature Unit
2   7 06 64 45 02 03 00 00   
Offset Field Size Value Description
0 bLength 1 0Ch  
1 bDescriptorType 1 24h Audio Control Input Terminal
2   10 02 45 10 07 00 02 03 00 
15 19 
 
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 08h  
3 bAlternateSetting 1 00h  
4 bNumEndpoints 1 00h  
5 bInterfaceClass 1 01h Audio
6 bInterfaceSubClass 1 02h Audio Streaming
7 bInterfaceProtocol 1 00h  
8 iInterface 1 13h "active 2"
 
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 08h  
3 bAlternateSetting 1 01h  
4 bNumEndpoints 1 01h  
5 bInterfaceClass 1 01h Audio
6 bInterfaceSubClass 1 02h Audio Streaming
7 bInterfaceProtocol 1 00h  
8 iInterface 1 13h "active 2"
Offset Field Size Value Description
0 bLength 1 07h  
1 bDescriptorType 1 24h Audio Streaming Interface
2   5 01 44 01 01 00   
Offset Field Size Value Description
0 bLength 1 0Bh  
1 bDescriptorType 1 24h Audio Streaming Format Type
2   9 02 01 02 03 18 01 00 77 
01 
 
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 82h 2 In
3 bmAttributes 1 25h Isochronous, Asynchronous, Implicit Feedback Data
  1..0: Transfer Type   ......01  Isochronous
  3..2: Sync Type   ....01..  Asynchronous
  5..4: Usage Type   ..10....  Implicit Feedback Data
  7..6: Reserved   00......   
4 wMaxPacketSize 2 0246h 582 bytes
6 bInterval 1 01h 1 ms
7 bRefresh 1 00h  
8 bSynchAddress 1 00h  
Offset Field Size Value Description
0 bLength 1 07h  
1 bDescriptorType 1 25h Audio Streaming Isochronous Audio Data Endpoint
2   5 01 00 02 00 00   
Offset Field Size Value Description
0 bLength 1 08h  
1 bDescriptorType 1 0Bh Interface Association
2 bFirstInterface 1 09h  
3 bInterfaceCount 1 02h  
4 bFunctionClass 1 01h Audio
5 bFunctionSubClass 1 00h  
6 bFunctionProtocol 1 00h  
7 iFunction 1 0Bh "Storch TX Voice"
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 09h  
3 bAlternateSetting 1 00h  
4 bNumEndpoints 1 00h  
5 bInterfaceClass 1 01h Audio
6 bInterfaceSubClass 1 01h Audio Control
7 bInterfaceProtocol 1 00h  
8 iInterface 1 0Bh "Storch TX Voice"
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 24h Audio Control Interface Header
2   7 01 00 01 27 00 01 0A   
Offset Field Size Value Description
0 bLength 1 0Ch  
1 bDescriptorType 1 24h Audio Control Input Terminal
2   10 02 28 01 01 00 02 03 00 
15 0E 
 
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 24h Audio Control Feature Unit
2   7 06 78 28 02 03 00 00   
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 24h Audio Control Output Terminal
2   7 03 29 11 07 00 78 00   
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 0Ah  
3 bAlternateSetting 1 00h  
4 bNumEndpoints 1 00h  
5 bInterfaceClass 1 01h Audio
6 bInterfaceSubClass 1 02h Audio Streaming
7 bInterfaceProtocol 1 00h  
8 iInterface 1 14h "active 3"
 
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 0Ah  
3 bAlternateSetting 1 01h  
4 bNumEndpoints 1 01h  
5 bInterfaceClass 1 01h Audio
6 bInterfaceSubClass 1 02h Audio Streaming
7 bInterfaceProtocol 1 00h  
8 iInterface 1 14h "active 3"
Offset Field Size Value Description
0 bLength 1 07h  
1 bDescriptorType 1 24h Audio Streaming Interface
2   5 01 28 01 01 00   
Offset Field Size Value Description
0 bLength 1 0Bh  
1 bDescriptorType 1 24h Audio Streaming Format Type
2   9 02 01 02 02 10 01 80 BB 
00 
 
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 01h 1 Out
3 bmAttributes 1 25h Isochronous, Asynchronous, Implicit Feedback Data
  1..0: Transfer Type   ......01  Isochronous
  3..2: Sync Type   ....01..  Asynchronous
  5..4: Usage Type   ..10....  Implicit Feedback Data
  7..6: Reserved   00......   
4 wMaxPacketSize 2 00C0h 192 bytes
6 bInterval 1 01h 1 ms
7 bRefresh 1 00h  
8 bSynchAddress 1 00h  
Offset Field Size Value Description
0 bLength 1 07h  
1 bDescriptorType 1 25h Audio Streaming Isochronous Audio Data Endpoint
2   5 01 00 02 00 00   

 

 

Спасибо. Подозреваю что в таком случае и нотификации бы заработали. Может быть не на всех платформах. Надо будет протестировать.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.