File-Portal

последовательный порт Com3 скачать драйвер

Рейтинг: 4.1/5.0 (176 проголосовавших)

Категория: Драйверы

Описание

Драйвер виртуального com порта

Драйвер виртуального com порта

Как то при разработке очередного устройства в котором данные от одного устройства к другому передавались по UART, нужно было проверить работоспособность схемы и MEGA-AVR Эмулятор RS232 — Virtual Serial Ports Driver XP 4.0 Как то при разработке очередного устройства в котором данные от одного устройства к другому передавались по UART, нужно было проверить работоспособность схемы и программы. После не очень долгих поисков была найдена программа Virtual Serial Ports Driver XP 4.0 — которая прекрасно справилась с задачей, а именно виртуально соединить два COM-порта. Платформа. Windows Язык интерфейса. только английский Таблэтка. Присутствует Утилита Virtual Serial Ports Driver XP позволяет эмулировать последовательный порт RS232, соединенный виртуальным нуль-модемным кабелем. Другими словами, с VSPD XP Вы можете создать любое количество виртуальных последовательных портов в системе, которые будут соединены друг с другом посредством нуль-модемного кабеля, а физические порты останутся свободными. Зачем нужна эта программа. Вы можете создать два виртуальных последовательных порта: COM5 и COM6 и соединить их. Все, что отправит одно приложение на COM5 будет принято другим приложением на COM6, и все, что отправит второе приложение на COM6 будет принято первым приложением с COM5. Как мы видим на картинке выше сейчас соединены COM3 и COM4. Справа можно создать ещё пару портов, вообще их можно много создать, а также соединить с любым свободным COM-портом. Чтобы удалить «пару», нужно её выбрать и нажать Delete на против корзины. Или можно полностью сбросить все порты — Reset Bus. Если отметить галочку в самом низу то порты будут создаваться при загрузке Windows — лично я этот пункт отключил. В других настройках программа не нуждается! Работает на: Microsoft Windows 95 Microsoft Windows 98 Microsoft Windows ME Microsoft Windows NT4 Microsoft Windows 2000 Microsoft Windows XP Microsoft Windows 7 Скачать Virtual Serial Ports Driver XP 4.0 Скачали 3364 раз Навигация по записям


ВЛАДИМИР
ВЕДУЩИЙ СПЕЦИАЛИСТ
- Не продаётся квартира? Не тратьте время, звоните! т. (905) 867-67-90

По количеству комнат

банки, с которыми мы сотрудничаем

Copyright © 2008- Design by A.Marsov / Агентство недвижимости "СЦН"


Продаётся недорогой коттедж в Яблоневом саду

последовательный порт com3 скачать драйвер:

  • скачать
  • скачать
  • Другие статьи

    VSPD-Virtual Serial Port Driver Драйвер виртуального последовательного порта

    Драйвер виртуального последовательного порта VSPD Драйвер виртуального последовательного порта VSPD (Virtual Serial Port Driver)

    Драйвер устанавливается под Linux или под любую (от Win98 и выше) версию Windows и создает так называемый виртуальный COM-порт.

    Посредством указания TCP/IP адреса в свойствах драйвера задается в какой именно модуль DS100 или EM100 или DS202 или EM200 будет перенаправляться информация, адресованная созданному COM-порту. Единственное, что требуется от программного обеспечения, обслуживающего устройство с интерфейсом RS232, это указать новый COM-порт для связи. Таким образом, существующий для этого устройства софт менять не надо!
    Благодаря применению VSPD, программа и не заметит, что устройство на самом деле поключено не к компьютеру, а к сети.

    Более того, если у Вас есть выделенный глобальный TCP/IP адрес, RS-устройство может быть расположено вообще где угодно - достаточно его подключить к Internet!

    Загрузить по ссылке:

    - Tibbo Device Server Toolkit for Windows tdst_3-66.zip (6,86Mb)
    - Virtual Serial Port Driver for LINUX (VSPDL) vspd-1.12-linux.tar.gz (138Kb)

    Инструкция пользователя Tibbo DS100R (на русском языке) - ds100manual.rar (427Kb)

    СОМ и LPT порты в диспетчере устройств

    СОМ и LPT порты в диспетчере устройств

    Солнце Профи (667), на голосовании 3 года назад

    у меня там только Стандартный последовательны порт по соединению Bluetooth (COM3) и то же самое (COM4),разве там не должны быть и другие, например Последовательный порт (COM1) (хочу увеличить скорость инета, ну попробовать, говорят немного помогает). походу я чего-то не понимаю, у меня его нет из-за того что через вай фай, но я и через кабель пробовала, не появляется, туплю я

    Голосование за лучший ответ

    Валерий Аникин Искусственный Интеллект (122790) 3 года назад

    если портов физически нет, то и в диспетчере их скорее всего не будет. Каким образом наличие com 1 может ускорить интернет?

    Arhy West Kazakhstan Мастер (1441) 3 года назад

    Порты COM1,2,3 и LPT 1,2,3 - это специальные порты для подключения обордования. На ноутах -бывает только ком, других НЕТ. Стандартную работу портов переключают в режимы ЮСБ, блютуз. Вай-фай относится к сетвеым портам подключения. На компах - комплектация разная. COM порты - для подключения интерфейсных устройств (мышки, джойтики, программаторы, спецоборудование). LPT порты - для обмена и передачи потоковой инфо (принтеры, сканеры, в древние времена еще и локальная сеть). Ускорить интернет за счет этих портов - НЕЛЬЗЯ. Они для этого не предназначены.

    Устранение ошибок в Com и LPT портах

    Устранение ошибок в Com и LPT портах. | 16:15:00. 01 Февраля 2005

    Прерывания и адреса

    Передача данных от центрального процессора к любому периферийному устройству и наоборот контролируется заданием запроса на прерывание (IRQ) и адреса ввода-вывода (I/O address). Для внешнего периферийного устройства запрос на прерывание и адрес ввода-вывода приписываются тому порту, через который оно подсоединяется.

    Сами слова "запрос на прерывание" сообщают, что прерывается работа ЦП и ему предписывается заняться данными, поступающими с какого-либо устройства. Всего существует 16 прерываний - от 0 до 15. Все последовательные и параллельные порты, как правило, требуют своего собственного запроса прерывания, за исключением того, что порты СОМ1 и COM3, а также COM2 и COM4 зачастую имеют общий запрос прерывания.

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

    При проблемах с портом проверьте, какие запросы на прерывание и адрес ввода-вывода ему приписаны.

    Панель управления - Система - Устройства - Порты СОМ и LPT

    Если вы увидите перед какой-либо строчкой желтый кружок с восклицательным знаком внутри, то, возможно, найдете причину "помехи". Выделив строчку, нажмите "Свойства - Ресурсы". В поле "Список конфликтующих устройств" найдите, что вызывает конфликт. Если окажется, что это какая-нибудь старая плата, не поддерживающая Plug & Play, то она будет указана в списке как "Неизвестное устройство".

    Чтобы разрешить проблему, измените для одного из устройств-нарушителей запрос на прерывание или адрес ввода-вывода. Если порт находится на системной плате, то используйте для этого программу начальной установки системы System Setup (BIOS).

    Для вхождения в System Setup во время запуска ПК нажмите клавишу "Delete", "F1" или иную - узнайте в документации на систему. Во многих программах начальной установки можно назначать запрос на прерывание и адрес ввода-вывода (установить ресурсы) для каждого конкретного порта, отменив старые.

    Найдите неиспользуемый запрос на прерывание или адрес ввода-вывода.

    Панель управления - Система - Устройства - Компьютер

    Вы увидите полный список применяемых ресурсов. Если неиспользуемых запросов на прерывание нет, то попробуйте отключить с помощью System Setup неиспользуемый порт.

    Система - Устройства - Конфликтующее устройство - Ресурсы

    Выключите функцию "Автоматическая настройка". В окне "Перечень ресурсов" выберите тип ресурса, нажмите кнопку "Изменить" и в поле "Значение" задайте новое (неиспользуемое) значение запроса на прерывание или адрес ввода-вывода.

    Установка параметров паралельных портов

    Параллельные порты обозначаются аббревиатурой LPT. Компьютер автоматически приписывает каждому обнаруженному параллельному порту адреса от LPT1 до LPT3.

    Если вы устанавливаете второй параллельный порт, убедитесь, что он не использует уже имеющийся запрос на прерывание. В некоторых компьютерах LPT1 и LPT2 по умолчанию применяют IRQ7. С помощью Диспетчера устройств установите IRQ5 для LPT2. Если это невозможно, то используйте программу Setup CMOS вашей системы.

    Стандартные установки ресурсов параллельных портов

    Запрос на прерывания

    Установка параметров последовательных портов

    Каждый последовательный порт идентифицируется с помощью одного из восьми возможных СОМ-адресов - СОМ1, COM2 и т. д. каждому из которых соответствуют свой уникальный адрес ввода-вывода и запрос на прерывание.

    Будьте внимательны при установке в ПК устройства, требующего СОМ-порта. Порты СОМ1 и COM2 имеют стандартные адреса ввода-вывода и запросы на прерывание, которые нигде не должны изменяться (обычно могут быть изменены только в программе Setup CMOS вашего ПК). Если для нового устройства требуется назначить порт СОМ1 или COM2, то при загрузке ПК войдите в программу Setup и либо отключите последовательный порт, приписанный к СОМ1 или COM2, либо, если нужно освободить соответствующие установки для добавляемого устройства, измените идентифицирующие его запрос на прерывание и адрес ввода-вывода.

    Заметьте, что все стандартные адреса ввода-вывода используют только третье и четвертое прерывания. Поскольку два устройства не должны использовать один и тот же запрос на прерывание, то постарайтесь для новых внешних устройств приписать портьте COM3 по COM3, вручную устанавливая запросы на прерывание и адреса ввода-вывода с помощью Диспетчера устройств (диалоговое окно "Свойства: Система" ).

    Стандартные установки ресурсов последовательных портов

    Запрос на прерывание

    * Могут быть установлены с помощью Диспетчера устройств Windows 9x (Свойства: Система)

    Оптимизация последовательных портов

    Компьютер имеет один либо два встроенных последовательных порта в виде 9-штырькового разъема, обычно расположенных на задней панели компьютера. С помощью такого порта за единицу времени можно передать лишь 1 бит данных, в то время как посредством параллельного - 8 бит. Скорость работы последовательного порта зависит от универсального асинхронного приемо-передатчика (UART), преобразующего проходящий через шину ПК параллельный поток данных в однобитовый.

    Как правило, современные ПК поставляются с UART модели 16550. В этом случае максимальная пропускная способность составляет 115 кбит/с, что обеспечивает достаточную полосу пропускания для большинства последовательных устройств. Более старые UART моделей 16450 и 8250 с этой задачей уже не справляются. Но иногда производительности UART 16550 может оказаться недостаточно, ведь некоторые аналоговые модемы обрабатывают сжатые данные со скоростью 230 кбит/с, а адаптеры ISDN - до 1 Мбит/с. Так что, если вам требуется большая скорость передачи данных, покупайте плату расширения с UART модели 16750, способной работать со скоростью 921 кбит/с.

    Работа с параллельными портами

    Параллельные порты обычно используются для принтеров, хотя через них могут подключаться к ПК и другие устройства, например сканеры. С их помощью можно передавать данные со скоростью от 40 Кбайт/с до 1 Мбайт/с, а иногда даже с большей.

    В основном все ПК поставляются с одним параллельным портом в виде 25-штырькового разъема на задней панели. Чтобы добавить второй порт, необходимо купить контроллер ввода-вывода и установить его в разъем расширения на системной плате. Параллельный порт бывает четырех типов - однонаправленный, двунаправленный, с улучшенными возможностями (ЕРР-порт) и с расширенными возможностями (ЕСР-порт). Для каждого из них характерны различные скорость и возможности. Порты большинства новых ПК поддерживают все четыре режима, и чтобы узнать, какой из них обеспечивает параллельный порт, посмотрите в программе Setup (CMOS Setup utility) вашего ПК раздел периферийных устройств (Integrated peripherals).

    Однонаправленный порт иногда называется также SPP-портом. Эта базовая конфигурация пропускает данные со скоростью 40-50 Кбайт/с лишь в одном направлении - к принтеру или другому внешнему устройству.

    Двунаправленный порт. Обеспечивает двусторонний обмен данными со скоростью передачи от 100 до 300 Кбайт/с между ПК и внешним устройством. При этом информация о состоянии последнего поступает в компьютер.

    Порт с улучшенными возможностями (ЕРР). Разработан для внешних дисководов и сетевых адаптеров, требующих высокой производительности. Обеспечивает скорость передачи данных от 400 Кбайт/с до 1 Мбайт/с и более.

    При установке в программе System Setup опции ЕРР предлагаются версии 1.7 и 1.9. Практически для всех периферийных устройств, купленных в последние годы, нужно выбирать 1.9.

    Порт с расширенными возможностями (ЕСР). Повышает скорость и расширяет возможности обмена данными между внешним устройством и компьютером. Если принтер и иное периферийное устройство поддерживают ЕСР, то они непосредственно выдают сообщения о состоянии устройств и ошибках.

    Если в программе. System Setup задать опцию ЕСР, то появится строчка для выбора DMA-канала (канал непосредственного доступа к памяти, direct memory access). Необходимо задать его так же, как и при запросе на прерывание. Чтобы предотвратить возникновение конфликтов DMA-каналов, просмотрите свободные из них в окне "Свойства: Компьютер". как описано выше. Если конфликта не избежать, то вернитесь к двунаправленному режиму порта.

    Лучший порт для урагана данных.

    В новых системах и периферийных устройствах параллельные и последовательные порты стали заменять универсальной последовательной шиной (Universal Serial Bus . USB). С ее помощью можно достичь скорости передачи данных до 12 Мбит/с, а также подключать при наличии всего одного порта клавиатуры, мониторы, мыши и многие другие (до 127) устройства, которые, как и с решающим сходные задачи SCSI-интерфейсом, могут быть соединены "цепочкой". При этом используется всего один запрос прерывания. USB-шину можно устанавливать и на более старые компьютеры, купив соответствующую плату расширения.

    USB устройство как последовательный порт (и USB ScratchBoard)

    Проекты Altera Quartus II для платы Марсоход USB устройство как последовательный порт (и USB ScratchBoard)
    Подробности Категория: Проекты Altera Quartus II для платы Марсоход Создано 25 Декабрь 2010 Автор: Николай Ковач Просмотров: 22140

    Вот пришла мне такая мысль в голову.
    Хотелось бы сделать наш сайт интересным даже детям. хотелось бы заинтересовать их электроникой, программированием, робототехникой!

    Конечно, программирование ПЛИС - не очень простая задача, но может это им и не нужно? Есть замечательная среда программирования для детей - это Scratch. Эта среда программирования может использоваться со специальными ScratchBoard платами и к ним можно подключить датчики и моторчик.

    Я уже писал раньше про Scratch. Более того, у меня даже был проект для платы Марсоход - ее можно было подключить к компьютеру как ScratchBoard. Правда был у того проекта недостаток - плата подключалась через последовательный порт. Поэтому кроме платы Марсоход нужно было еше паять дополнительную платку преобразователь уровней для RS232 - ведь последовательный порт компьютера использует уровни сигналов +12В и -12В. Кроме того, сейчас уже не у каждого компьютера есть последовательный порт. Поэтому иногда нужен еще кабель USB-Serial. В общем не очень просто.

    Вот поэтому я подумал - нужно сделать новый проект для платы Марсоход .
    Я сделал такую "прошивку", что теперь плата Марсоход работает как USB устройство, распознается компьютером как "последовательный порт" и посылает компьютеру данные в формате Scratch. Все стало гораздо проще! Четыре кнопочки платы Марсоход действуют как датчики сопротивление-А, сопротивление-B, сопротивление-C, сопротивление-D в программе Scratch. Значения эти датчики правда дают не аналоговые я только 0 и 100. Моторчик коллекторный, небольшой мощности (ведь у нас все питается от USB) подключается к пинам F3 и F4.

    Вот посмотрите: на языке Scratch "пишем" вот такую простую программу:

    Смысл этой программы очень простой - моторчик включается, когда срабатывает датчик света. К ноутбуку или компьютеру через USB подключаем нашу плату Марсоход (прошитую моим новым проектом), к плате моторчик и опто-транзистор - это датчик света. Смотрим как это работает:

    Конечно это только простой пример использования. Ну а дальше я думаю ваша фантазия и фантазия ваших детей. Творите и программируйте!

    Дальше я расскажу о самой "прошивке" для платы Марсоход. Проект довольно сложный, но в принципе, те кто заинтересуются могут просто, не разбираясь в тонкостях проекта ПЛИС, один раз зашить плату и использовать ее как ScratchBoard .


    Итак. Что нам нужно?
    Исходная отправная точка - USB проект, уже опубликованный ранее на нашем сайте. К плате Марсоход нужно припаять кварцевый генератор на 24Мгц. Этот генератор нам нужен для стабильной работы устройства.

    В нашем USB устройстве все дескрипторы USB записаны во встроенной флеш памяти ПЛИС EPM240T100C5 на плате Марсоход. Именно эти дескрипторы определяют тип или класс, к которому принадлежит устройство. Когда устройство USB подключается к компьютеру, то операционная система читает дескрипторы из устройства и определяет какой драйвер загружать. Таким образом, нам нужно записать во флеш "правильные" дескрипторы, которые описывают устройство как последовательный порт. Если мы правильно зададим все дескрипторы и сделаем поведение нашего устройства "стандартным", то нам даже не придется писать драйвер к нашему устройству - операционная система использует уже имеющийся у нее набор драйверов (хотелось бы верить).

    Вообще-то существует специальный документ (на английском языке) - спецификация USB для коммуникационных устройств. Я положил этот документ в раздел для загрузки на нашем сайте:

    Вы можете выкачать его и почитать. В нем все довольно подробно расписано (на английском), но, к сожалению, мало что понятно

    Попробую дать некоторые пояснения.

    Когда устройство подключено к порту USB компьютера, то первое, что делает операционная система компьютера - читает из устройства так называемый DeviceDescriptor - описатель устройства. Структура DeviceDescriptor, если описывать на языке С выглядит вот так:

    // USB Standard Device Descriptor
    unsigned char usb_device_descriptor[] = <
    0x12, // bLength
    USB_DEVICE_DESCRIPTOR_TYPE, // bDescriptorType = 1
    0x10,
    0x01, // bcdUSB = 1.10
    0x02, // bDeviceClass: CDC = 2
    0x00, // bDeviceSubClass
    0x00, // bDeviceProtocol
    0x08, // bMaxPacketSize0
    0xFB,
    0x09, // idVendor = 0x09FB
    0xA6,
    0x60, // idProduct = 0x60A6
    0x00,
    0x01, // bcdDevice = 1.00
    1, // Index of string descriptor describing manufacturer
    2, // Index of string descriptor describing product
    0, // Index of string descriptor describing the device's serial number
    0x01 // bNumConfigurations
    >;

    Мы делаем свое USB устройство и должны запулнить эту структуру. Нужно обязательно заполнить следующие поля:

    • idVendor - я пишу 0x09FB, это id компании Альтера (надеюсь они меня не побьют? ведь id по правилам я должен купить у USB.ORG за большие деньги, а я использую чужой, компании Альтера)
    • idProduct - берем с потолка, но помним, что у одного производителя все "продукты" пронумерованы, то есть на самом деле мы не можем взять число, уже использующееся компанией Альтера.
    • bDeviceClass - ставим число 2, это будет значить устройство типа COM порта, модема и т.д, тоесть коммуникационное устройство Communication Class Device
    • bMaxPacketSize0 - ставим 8, это обычная длина пакета для низко-скоростных устройств.

    Вот у нас есть структура DeviceDescriptor длиной 18 байт. Мне нужно расположить ее во флеш микросхемы CPLD платы Марсоход по некоторому адресу. Но не все так просто. Дело в том, что USB транзакции сами по себе происходят за несколько довольно мудреных шагов, передача идет пакетами данных не более 8 байт и защищены контрольными суммами.

    Поскольку мое USB устройство весьма примитивно, то я хочу во флеш разместить уже готовые пакеты, со всеми дополнительными байтами типа SYN, PID, CRC (зараннее посчитанные). Вот я это и сделал - содержимое флеш в чипе CPLD описывается файлом c с расширением *.mif (memory initialization file). Вот его фрагмент, который описывает DeviceDescriptor :

    -- Descriptor Device
    0080. 4B8D; -- SYN&Len, PID
    0081. 0112; -- Data.
    0082. 0110;
    0083. 0002;
    0084. 0800;
    0085. CF10; -- CRC16
    0086. 0000;
    0087. 0000;

    0088. C38D; -- SYN&Len, PID
    0089. 09FB; -- Data
    008A. 60A6;
    008B. 0100;
    008C. 0201;
    008D. 5C21; -- CRC16
    008E. 0000;
    008F. 0000;

    0090. 4B87; -- SYN&Len, PID
    0091. 0100; -- Data
    0092. 8F3F; -- CRC16
    0093. 0000;

    Так, DeviceDescriptor будет прочитан за 3 передачи, две по 8 байт данных и одна короткая 2 байта данных.

    Вообще, чтобы ощутить всю "прелесть" и "замороченность" USB протокола можете скачать программу USB анализатора с сайта http://www.ellisys.com/products/usbex260/download.php Эта программа к аппаратному анализатору USB протокола - это такая коробочка, которая ставится между исследуемым устройством и компьютером и записывает весь USB трафик между ними. Конечно, у вас такой коробочки нет, но, запустив программу анализатора, вы сможете посмотреть уже записанные примеры для устройств разных классов и вы сможете посмотреть какие пакеты там ходят.

    Добавлю, что у меня есть этот анализатор, что делает разработку USB устройств гораздо проще и удобнее.

    Кроме DeviceDescriptor еще очень нужный описатель - это ConfigurationDescriptor. Он описывает как операционная система должна обращаться с устройством, какие у устройства есть Endpoints - каналы передачи данных, их тип и так далее. Вот эти дескрипторы особенно сложны для понимания Особенно для класса CDC (Communication Device Class) - так я по правде мало что понимаю здесь. Ну вот привожу его как есть (я посмотрел множество разных примеров реализации CDC устройств и сделал свое подобное):

    UCHAR usb_configuration_descriptor[] = <
    /*Configuation Descriptor*/
    0x09. /* bLength: Configuation Descriptor size */
    USB_CONFIGURATION_DESCRIPTOR_TYPE, /* bDescriptorType: Configuration */
    VIRTUAL_COM_PORT_SIZE_CONFIG_DESC, /* wTotalLength:no of returned bytes */
    0x00,
    0x02, /* bNumInterfaces: 2 interface */
    0x01, /* bConfigurationValue: Configuration value */
    0x00, /* iConfiguration: Index of string descriptor describing the configuration */
    0x80, /* bmAttributes: self powered */
    0x32, /* MaxPower 0 mA */
    /*Interface Descriptor*/
    0x09, /* bLength: Interface Descriptor size */
    USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType: Interface */
    /* Interface descriptor type */
    0x00, /* bInterfaceNumber: Number of Interface */
    0x00, /* bAlternateSetting: Alternate setting */
    0x01, /* bNumEndpoints: One endpoints used */
    0x02, /* bInterfaceClass: Communication Interface Class */
    0x02, /* bInterfaceSubClass: Abstract Control Model */
    0x01, /* bInterfaceProtocol: Common AT commands */
    0x00, /* iInterface: */
    /*Header Functional Descriptor*/
    0x05, /* bLength: Endpoint Descriptor size */
    0x24, /* bDescriptorType: CS_INTERFACE */
    0x00, /* bDescriptorSubtype: Header Func Desc */
    0x10, /* bcdCDC: spec release number */
    0x01,
    /*Call Managment Functional Descriptor*/
    0x05, /* bFunctionLength */
    0x24, /* bDescriptorType: CS_INTERFACE */
    0x01, /* bDescriptorSubtype: Call Management Func Desc */
    0x03, /* bmCapabilities: D0+D1 */
    0x01, /* bDataInterface: 1 */
    /*ACM Functional Descriptor*/
    0x04, /* bFunctionLength */
    0x24, /* bDescriptorType: CS_INTERFACE */
    0x02, /* bDescriptorSubtype: Abstract Control Management desc */
    0x0f, /* bmCapabilities */
    /*Union Functional Descriptor*/
    0x05, /* bFunctionLength */
    0x24, /* bDescriptorType: CS_INTERFACE */
    0x06, /* bDescriptorSubtype: Union func desc */
    0x00, /* bMasterInterface: Communication class interface */
    0x01, /* bSlaveInterface0: Data Class Interface */
    /*Endpoint Descriptor*/
    0x07, /* bLength: Endpoint Descriptor size */
    USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType: Endpoint */
    0x82, /* bEndpointAddress: (IN2) */
    0x03, /* bmAttributes: Interrupt */
    VIRTUAL_COM_PORT_INT_SIZE, /* wMaxPacketSize: */
    0x00,
    0x20, /* bInterval: */
    /*Data class interface descriptor*/
    0x09, /* bLength: Endpoint Descriptor size */
    USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType: */
    0x01, /* bInterfaceNumber: Number of Interface */
    0x00, /* bAlternateSetting: Alternate setting */
    0x02, /* bNumEndpoints: Two endpoints used */
    0x0A, /* bInterfaceClass: CDC */
    0x00, /* bInterfaceSubClass: */
    0x00, /* bInterfaceProtocol: */
    0x00, /* iInterface: */
    /*Endpoint Descriptor*/
    0x07, /* bLength: Endpoint Descriptor size */
    USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType: Endpoint */
    0x03, /* bEndpointAddress: (OUT3)*/
    0x02, /* bmAttributes: Bulk */
    VIRTUAL_COM_PORT_DATA_SIZE, /* wMaxPacketSize: */
    0x00,
    0x00, /* bInterval: ignore for Bulk transfer */
    /*Endpoint Descriptor*/
    0x07, /* bLength: Endpoint Descriptor size */
    USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType: Endpoint */
    0x83, /* bEndpointAddress: (IN3)*/
    0x02, /* bmAttributes: Bulk */
    VIRTUAL_COM_PORT_DATA_SIZE, /* wMaxPacketSize: */
    0x00,
    0x00 /* bInterval: ignore for Bulk transfer */
    >;

    Этот описатель ОС читает после назначения устройству USB адреса. Конечно, эта структура тоже будет вписана специальным образом во флеш чипа CPLD.

    Я написал программу на зыке С (Microsoft Visual Studio) которая формирует из этих структур те, что мне нужны в *.mif файле. Программа есть в архиве. Она разбивает длинные дескрипторы на пакеты USB, считает контрольные суммы пакетов и т.д. В общем остается только взять и вставить в *.mif файл.

    Проект для платы Марсоход. INF файлы для установки драйверов, программу для формирования mif файла из дескрипторов можно взять здесь.

    Сам проект я сделал довольно быстро. У меня уже был проект, который я взял за основу. Я только поменял модуль ls_usb_core.v (ведь теперь должен обрабатывать целых 3 Endpoints и посылать данные в формате Scratch ) и поменял mif файл, где теперь хранятся новые описатели USB пакетов.

    Сказать по правде больше всего времени, почти неделю, я потерял на. драйвера.

    Вообще-то сколько я примеров смотрел (как правило они реализованы на микроконтроллерах AVR), обычно люди говорят, что с драйверами никаких проблем нет, так как используются родные драйвера Windows. Для ОС Windows нужно только подсунуть некий *.INF файл описывающий CDC устройство, и в нем должна быть прописаны строки типа

    [Devices]
    %DESCRIPTION% = DriverInstall, USB\VID_09FB&PID_60A6

    Здесь VID_09FB - это наш id производителя, а PID_60A6 - это id устройства.

    Так же в INF файле есть ссылка на драйвер Microsoft USBSER.SYS - именно он поддерживает Communication класс:

    Вот я взял, сделал INF файл, подсунул своему Windows XP SP2 и - заработало! Уррра!

    К сожалению я рано радовался. Всякие мои попытки запустить мое устройство на Windows 7 32bit оказывались безуспешними. Windows 7 мне говорил, что устройство не может быть запущено (ошибка 10). Уж чего я только не пробовал - не помогает и все. Однако, я нашел японский (!) сайт. где написано как бороться с этой проблемой. Там Osamu Tamura предлагает свой драйвер "фильтра", который и решает проблему. Вот я воспользовался этим драйвером и теперь работает и под Windows 7! Конечно, его INF файл я исправил, поставив мои idVendor и idProduct .

    Вот теперь можно считать работу почти законченной. Поэтому я и выкладываю этот проект на всеобщее обозрение:

    Что касается проблемы драйверов - я думаю проблема в том, что мое устройство низко-скоростное и по каким-то причинам Windows 7 считает, что оно по этому не может быть класса Communication. Эта версия нуждается в проверке. Может быть новую версию устройства я позже сделаю high-speed, посмотрим..

    Комментарии