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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Эмуляция COM через USB
sergeeff
сообщение Jan 22 2006, 11:42
Сообщение #1


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

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



Господа!

Нет ли у кого примеров (если это вообще возможно) реализации в USB CDC устройстве эмуляции сигналов RTS/CTS и DSR/DCS?

Заранее благодарю
Go to the top of the page
 
+Quote Post
san822
сообщение Mar 1 2006, 10:52
Сообщение #2


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

Группа: Свой
Сообщений: 1 195
Регистрация: 26-07-05
Из: Санкт-Петербург
Пользователь №: 7 111



Я сам пока не сталкивался с такой задачей, но знаю, что
на сегодняшний день для организации виртуального COM-порта через USB в России популярны ИМС фирмы FTDI - FT232BM,
FT245BM и др.
Сайт производителя www.ftdichip.com
Сайт официального поставщика www.efo.ru
Go to the top of the page
 
+Quote Post
BVU
сообщение Mar 1 2006, 12:01
Сообщение #3


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

Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264



По большому счету это работа специально написанного драйвера (WDM), который делает преобразование USB протокола в аналог работы COM порта - отсюда и его 'виртуальность'.


--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
Go to the top of the page
 
+Quote Post
san822
сообщение Mar 2 2006, 08:50
Сообщение #4


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

Группа: Свой
Сообщений: 1 195
Регистрация: 26-07-05
Из: Санкт-Петербург
Пользователь №: 7 111



Есть ещё вариант - мост USB - UART CP2101.
Судя по документации сигналы RTS/CTS и DSR/DCS поддерживаются.
В Питере официальный поставщик Электроснаб - www.electrosnab.ru
Go to the top of the page
 
+Quote Post
rezident
сообщение Mar 2 2006, 10:41
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



CP2101 не рекомендована производителем для новых разработок. Вместо нее выпускается pin-to-pin compatible CP2102. Есть еще CP2103 с 4-ми доп. GPIO, три из которых могут выполнять автоматически функции управления TX_LED, RX_LED и сигнала DE для драйвера RS485.
см. раздел USB to UART Bridge на сайте SiLabs.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Mar 3 2006, 10:54
Сообщение #6


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

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



Насчет применения специализированных USB контроллеров – дело понятное. Тем более, если сам пишешь драйвер, то можно там что хочешь придумать и реализовать.

Наверное я не очень внятно сначала сформулировал свой вопрос. Хотелось на стандартном USB контроллере (мы сейчас используем PDIUSBD12) реализовать CDC устройство и работать с ним через стандартный usbcomm.sys драйвер из Windows’a. Изучение запросов, которые должено обрабатывать CDC устройство, показало, что там таковые (на установку и сброс сигналов DTR и пр.) отсутствуют. Так что похоже это вариант не проходит.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 4 2006, 16:19
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(sergeeff @ Mar 3 2006, 13:54) *
Хотелось на стандартном USB контроллере (мы сейчас используем PDIUSBD12) реализовать CDC устройство и работать с ним через стандартный usbcomm.sys драйвер из Windows’a. Изучение запросов, которые должено обрабатывать CDC устройство, показало, что там таковые (на установку и сброс сигналов DTR и пр.) отсутствуют. Так что похоже это вариант не проходит.


Я делал CDC устройство на связке ATMega16L + PDIUSBD12. CDC класс поддерживает сигнализацию
DTR/DSR, RTS, DCD, RI и Break (т.е. все, кроме CTS). Если есть заинтересованность, могу
рассказать подробнее.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Mar 4 2006, 17:07
Сообщение #8


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

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



Очень даже интересно. Можно на e-mail : nik_ef@mail.ru

Заранее благодарю
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 4 2006, 17:52
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Ушло почтой.
Go to the top of the page
 
+Quote Post
alekseykoj
сообщение Mar 17 2006, 08:53
Сообщение #10


Участник
*

Группа: Свой
Сообщений: 60
Регистрация: 8-11-05
Пользователь №: 10 602



Используешь так же как и на обычном порте. Только вот проблемы со скоростью возникают медленно это все(((
Go to the top of the page
 
+Quote Post
prottoss
сообщение Jan 9 2007, 09:20
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(aaarrr @ Mar 4 2006, 20:19) *
Я делал CDC устройство на связке ATMega16L + PDIUSBD12. CDC класс поддерживает сигнализацию
DTR/DSR, RTS, DCD, RI и Break (т.е. все, кроме CTS). Если есть заинтересованность, могу
рассказать подробнее.

Занялся тоже данной связкой. Собрал, подкорректировал Филиповские исходники - мое устройство видится ОСью, все в порядке. Но

ни как не могу открыть мой порт ни одной программой. Вот так его видит USBView:
Код
Device Descriptor:
bcdUSB:             0x0110
bDeviceClass:         0x02
bDeviceSubClass:      0x00
bDeviceProtocol:      0x00
bMaxPacketSize0:      0x10 (16)
idVendor:           0x5555
idProduct:          0x7777
bcdDevice:          0x0001
iManufacturer:        0x01
0x0409: "PROTTOSS"
iProduct:             0x02
0x0409: "PDIUSBD12 test USB device"
iSerialNumber:        0x00
bNumConfigurations:   0x01

ConnectionStatus: DeviceConnected
Current Config Value: 0x01
Device Bus Speed:     Full
Device Address:       0x01
Open Pipes:              3

Endpoint Descriptor:
bEndpointAddress:     0x81  IN
Transfer Type:   Interrupt
wMaxPacketSize:     0x0010 (16)
bInterval:            0x64

Endpoint Descriptor:
bEndpointAddress:     0x02  OUT
Transfer Type:        Bulk
wMaxPacketSize:     0x0010 (16)
bInterval:            0x00

Endpoint Descriptor:
bEndpointAddress:     0x82  IN
Transfer Type:        Bulk
wMaxPacketSize:     0x0010 (16)
bInterval:            0x00

Configuration Descriptor:
wTotalLength:       0x0043
bNumInterfaces:       0x02
bConfigurationValue:  0x01
iConfiguration:       0x00
bmAttributes:         0x80 (Bus Powered )
MaxPower:             0x32 (100 Ma)

Interface Descriptor:
bInterfaceNumber:     0x00
bAlternateSetting:    0x00
bNumEndpoints:        0x01
bInterfaceClass:      0x02
bInterfaceSubClass:   0x02
bInterfaceProtocol:   0x01
iInterface:           0x00

Unknown Descriptor:
bDescriptorType:      0x24
bLength:              0x05
05 24 00 10 01

Unknown Descriptor:
bDescriptorType:      0x24
bLength:              0x04
04 24 02 02

Unknown Descriptor:
bDescriptorType:      0x24
bLength:              0x05
05 24 06 00 01

Unknown Descriptor:
bDescriptorType:      0x24
bLength:              0x05
05 24 01 03 01

Endpoint Descriptor:
bEndpointAddress:     0x81  IN
Transfer Type:   Interrupt
wMaxPacketSize:     0x0010 (16)
bInterval:            0x64

Interface Descriptor:
bInterfaceNumber:     0x01
bAlternateSetting:    0x00
bNumEndpoints:        0x02
bInterfaceClass:      0x0A
bInterfaceSubClass:   0x00
bInterfaceProtocol:   0x00
iInterface:           0x00

Endpoint Descriptor:
bEndpointAddress:     0x02  OUT
Transfer Type:        Bulk
wMaxPacketSize:     0x0010 (16)
bInterval:            0x00

Endpoint Descriptor:
bEndpointAddress:     0x82  IN
Transfer Type:        Bulk
wMaxPacketSize:     0x0010 (16)
bInterval:            0x00

Да еще... После энумерации приходит два запроса специфичных для класса: GET_ENCAPSULATED_RESPONSE и SET_COMM_FEATURE. Но я так понимаю их можно игнорировать, что я и делаю...


--------------------
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Jan 9 2007, 09:31
Сообщение #12


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

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



На сайте Atmel есть новый проект - AT91 USB Framework - Core 1.01 + CDC 1.0.zip.

Сам в нем пока не разбирался - полно другой работы. Погляди как там реализовано.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Jan 10 2007, 10:06
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Все разобрался.... smile.gif



Для начала: я не правильно декодировал запросы, было не

GET_ENCAPSULATED_RESPONSE и SET_COMM_FEATURE,



а было

GET_LINE_CODING и SET_CONTROL_LINE_STATE



А я их не отрабатывал... Как обычно дело было не в бобине...


--------------------
Go to the top of the page
 
+Quote Post
prottoss
сообщение Jan 23 2007, 20:46
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Чтоб не поднимать новую тему продолжу здесь ибо все равно она касается заголовка темы:
решил я пойти дальше, а именно сделать два девайса в одном, то бишь два моста USB - RS232...
Составил дескрипторы как положено - ОС определила составное устройство - далее потребовало дрова для устройств в него входящих, подсунул ей свой инф где прописанны оба интерфейса - взяла - установила дрова, но вот для второго устройста пожаловалось, что:
"Запуск этого устройства невозможен. (Код 10)" sad.gif ...

Кроме того, после инсталяции в setupapi.log появилась запись для второго интерфейса вида:
"Устройство не запущено: обнаружена проблема: 0x0a: CM_PROB_FAILED_START".

Может быть кто знает, куда копать. Неохота самому писать собственный драйвер smile.gif
Спасибо


--------------------
Go to the top of the page
 
+Quote Post
rezident
сообщение Jan 23 2007, 21:41
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(prottoss @ Jan 23 2007, 22:46) *
Кроме того, после инсталяции в setupapi.log появилась запись для второго интерфейса вида:
"Устройство не запущено: обнаружена проблема: 0x0a: CM_PROB_FAILED_START".

Может быть кто знает, куда копать. Неохота самому писать собственный драйвер smile.gif
Спасибо

Недавно где-то здесь же на форуме промелькнула информация о схожей проблеме и о том, сколько реально нужно endpoints для реализации двух CDC в одном устройстве. Поищите.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 20th July 2025 - 17:59
Рейтинг@Mail.ru


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