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

 
 
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
prottoss
сообщение Jan 23 2007, 22:00
Сообщение #16


Гуру
******

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



Цитата(rezident @ Jan 24 2007, 01:41) *
Цитата(prottoss @ Jan 23 2007, 22:46) *

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

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

Недавно где-то здесь же на форуме промелькнула информация о схожей проблеме и о том, сколько реально нужно endpoints для реализации двух CDC в одном устройстве. Поищите.
Да этоя и создавал тему в форуме AVR про PDIUSBD12 + ATmega16... Дело то вот в чем: У PDIUSBD12 шесть ендпоинтов - одна пара используется под Control IN/OUT endpoint и остаются еще две пары ендпоинтов. НО, так как в USB CDC ACM классе необходимо иметь три точки, то, как бы не реально сделать два устройства на данной связке. С помощью гугль и такой то матери обнаружил, что все таки можно не портить одну пару ендпоинтов, так как одна точка как бы не действительная, то бишь она нужна только для стандарта, а реально не используется. Подправил я дескрипторы, сдела пару одну на реальные точки, а одну сделал с нереальным номером - РАБОТАЕТ!!!. Попробовал под 98, 2000, МЕ, XP - все замечательно. Добавляю второй интерфейс - все ставится, видится НО второй девайс ни в какую - код ошибки 10 и в 2000 и в XP. 98 и МЕ смысла мучить пока не вижу, так как предполагаю, что там вообще после таких выкрутастов BSOD будет smile.gif . Счас перепахиваю MSDN...безрезультатно...Но ИМХО, что то я не совсе мправильно либо с дескрипторами делаю, либо в INF что то не дописываю sad.gif


--------------------
Go to the top of the page
 
+Quote Post
mtx
сообщение Jan 28 2007, 19:05
Сообщение #17





Группа: Новичок
Сообщений: 5
Регистрация: 19-07-06
Пользователь №: 18 930



Может быть кто знает, куда копать. Неохота самому писать собственный драйвер :)
Спасибо
[/quote]
Счас перепахиваю MSDN...безрезультатно...Но ИМХО, что то я не совсе мправильно либо с дескрипторами делаю, либо в INF что то не дописываю :(
[/quote]

Если не секрет, можно на дескртиптор взглянуть и на inf за одно?
Go to the top of the page
 
+Quote Post
prottoss
сообщение Jan 28 2007, 19:36
Сообщение #18


Гуру
******

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



Код
/**************************************************************************
Device Descriptor
**************************************************************************/
PROGMEM USB_DEVICE_DESCRIPTOR USB_DeviceDescriptor =
{
sizeof(USB_DEVICE_DESCRIPTOR), /* length of descriptor in bytes */
    USB_DEVICE_DESCRIPTOR_TYPE, /* descriptor type */
    0x0110,  /* USB version supported */
    0,//USB_CFG_DEVICE_CLASS, /* device class */
    0,//USB_CFG_DEVICE_SUBCLASS, /* device subclass */
    0,//USB_CFG_DEVICE_PROTOCOL, /* device protocol */
    D12_EP0_PACKET_SIZE, /* max packet size for control endpoint */
    USB_CFG_VENDOR_ID,  /* vendor ID (VID) */
    USB_CFG_DEVICE_ID,  /* device ID (PID) */
    USB_CFG_DEVICE_VERSION, /* version */
    USB_CFG_VENDOR_STRING_INDEX,  /* manufacturer string index */
    USB_CFG_DEVICE_STRING_INDEX,  /* product string index */
USB_CFG_SERIAL_STRING_INDEX, /* serial number string index */
1, /* number of configurations */
};

/**************************************************************************
CDC Config Descriptors Packet for Communication Port Emulation
**************************************************************************/
PROGMEM USB_CONFIG_DESCRIPTOR_PACKET USB_ConfigDescriptorPacket =
{

/**************************************************************************
Configuration Descriptor
**************************************************************************/
{
    sizeof(USB_CONFIGURATION_DESCRIPTOR), /* length of descriptor in bytes */
    USB_CONFIGURATION_DESCRIPTOR_TYPE,    /* descriptor type */
    sizeof(USB_CONFIG_DESCRIPTOR_PACKET), /* total packet length */
    2,          /* number of interfaces in this configuration */
    1,          /* index of this configuration */
    0,          /* configuration name string index */
USB_CONFIG_SELF_POWERED,
    USB_CFG_MAX_BUS_POWER / 2,
},

/**************************************************************************
ACM Interface Descriptor 0
**************************************************************************/
{
   sizeof(USB_INTERFACE_DESCRIPTOR), /* length of descriptor in bytes */
    USB_INTERFACE_DESCRIPTOR_TYPE, /* descriptor type */
    0,          /* index of this interface */
    0,          /* alternate setting for this interface */
    3,     /* 1 - control? 2 - data */
    USB_CFG_INTERFACE_CLASS, /* USB_DEVICE_CLASS_COMMUNICATIONS */
    USB_CFG_INTERFACE_SUBCLASS, /* USB_CDC_SUBCLASS_ACM */
    USB_CFG_INTERFACE_PROTOCOL, /* 0 */
    0,
},

/**************************************************************************
CDC Header Functional Descriptor
**************************************************************************/
{
   sizeof(USB_CDC_HEADER_FUNCTIONAL_DESCRIPTOR),
    0x24, /* descriptor type */
    0,  /* header functional descriptor */
    0x0110, /* USB version */
},

/**************************************************************************
CDC Abstract Control Management Functional Descriptor
**************************************************************************/
{
   sizeof(USB_CDC_ABSTRACT_CONTROL_MANAGEMENT_FUNCTIONAL_DESCRIPTOR),
    0x24, /* descriptor type */
    2,  /* abstract control management functional descriptor */
    0x02,   /* SET_LINE_CODING,    GET_LINE_CODING, SET_CONTROL_LINE_STATE */
},

/**************************************************************************
In Endpoint #3 Descriptor (Control in) not real!!!
**************************************************************************/
{
   sizeof(USB_ENDPOINT_DESCRIPTOR),
    USB_ENDPOINT_DESCRIPTOR_TYPE,
    0x83, /* In endpoint number 3 */
    0x03, /* attrib: Interrupt endpoint */
    D12_EP1_PACKET_SIZE,  /* maximum packet size */
    10, /* in ms */
},

/**************************************************************************
Out Endpoint #1 Descriptor (Data out)
**************************************************************************/
{
   sizeof(USB_ENDPOINT_DESCRIPTOR),
    USB_ENDPOINT_DESCRIPTOR_TYPE,
    0x01,        /* OUT endpoint number 1 */
    0x02,        /* attrib: Bulk endpoint */
    D12_EP1_PACKET_SIZE,      /* maximum packet size */
    0,         /* in ms */
},

/**************************************************************************
In Endpoint #1 Descriptor (Data in)
**************************************************************************/
{
   sizeof(USB_ENDPOINT_DESCRIPTOR),
    USB_ENDPOINT_DESCRIPTOR_TYPE,
    0x81,        /* IN endpoint number 1 */
    0x02,        /* attrib: Bulk endpoint */
    D12_EP1_PACKET_SIZE,      /* maximum packet size */
    0,         /* in ms */
},

/**************************************************************************
ACM Interface Descriptor 1
**************************************************************************/
{
   sizeof(USB_INTERFACE_DESCRIPTOR), /* length of descriptor in bytes */
    USB_INTERFACE_DESCRIPTOR_TYPE, /* descriptor type */
    1,          /* index of this interface */
    0,          /* alternate setting for this interface */
    3,     /* 1 - control? 2 - data */
    USB_CFG_INTERFACE_CLASS, /* USB_DEVICE_CLASS_COMMUNICATIONS */
    USB_CFG_INTERFACE_SUBCLASS, /* USB_CDC_SUBCLASS_ACM */
    USB_CFG_INTERFACE_PROTOCOL, /* 0 */
    0,
},

/**************************************************************************
CDC Header Functional Descriptor
**************************************************************************/
{
   sizeof(USB_CDC_HEADER_FUNCTIONAL_DESCRIPTOR),
    0x24, /* descriptor type */
    0,  /* header functional descriptor */
    0x0110, /* USB version */
},

/**************************************************************************
CDC Abstract Control Management Functional Descriptor
**************************************************************************/
{
   sizeof(USB_CDC_ABSTRACT_CONTROL_MANAGEMENT_FUNCTIONAL_DESCRIPTOR),
    0x24, /* descriptor type */
    2,  /* abstract control management functional descriptor */
    0x02,   /* SET_LINE_CODING,    GET_LINE_CODING, SET_CONTROL_LINE_STATE */
},

/**************************************************************************
In Endpoint #4 Descriptor (Control in) not real !!!
**************************************************************************/
{
   sizeof(USB_ENDPOINT_DESCRIPTOR),
    USB_ENDPOINT_DESCRIPTOR_TYPE,
    0x84, /* In endpoint number 4 */
    0x03, /* attrib: Interrupt endpoint */
    D12_EP1_PACKET_SIZE,  /* maximum packet size */
    10, /* in ms */
},

/**************************************************************************
Out Endpoint #2 Descriptor (Data out)
**************************************************************************/
{
   sizeof(USB_ENDPOINT_DESCRIPTOR),
    USB_ENDPOINT_DESCRIPTOR_TYPE,
    0x02,        /* OUT endpoint number 2 */
    0x02,        /* attrib: Bulk endpoint */
    D12_EP2_PACKET_SIZE,      /* maximum packet size */
    0,         /* in ms */
},

/**************************************************************************
In Endpoint #2 Descriptor (Data in)
**************************************************************************/
{
   sizeof(USB_ENDPOINT_DESCRIPTOR),
    USB_ENDPOINT_DESCRIPTOR_TYPE,
    0x82,        /* IN endpoint number 2 */
    0x02,        /* attrib: Bulk endpoint */
    D12_EP2_PACKET_SIZE,      /* maximum packet size */
    0,         /* in ms */
},

}; /* enf of config descriptor packet */


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


Гуру
******

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



забыл про инф smile.gif

Код
;*****************************************************************************

;*****************************************************************************

[Version]
signature="$WINDOWS NT$"
Class=Ports
ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318}

Provider=%Provider%
DriverVer=03/07/2006, 4.38.4.127
LayoutFile= Layout.inf

[ControlFlags]
ExcludeFromSelect = *

;-----------------------------------------------------------------------------
; Specify target paths...
;-----------------------------------------------------------------------------

[DestinationDirs]
DefaultDestDir = 12                   ; system32\drivers
CopyFiles = 12                        ; system32\drivers

;-----------------------------------------------------------------------------
; Table of Contents
;-----------------------------------------------------------------------------
[Manufacturer]
%PROTTOSS%=PROTTOSS

;-----------------------------------------------------------------------------
; Device-by-device entries
;-----------------------------------------------------------------------------
[PROTTOSS]
%PROTTOSS.Comm.Desc1% = PROTTOSS.Install, USB\VID_16C0&PID_0996&REV_0001&MI_00
%PROTTOSS.Comm.Desc2% = PROTTOSS.Install, USB\VID_16C0&PID_0996&REV_0001&MI_01

;-----------------------------------------------------------------------------
; Installation instructions
;-----------------------------------------------------------------------------

[PROTTOSS.Install.nt]
Include=usb.inf
Needs=Composite.Dev.NT
AddReg  = PROTTOSS.AddReg,PROTTOSS.NT.AddReg
CopyFiles = CopyFiles

[PROTTOSS.Install.nt.HW]
AddReg=PROTTOSS.Install.nt.HW.AddReg

[PROTTOSS.Install.nt.HW.AddReg]
HKR,,"UpperFilters",0x00010000,"serenum"

;-----------------------------------------------------------------------------
;  Registry
;-----------------------------------------------------------------------------

; common registry entries
[PROTTOSS.AddReg]
HKR,,NTMPDriver,,usbser.sys
HKR,,EnableSurpriseRemovalHeuristics, 0x10001, 0x02, 0x00, 0x00, 0x00
HKR,,RateLimitPurgeMS, 0x10001, 0x64, 0x00, 0x00, 0x00
HKR,,OverrideDefaultPortSettings, 0x10001, 01,00,00,00
HKR,,InitialBaudRate, 0x10001, 00,C2,01,00                     ;115200 initial baud rate
HKR,,InitialLineControl,, "8N1"                                ;8-bits, No parity, 1 stop bit
HKR,,EnumeratorClass,MaskValue,02,02,00

; only for NT...
[PROTTOSS.NT.AddReg]
HKR,,PortSubClass,1,01
HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider"

;-----------------------------------------------------------------------------
;  Copy lists
;-----------------------------------------------------------------------------
[CopyFiles]
usbser.sys

;-----------------------------------------------------------------------------
;  NT Services installation
;-----------------------------------------------------------------------------

[PROTTOSS.Install.NT.Services]
AddService = usbser, 0x00000002, PROTTOSS.Install.AddService
Include=msports.inf
Needs=SerialEnumerator.NT.Services
AddService = Serenum,,Serenum_Service_Inst

[PROTTOSS.Install.AddService]
DisplayName = %PROTTOSS.Service.Name%
Description = %PROTTOSS.Service.Desc%
ServiceType = 1  ;%SERVICE_KERNEL_DRIVER%
StartType = 3  ;%SERVICE_DEMAND_START%
ErrorControl = 1  ;%SERVICE_ERROR_NORMAL%
ServiceBinary = %12%\usbser.sys
LoadOrderGroup = Base

; -------------- Serenum Driver install section
[Serenum_Service_Inst]
DisplayName    = %SerEnum.SvcDesc%
ServiceType    = 1              ; SERVICE_KERNEL_DRIVER
StartType      = 3              ; SERVICE_DEMAND_START
ErrorControl   = 1              ; SERVICE_ERROR_NORMAL
ServiceBinary  = %12%\serenum.sys
LoadOrderGroup = PNP Filter

;-----------------------------------------------------------------------------
; STRINGS
;-----------------------------------------------------------------------------
[Strings]
Provider = "PROTTOSS"
PROTTOSS = "PROTTOSS"

PROTTOSS.Comm.Desc1 = "PDIUSBD12 USB Serial Port #1"
PROTTOSS.Comm.Desc2 = "PDIUSBD12 USB Serial Port #2"

PROTTOSS.Service.Name = "PDIUSBD12 USB Test Device Drivers"
PROTTOSS.Service.Desc = "PDIUSBD12 USB Test Device Drivers"
SerEnum.SvcDesc="Serenum Filter Driver"


--------------------
Go to the top of the page
 
+Quote Post
mtx
сообщение Jan 28 2007, 20:31
Сообщение #20





Группа: Новичок
Сообщений: 5
Регистрация: 19-07-06
Пользователь №: 18 930



Цитата
/**************************************************************************
Configuration Descriptor
**************************************************************************/
{
sizeof(USB_CONFIGURATION_DESCRIPTOR), /* length of descriptor in bytes */
USB_CONFIGURATION_DESCRIPTOR_TYPE, /* descriptor type */
sizeof(USB_CONFIG_DESCRIPTOR_PACKET), /* total packet length */
2, /* number of interfaces in this configuration */
1, /* index of this configuration */
0, /* configuration name string index */
USB_CONFIG_SELF_POWERED,
USB_CFG_MAX_BUS_POWER / 2,
},


Кажется, количество интерфейсов должно быть 4 (/* number of interfaces in this configuration */)
т.к. при одном мосте их 2, это т.н. сервисный + основной для данных. 2+2.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Jan 28 2007, 20:45
Сообщение #21


Гуру
******

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



Цитата(mtx @ Jan 29 2007, 00:31) *
Кажется, количество интерфейсов должно быть 4 (/* number of interfaces in this configuration */)
т.к. при одном мосте их 2, это т.н. сервисный + основной для данных. 2+2.
Из usbcdc11.pdf я понял так что Data Interface может использоваться опционально. То бишь я его исключил из дескриптора а точки из него добавил в ACM Interface. Кроме того, когда я пробовал с четырьмя интерфейсами, ОС почему то просила установочный инф для всех четырех sad.gif . Но, тем не менее с одним интерфейсом первый девайс работает отлично - я проверял. Данные приходят как положено в балк енпоинты. Дело не в этом...

Кстати, я так делать не сам придумал - а вот по этой ссылочке нашел

http://forum.microchip.com/printable.aspx?m=189607


--------------------
Go to the top of the page
 
+Quote Post
mtx
сообщение Jun 18 2007, 17:15
Сообщение #22





Группа: Новичок
Сообщений: 5
Регистрация: 19-07-06
Пользователь №: 18 930



Возникла похожая задача, 2 СОМа. Удалось ли докопаться?
Go to the top of the page
 
+Quote Post
prottoss
сообщение Jun 18 2007, 17:34
Сообщение #23


Гуру
******

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



Цитата(mtx @ Jun 19 2007, 01:15) *
Возникла похожая задача, 2 СОМа. Удалось ли докопаться?
Нет, не удалось. Похоже без собсвенного драйвера не обойтисьsad.gif


--------------------
Go to the top of the page
 
+Quote Post
arizona
сообщение Jan 16 2008, 11:03
Сообщение #24


Участник
*

Группа: Участник
Сообщений: 39
Регистрация: 1-11-06
Пользователь №: 21 855



Цитата(mtx @ Jun 18 2007, 20:15) *
Возникла похожая задача, 2 СОМа. Удалось ли докопаться?


Нашел пример реализации 2 COM
http://forum.microchip.com/tm.aspx?m=123533&mpage=2

и далее
Multiple USB devices in a single 18f -- using 18F4550 to emulate FDTI2232 dual com port
http://forum.microchip.com/tm.aspx?m=261649

Вчера попробовал с портированной версией на PICkit2. Работает, винда нашла 2 COM потра
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Feb 10 2008, 14:10
Сообщение #25


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

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



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


Здравствуйте. Я вот сейчас делаю то же самое, что и вы (макет на атмега162 уже был, сейчас атмега128). Правда нужны только данные, DTR/DSR и остальное не нужны...
Несколько попыток (на остове апноутов атмеловских) для процов с набортным USB давали поведение типа - вис на инсталляции драйвера в систему (если вытащить усб кабель - заканчивалось нормально).
Другие особенности - нет передачи даннхых (иногда - один пакет проходит и всё) в терминал, запущенный на хосте. Передача данных по виртуальному ком-порту от хоста к устройству идет нормально (как мне кажется).

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

mgs2001@pochtamt.ru

Я начинающий в области usb-программирования. На фото - как выглядит макет (это АЧХ-метр для радиолюбительских целей).

Сообщение отредактировал Genadi Zawidowski - Feb 10 2008, 14:26
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Feb 10 2008, 21:49
Сообщение #26


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

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Отбой.... Нашел у китайских ембеддеров проект, дескриптор из которого решил все мои проблемы.
Проект с исходниками и схемами, если кому надо (переходник USB->RS232, ATMEGA8+PDIUSBD12).

Сообщение отредактировал zltigo - Feb 10 2008, 23:41
Go to the top of the page
 
+Quote Post
peotr
сообщение Mar 4 2008, 13:37
Сообщение #27


Частый гость
**

Группа: Участник
Сообщений: 85
Регистрация: 12-08-05
Пользователь №: 7 587



Прикрепленный файл  FT232rus.doc ( 66.5 килобайт ) Кол-во скачиваний: 1539
Цитата(sergeeff @ Jan 22 2006, 14:42) *
Господа!

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

Заранее благодарю



Обратите внимание на FT2232, а также CP2103, особенно последнее (встроенное EEPROM с драйверами), если не предстоит ручная пайка (корпус неудобный - QFN-28). С FT232 больше мороки.
А также можно подчитать небольшую справку (прилагаю). Схемы подключения в даташитах.
Поделитесь результатами, если будет желание!
Go to the top of the page
 
+Quote Post

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

 


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


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