Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ARM7TDi & USB
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Интерфейсы
smi-pp
Помогите советом.
Есть USB устройство класса CDC, которое управляется от PC как Virtual COM Port, нужно управлять им от контроллера AT91SAM7X256. Протокол простой. Пакет отпровил, ответ принял, как я понимаю через 2 и 3 endpoint.
1. Можно ли запрограммировать данный контроллер для этих целей, или нужен другой с функциями HOST USB.
2.Что нужно знать, чтобы его грамотно запрограмировать.
3.Если можно то дайте ссылки на примеры.
aaarrr
1. Нельзя, нужен контроллер с host-портом (например, LPC23xx/24xx).
2. В идеале - знать спецификацию USB и CDC.
3. У NXP есть ну очень простой пример для работы с USB-флеш. Можно взять его за основу.
smi-pp
Цитата(aaarrr @ Mar 4 2009, 15:48) *
1. Нельзя, нужен контроллер с host-портом (например, LPC23xx/24xx).
2. В идеале - знать спецификацию USB и CDC.
3. У NXP есть ну очень простой пример для работы с USB-флеш. Можно взять его за основу.

Контроллер с host-портом - это обязательно? Мне не нужно реализовывать все его функции. Мне нужно назначить устройству адрес, и далее через 2 и 3 точку обмениваться данными, или я не прав? (пока только начал разбираться)
aaarrr
Цитата(smi-pp @ Mar 4 2009, 16:15) *
Контроллер с host-портом - это обязательно?

Обязательно. Хост и устройство - принципиально различные вещи.
smi-pp
Цитата(aaarrr @ Mar 4 2009, 16:32) *
Обязательно. Хост и устройство - принципиально различные вещи.

А в кратце, что нельзя принципиально сделать? Пока про HOST не читал.
Я можно ли USB завести на како-нибудь FTDI конвертор и работать через UART?
aaarrr
Цитата(smi-pp @ Mar 4 2009, 16:48) *
А в кратце, что нельзя принципиально сделать? Пока про HOST не читал.

Вкратце уже написал выше.

Цитата(smi-pp @ Mar 4 2009, 16:48) *
Я можно ли USB завести на како-нибудь FTDI конвертор и работать через UART?

Если у них есть конвертеры, с которыми дружит Ваше устройство, то почему бы и нет.
smi-pp
Поставлю вопрос по другому.
Куплено устройство (не дешёвое) с единственным USB можно ли его как нибудь подключить к контроллеру без USB Hosta?
Какие ещё есть контроллеры с USB HOST кроме LPC?

Цитата(aaarrr @ Mar 4 2009, 17:12) *
Если у них есть конвертеры, с которыми дружит Ваше устройство, то почему бы и нет.

А как это устройство должно дружить с FTDI чипами?
aaarrr
Цитата(smi-pp @ Mar 4 2009, 21:14) *
Куплено устройство (не дешёвое) с единственным USB можно ли его как нибудь подключить к контроллеру без USB Hosta?

У FTDI есть продукт под названием Vinculum. Это маленький контроллер с USB-хостом и UART/SPI для связи с внешним миром. Есть поддерживающие CDC.

Цитата(smi-pp @ Mar 4 2009, 21:14) *
Какие ещё есть контроллеры с USB HOST кроме LPC?

Их много и разных, в том числе и у Атмела.
smi-pp
Цитата(aaarrr @ Mar 4 2009, 21:18) *
У FTDI есть продукт под названием Vinculum. Это маленький контроллер с USB-хостом и UART/SPI для связи с внешним миром. Есть поддерживающие CDC.

Спасибо за Vinculum. Буду смотреть.
Des V. Maryin
Vinculum IMHO не особо рассчитан на работу с CDC. Вот [видимо] под флешки -- да, а CDC под него приходится писать руками, в случае если дескрипторы Вашего устройства в точности не совпадают с приведенными в документации от FTDI. Протокол общения КРАЙНЕ неудобный. Цена одного кристалла на уровне мелкого арма с USB хостом. И, еще такая мелочь, у меня не вышло опрашивать interrupt endpoint. Вообще. Не то что с заданной периодичностью ( с чем кстати тоже проблемы, так как временные интервалы опроса Interrupt EP обычно маленькие, а UART штука медленная, да плюс еще чудо-протокол от Vinculum ), а вообще что-либо получить от него не удается. В общем о Vinculum остались тяжелые воспоминания.
smi-pp
Цитата(Des V. Maryin @ Mar 10 2009, 10:22) *
Vinculum IMHO не особо рассчитан на работу с CDC. Вот [видимо] под флешки -- да, а CDC под него приходится писать руками, в случае если дескрипторы Вашего устройства в точности не совпадают с приведенными в документации от FTDI.

Я пока что ещё читаю. Мне не понятно что значит "приходится писать руками", это что написать полностью программу USB hosta и залить свою прошивку в Vinculum. Я этого совсем не хочу.
И 2 вопрос - если можно ссылку на дискрипторы с которыми должно совпадать моё устройство.
Дело в том, что я даже не знаю к какому классу оно относится. Производитель не предлагает программы работы с ним. Общение идет через Hyperterminal посредством простых команд. Как мне определить класс данного устройства. Оно видится в PC как виртуальный КОМ порт, и работает через стандартный драйвер usbser.sys. Может там вообще стоит мост USB-XXXX от FTDI? И к какому классу оно относится в таком варианте?
Кто нибудь работал с VDRIVE2 модулем. Мне представляется следующее: вставляем устройство в порт 2 оно как то определяется, затем переводим в Data Mode и шлём команды (данные) непосредственно в устройство. Поправьте если я не прав.
ar__systems
Цитата(smi-pp @ Mar 11 2009, 02:38) *
Я пока что ещё читаю. Мне не понятно что значит "приходится писать руками", это что написать полностью программу USB hosta и залить свою прошивку в Vinculum. Я этого совсем не хочу.

Вы слышали про программу usbview.exe? Она вам поможет понять, что с ЮСБ ничего по простому не делается. Вам надо не посто всю программу хоста, еще и весь набор драйверов к этому устройству. А чем вы замените "стандартный драйвер usbser.sys"? Если там фтди, то можно портировать кусок линуксового драйвера.... В общем перед вами огромный фронт работы при любом раскладе...
Alechek
Нет, не при любом раскладе. Если чтобы работало абы как - то расклад может уменьшиться. (Взять хотя бы HostLite от NXP)
А если чтобы все работало и было устойчиво к сбоям - то работы действительно туча!
smi-pp
Цитата(ar__systems @ Mar 11 2009, 14:15) *
Вы слышали про программу usbview.exe? Она вам поможет понять, что с ЮСБ ничего по простому не делается. Вам надо не посто всю программу хоста, еще и весь набор драйверов к этому устройству. А чем вы замените "стандартный драйвер usbser.sys"? Если там фтди, то можно портировать кусок линуксового драйвера.... В общем перед вами огромный фронт работы при любом раскладе...

Я спрашивал несколько другие вещи. Я естественно не хочу ничего этого писать, ни программу hosta ни драйверов. Я просто хочу разобраться можно ли использовать для этого Vinculum. Тем более производитель данного устройства такой возможности не даёт, а предлагает готовые прошивки, годные, как он утверждает, на все случаи жизни. Вот из DS - "General Purpose USB peripherals include Printers, Communication Class Devices, Human Interface Devices, FTDI USB Serial Devices, and USB Hubs. USB peripherals can be accessed using command monitor commands to send SETUP, DATA IN and DATA OUT packets."
Вот я и спрашиваю у тех кто имеет опыт работы с Vinculum, возможно ли организовать простой обмен данными с моим устройством, что я о нём знаю, я уже написал. Ведь DATA IN and DATA OUT packets можно посылать...

Цитата(Alechek @ Mar 11 2009, 16:25) *
Нет, не при любом раскладе. Если чтобы работало абы как - то расклад может уменьшиться. (Взять хотя бы HostLite от NXP)
А если чтобы все работало и было устойчиво к сбоям - то работы действительно туча!

Это как я понимаю для контроллеров LP23/24, а я говорю о Vinculum. Ни объемы, ни скорости мне не нужны.
Des V. Maryin
Цитата(smi-pp @ Mar 11 2009, 22:08) *
Я спрашивал несколько другие вещи. Я естественно не хочу ничего этого писать, ни программу hosta ни драйверов. Я просто хочу разобраться можно ли использовать для этого Vinculum. Тем более производитель данного устройства такой возможности не даёт, а предлагает готовые прошивки, годные, как он утверждает, на все случаи жизни.

файл UM_VinculumFirmware_V205.pdf, chapter 9.2.4, CDC device support -- рассказывает какие именно дескрипторы должны быть у Вашего CDC устройства. Посмотреть какие они есть можно с помощью уже рекомендованной тулзы UsbView, есть еще триально-доступный USBLyzer, который эту же информацию показывает в более доступном виде. Вы можете подключить Ваше устройство к PC и посмотреть его дескрипторы. В случае если это FTDI переходник -- у Вас скорее всего не будет проблем с Vinculum, см например пункт 4.2.1 этого же документа. Так как FTDI переходники -- это "родные" для Vinculum устройства.
smi-pp
Цитата(Des V. Maryin @ Mar 12 2009, 22:22) *
файл UM_VinculumFirmware_V205.pdf, chapter 9.2.4, CDC device support -- рассказывает какие именно дескрипторы должны быть у Вашего CDC устройства. Посмотреть какие они есть можно с помощью уже рекомендованной тулзы UsbView, есть еще триально-доступный USBLyzer, который эту же информацию показывает в более доступном виде. Вы можете подключить Ваше устройство к PC и посмотреть его дескрипторы. В случае если это FTDI переходник -- у Вас скорее всего не будет проблем с Vinculum, см например пункт 4.2.1 этого же документа. Так как FTDI переходники -- это "родные" для Vinculum устройства.

Смотрю при помощи UsbView и вижу следующее:

Device Descriptor:
bcdUSB: 0x0200
bDeviceClass: 0x02
bDeviceSubClass: 0x00
bDeviceProtocol: 0x00
bMaxPacketSize0: 0x08 (8)
idVendor: 0x04D8 (Micro Chip Technology, Inc.)
idProduct: 0xBE01
bcdDevice: 0x0000
iManufacturer: 0x01
iProduct: 0x02
iSerialNumber: 0x00
bNumConfigurations: 0x01

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

Endpoint Descriptor:
bEndpointAddress: 0x82
Transfer Type: Interrupt
wMaxPacketSize: 0x0008 (8)
bInterval: 0x02

Endpoint Descriptor:
bEndpointAddress: 0x00
Transfer Type: Control
wMaxPacketSize: 0x0507 (1287)
wInterval: 0x0203
bSyncAddress: 0x40

Endpoint Descriptor:
bEndpointAddress: 0x00
Transfer Type: Control
wMaxPacketSize: 0x0000 (0)
wInterval: 0x0000
bSyncAddress: 0x07

Возникает вопрос. Почему я вижу отдельно Endpoint Descriptor (без Config Descriptor) и почему я вижу Endpoint Descriptor для Default Control Pipe, ведь в специф. сказано: "A configuration and its interface(s) do not include an endpoint descriptor for the Default Control Pipe"

Далее после включения опции Config Description в программе.

Device Descriptor:
bcdUSB: 0x0200
bDeviceClass: 0x02
bDeviceSubClass: 0x00
bDeviceProtocol: 0x00
bMaxPacketSize0: 0x08 (8)
idVendor: 0x04D8 (Micro Chip Technology, Inc.)
idProduct: 0xBE01
bcdDevice: 0x0000
iManufacturer: 0x01
0x0409: "Birger Engineering, Inc.

То есть в этом месте всё обрезается по причине некорректного строкового дискриптора производителя???
Получается что я имею CDC устройство, но bDeviceSubClassу и bDeviceProtocol узнать не могу... Чтобы еще пробовать?
smi-pp
Вопрос снят, устройство определено и подходит под CDC класс с которым Vinculum должен работать . Это был глюк UsbView. UsbLyzer всё корректно отобразил. Всем спасибо...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.