реклама на сайте
подробности

 
 
> Составное USB, нехватка конечных точек
pil
сообщение Jul 19 2011, 12:50
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 33
Регистрация: 15-11-08
Пользователь №: 41 658



Собственно на LPC1343 реализованно composite device. Все получается, но! нехватает конечных точек. Вычитал, что можно как то подцепиться к 0й endpoint. Как? Подскажите где копать, пожалуйста.
Дальше вопрос, сможет ли в таком случае соответствующий интерфейс стать стандартным (kbd, mouse) ?

Конкретезирую. У меня composite: mouse+kbd+Virtual COM.

mouse 1 endpoint interrupt in
kbd 1 endpoint interrupt in
Virt COM 3: 1 in interrupt + 1 in bulk + 1 out bulk

тем временем в контроллере:
0 0 Control Out 64 No
0 1 Control In 64 No
1 2 Interrupt/Bulk Out 64 No
1 3 Interrupt/Bulk In 64 No
2 4 Interrupt/Bulk Out 64 No
2 5 Interrupt/Bulk In 64 No
3 6 Interrupt/Bulk Out 64 Yes
3 7 Interrupt/Bulk In 64 Yes
4 8 Isochronous Out 512 Yes
4 9 Isochronous In 512 Yes

Проблема в том что 4ая endpoint Isochronous и её никуда не подсунишь. А влезть как то нужно. КАК?

Увидел что вроди как CDC можно и через Isochronous делать. Пока ковыряю в эту сторону


Сообщение отредактировал pil - Jul 19 2011, 15:41
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Konst_777
сообщение Jul 19 2011, 16:36
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 549
Регистрация: 1-06-05
Пользователь №: 5 644



Цитата(pil @ Jul 19 2011, 15:50) *
...
Virt COM 3: 1 in interrupt + 1 in bulk + 1 out bulk
...

Попробуйте для Virt COM 3 использовать 1 in bulk + 1 out bulk. Переходник USB2.0 - RS232 (COM) VE024 имеет именно такую конфигурацию эндпоинтов. И работает.
Go to the top of the page
 
+Quote Post
pil
сообщение Jul 19 2011, 16:44
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 33
Регистрация: 15-11-08
Пользователь №: 41 658



Цитата(Konst_777 @ Jul 19 2011, 20:36) *
Попробуйте для Virt COM 3 использовать 1 in bulk + 1 out bulk. Переходник USB2.0 - RS232 (COM) VE024 имеет именно такую конфигурацию эндпоинтов. И работает.


а можно дескриптор?

Цитата
HID устройства могут не иметь EP кроме 0-й. Я так делал, всё отлично работает. Но я использовал только запросы GET/SET Feature. Но интеррупт канал, по идее, должен работать через EP0. Для этого всё предусмотрено. Там просто будет запрос от интерфейса с соотв-м номером. Просто нужно на него ответить и всё.
Проверить легко - не описывать HID-овские EP и посмотреть запросы сниффером.

Пока запасной вариант, попробую.

Сообщение отредактировал pil - Jul 19 2011, 16:46
Go to the top of the page
 
+Quote Post
Konst_777
сообщение Jul 19 2011, 17:34
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 549
Регистрация: 1-06-05
Пользователь №: 5 644



Цитата(pil @ Jul 19 2011, 19:44) *
а можно дескриптор?

Вот что выдает UVCView.x86.exe
Код
           ---===>Device Information<===---
English product name: "usb serial conveter"

ConnectionStatus:                  
Current Config Value:              0x01  -> Device Bus Speed: Full
Device Address:                    0x01
Open Pipes:                           2

           ===>Endpoint Descriptor<===
bLength:                           0x07
bDescriptorType:                   0x05
bEndpointAddress:                  0x81  -> Direction: IN - EndpointID: 1
bmAttributes:                      0x02  -> Bulk Transfer Type
wMaxPacketSize:                  0x0040 = 0x40 bytes
bInterval:                         0x00

           ===>Endpoint Descriptor<===
bLength:                           0x07
bDescriptorType:                   0x05
bEndpointAddress:                  0x02  -> Direction: OUT - EndpointID: 2
bmAttributes:                      0x02  -> Bulk Transfer Type
wMaxPacketSize:                  0x0040 = 0x40 bytes
bInterval:                         0x00

           ===>Device Descriptor<===
bLength:                           0x12
bDescriptorType:                   0x01
bcdUSB:                          0x0200
bDeviceClass:                      0x00  -> This is an Interface Class Defined Device
bDeviceSubClass:                   0x00
bDeviceProtocol:                   0x00
bMaxPacketSize0:                   0x08 = (8) Bytes
idVendor:                        0x0403 = Future Technology Devices International Limited
idProduct:                       0x6001
bcdDevice:                       0x0400
iManufacturer:                     0x01
      English (United States)  "ftdi"
iProduct:                          0x02
      English (United States)  "usb serial conveter"
iSerialNumber:                     0x03
      English (United States)  "ftQPMA5P"
bNumConfigurations:                0x01

           ===>Configuration Descriptor<===
bLength:                           0x09
bDescriptorType:                   0x02
wTotalLength:                    0x0020  -> Validated
bNumInterfaces:                    0x01
bConfigurationValue:               0x01
iConfiguration:                    0x00
bmAttributes:                      0xA0  -> Bus Powered
MaxPower:                          0x16 =  44 mA

           ===>Interface Descriptor<===
bLength:                           0x09
bDescriptorType:                   0x04
bInterfaceNumber:                  0x00
bAlternateSetting:                 0x00
bNumEndpoints:                     0x02
bInterfaceClass:                   0xFF  -> Vendor Specific Device
bInterfaceSubClass:                0xFF
*!*CAUTION:    This appears to be an invalid bInterfaceSubClass
bInterfaceProtocol:                0xFF
*!*WARNING:  must be set to PC_PROTOCOL_UNDEFINED 0 for this class
iInterface:                        0x02
      English (United States)  "usb serial conveter"
*!*ERROR:  0xFF is the prerelease USB Video Class ID

           ===>Endpoint Descriptor<===
bLength:                           0x07
bDescriptorType:                   0x05
bEndpointAddress:                  0x81  -> Direction: IN - EndpointID: 1
bmAttributes:                      0x02  -> Bulk Transfer Type
wMaxPacketSize:                  0x0040 = 0x40 bytes
bInterval:                         0x00

           ===>Endpoint Descriptor<===
bLength:                           0x07
bDescriptorType:                   0x05
bEndpointAddress:                  0x02  -> Direction: OUT - EndpointID: 2
bmAttributes:                      0x02  -> Bulk Transfer Type
wMaxPacketSize:                  0x0040 = 0x40 bytes
bInterval:                         0x00
Go to the top of the page
 
+Quote Post
galjoen
сообщение Jul 19 2011, 18:31
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640



Цитата(Konst_777 @ Jul 19 2011, 21:34) *
idVendor: 0x0403 = Future Technology Devices International Limited
idProduct: 0x6001

Так это значит драйвер по VID/PID установится. Там что угодно может быть.
Кстати, а ведь насколько я помню, класс CDC должен быть в дескрипторе устройства прописан. Из дескриптора интерфейса драйвер не установится. Т.е. составного устройства, включающего в себя CDC, быть не может. Т.е. может, конечно, но только со своим драйвером, а значит покупка VID.

Цитата(sergeeff @ Jul 19 2011, 22:24) *
Можно хоть все интерфейсы на одни и те же конечные точки посадить. Но... Если захотите одновременно пользоваться этими интерфейсами (читай, разными драйверами), будут проблемы. Как и в устройстве. Вы не сможете различить кто вам информацию посылал.

То, что идёт через EP0 можно отличить. Там в запросе N интерфейса присутствует.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Jul 19 2011, 18:52
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(galjoen @ Jul 19 2011, 21:31) *
Кстати, а ведь насколько я помню, класс CDC должен быть в дескрипторе устройства прописан. Из дескриптора интерфейса драйвер не установится. Т.е. составного устройства, включающего в себя CDC, быть не может. Т.е. может, конечно, но только со своим драйвером, а значит покупка VID.


Все там ставится. Прописываете в *.inf к какому интерфесу относится драйвер и все путем.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 26th June 2025 - 22:15
Рейтинг@Mail.ru


Страница сгенерированна за 0.01447 секунд с 7
ELECTRONIX ©2004-2016