ООО ЭФО
Поиск по складу
Программа поставок 2016
Сегодня
www.powel.ru
источники питания
www.korpusa.ru
конструктивы и корпуса РЭА
www.wless.ru
беспроводные технологии
www.mymcu.ru
микроконтроллеры
altera-plis.ru
микросхемы Altera
www.infiber.ru
волоконно-оптические
компоненты в
промышленности
www.efo-power.ru
силовая электроника
www.efo-electro.ru
электротехническая
продукция
www.efometry.ru
контрольно-измерительные приборы
www.golledge.ru
кварцевые резонаторы и генераторы Golledge
www.sound-power.ru
профессиональные усилители класса D
Поиск по сайту
Подписка на новости

Система менеджмента
качества сертифицирована на соответствие требованиям:
ISO 9001, ГОСТ Р ИСО 9001 и СРПП ВТ - подтверждено сертификатами соответствия в системах сертификации Русского Регистра, ГОСТ Р, международной сети IQNet, "Оборонсертифика" и "Военный Регистр".

ООО "ЭФО" в 2011г. получило Лицензию Федеральной службы по экологическому, технологическому и атомному надзору на изготовление оборудования для ядерных установок.


Rambler s Top100



ChipFind - поисковая система по электронным компонентам
EEN
webmaster
Санкт-Петербург: (812) 327-86-54  zav@efo.ru Москва: (495) 933-07-43  moscow@efo.ru Екатеринбург: (343) 278-71-36  ural@efo.ru Пермь: (342) 220-19-44  perm@efo.ru
Казань: (843) 518-79-20  kazan@efo.ru Ростов-на-Дону: (863) 220-36-79  rostov@efo.ru Н. Новгород: (831) 434-17-84  nnov@efo.ru Новосибирск: (383) 286-84-96  nsib@efo.ru
о нас склад библиотека статьи
 
Использование и установка D2xx-драйверов фирмы FTDI


Использование D2xx -драйверов

D2xx-драйверы фирмы FTDI являются альтернативой VCP-драйверам. Они включают драйвер WDM, который осуществляет связь с устройством через Windows USB Stack, и библиотеку DLL, которая связывает прикладное программное обеспечение (написанное на VC++, Borland C++ Builder, Delphi, VB и т.п.) с WDM драйвером.

D2XX-драйверы позволяют получать максимальные заявленные скорости обмена данными (8 Мбит/с для каналов, образующих параллельный интерфейс с микропроцессорной системой, и 3 Мбит/c при использовании последовательной связи с микроконтроллером).

Установка D2XX-драйверов

Драйверы многих фирм-производителей USB-устройств сертифицированы и интегрированы в опeрационную систему Windows. При подключении к компьютеру нового USB-устройства операционная система опрашивает его идентификаторы: VID (Vendor Identifier) и PID (Product Identifier). Если драйвер, соответствующий этим идентификаторам, имеется в составе операционной системы, то начинается его установка. Если система не находит самостоятельно соответствующего драйвера, то она предоставляет возможность пользователю указать путь к каталогу, в котором находится необходимый дистрибутив.

Oперационные системы Windows 98/ME/2000 не содержат в своем составе сертифицированных драйверов FTDI. Поэтому при подключении USB-устройств со стандартными для FTDI идентификаторами (VID=0403 и PID=6001) пользователь имеет возможность выбрать тип необходимого драйвера, VCP или D2XX, указав соответствующую директорию для установки.

Немного сложнее обстоит дело в случае использования операционной системы Windows XP, которая уже имеет в своем составе сертифицированные VCP-драйверы FTDI. При попытках присоединить к компьютеру новое USB-устройство со стандартными идентификаторами FTDI (например, любой DLP-модуль) система по умолчанию, не спрашивая пользователя, самостоятельно установит VCP-драйверы. Пользователю, желающему работать с D2XX-драйверами, необходимо в этот момент вспомнить, что очень полезно воспитывать в себе терпение и воспользоваться утилитой ftxprcvr.exe, входящей в состав дистрибутива D2XX-драйверов для Windows XP. Утилита ftxprcvr.exe, используя установившиеся по умолчанию VCP-драйверы, перепрограммирует внешнюю EEPROM, используемую в присоединенном устройстве, и задаст новые значения идентификаторов (VID=0403 и PID=6006). После этого необходимо повторить процедуру установки D2XX-драйверов сначала, т.е отключить и снова присоединить устройство. Теперь система даст возможность пользователю указать директорию для установки D2XX-драйверов.

Подключение D2XX-библиотеки к рабочему приложению

Для того, чтобы иметь возможность использовать функции библиотеки D2XX-драйверов необходимо ее подключить к проекту. Например, при работе в среде Borland С++ Builder необходимо в текст всех программных модулей, которые будут использовать D2XX-функции включить файл заголовка FTD2XX.h, который содержит прототипы функций и описания используемых структур.

Кроме того, в головном файле необходимо вставить макрос USELIB ("Ftd2xx.lib"), указывающий на использование внешней динамической библиотеки.

Возможно, библиотека ftd2xx.lib, входящая в состав дистрибутива, не будет совместима с версией пакета Borland C++Builder, установленной на Вашем компьютере. Тогда необходимо сгенерировать новую библиотеку, используя предлагаемый FTDI файл ftd2xx.dll и утилиту implib.exe, которую необходимо скопировать из каталога Borland\CBuilder\Bin в ту же директорию, где хранится файл ftd2xx.dll. Утилита запускается из текущего каталога с помощью командной строки ( "implib.exe Ftd2xx.dll -f"). После этого в текущем каталоге появится новая версия библиотеки ftd2xx.lib.

Функции D2XX-библиотеки

Подробное описание функций D2XX-библиотеки с примерами использования каждой функции приводится в документе "D2XX Programmer's Guide".

Все функции библиотеки разбиты на четыре группы:

  • Классические функции,
  • Функции работы с EEPROM,
  • Функции поддержки новых режимов,
  • Функции "FT-Win32 API".

Классические функции предназначены для организации основных операций обмена данными по USB. Их перечень представлен в таблице 1.

Таблица 1
Название функции Назначение функции
FT_ListDevices(...) Чтение списка присоединённых устройств FTDI
FT_Open(...) и FT_OpenEx(...) Открывает порт и возвращает указатель на него
FT_Read(...) Чтение данных из порта
FT_Write(...) Запись данных в порт
FT_Close(...) Закрытие порта
FT_ResetDevice(...) Сброс устройства
FT_Purge(...) Очистка входного и выходного буферов
FT_SetTimeouts(...) Установка таймаутов
FT_GetQueueStatus(...) Чтение статуса очереди приёмника
FT_GetStatus(...) Чтение статуса устройства
FT_SetBreakOn(...)
FT_SetBreakOff(...)
Установка и сброс состояния "разрыв линии"
FT_SetEventNotification(...) Установка условий для генерации уведомления
FT_SetBaudRate(...) Установка скорости порта
FT_SetDivisor(...) Установка нестандартной скорости порта
FT_SetDataCharacteristics(...) Установка параметров порта, таких как длина байта, количество стоповых бит и т.д.
FT_SetFlowControl(...) Установка режима аппаратного и программного управления потоком
FT_SetDTR(...)
FT_ClrDTR(...)
FT_SetRTS(...)
FT_ClrRTS(...)
Установка сигналов квитирования
FT_GetModemStatus(...) Чтение состояния сигналов квитирования
FT_SetChars(...) Установка кодов специальных переменных, таких как событие и ошибка.

Для каждого устройства, с которым необходимо организовать обмен данными по USB, прикладное программное обеспечение должно предварительно "открыть канал" при помощи функций "FT_Open" или "FT_OpenEX". Обе эти функции возвращают идентификатор канала, который затем используется при выполнении любой операции с каналом. При работе с одним единственным устройством для открытия канала удобно пользоваться функцией "FT_Open". Если же на шине одновременно могут присутствовать более одного устройства FTDI, то полезно предварительно при помощи функции "FT_ListDevices" получить информацию о всех присутствующих на шине FTDI-устройствах и затем применить функцию "FT_OpenEX", которая позволяет открыть канал только для одного из присоединенных USB-устройств с заданным строковым идентификатором.

После того, как канал успешно открыт, чтение и запись данных выполняются при помощи функций "FT_Read" и "FT_Write". Перед завершением приложения необходимо закрыть все открытые каналы функцией "FT_Close".

Кроме функций чтения и записи программист имеет возможность выполнять целый ряд полезных вспомогательных операций. Функция "FT_ResetDevice" позволяет осуществлять дистанционный сброс микросхемы FTDI. Очистка входного и выходного буферов выполняются при помощи функции "FT_Purge". Опрос состояния микросхемы FTDI, приемного и передающего буферов можно выполнить при помощи "FT_GetStatus" и "FT_GetQueueStatus". Для включения и выключения режима "обрыв линии" имеются функции "FT_BreakOn" и "FT_BReakOff". Возможно программировать интервалы ожидания при приеме и передаче при помощи функции "FT_SetTimeouts". Кроме того, при помощи функции "FT_SetEventNotification" можно задавать различные условия, по которым будут формироваться специальные события Windows.

Для микросхем FT8u232AM и FT232BМ, которые имеют с микропроцессорной системой асинхронную последовательную связь, при помощи функций "FT_SetBaudRate" и "FT_SetDivisor" возможно программировать скорость обмена последовательными данными с микроконтроллером, а функция "FT_SetDataCharacteristics" позволяет задавать такие параметры асинхронной последовательной передачи, как количество бит данных в кадре, количество стоп-бит, режим использования бита четности.

Обмен данными по асинхронному последовательному каналу, например, при работе с модемом, может выполняться с использованием дополнительных линий квитирования ("handshaking"). Для настройки этой возможности используется функция "FT_SetFlowControl", установка линий квитирования выполняется при помощи "FT_SetDTR", "FT_ClrDTR", "FT_SetRTS", "FT_ClrRTS". Наоборот для опроса состояния управляющих сигналов предназначена функция "FT_GetModemStatus". При помощи функции "FT_SetChars" возможно запрограммировать кодовые комбинации для специальных символов, например ошибка или событие.

Функции, предназначенные для инициализации параметров передачи асинхронных последовательных данных, в случае использования микросхемы FT245 игнорируются микросхемой.

Функции работы с EEPROM (таблица 2) дают возможность приложению считывать и записывать различные поля внешней микросхемы EEPROM, которая разделена на две области: область для задания настроек USB и пользовательская область (EEUA - EEPROM user area), в которой можно сохранять произвольные данные.

Таблица 2
Название функции для работы с EEPROM Назначение функции
FT_EE_Program(...) Программирование области настроек USB
FT_EE_Read(...) Чтение содержимого области настроек USB
FT_EE_UASize(...) Считывание размера области EEUA
FT_EE_UAWrite(...) Запись данных в область EEUA
FT_EE_UARead(...) Чтение данных из области EEUA

Функции "FT_EE_Program" и "FT_EE_Read" позволяют считывать и задавать параметры, определяющие режимы работы USB. При этом программист задает и считывает конфигурационные данные при помощи структуры "PFT_PROGRAM_DATA". Формат этой структуры описан в заголовочном файле FT2XX.h и выглядит следующим образом:
typedef struct ft_program_data
{
WORD VendorId;
WORD ProductId;
char *Manufacturer;
char *ManufacturerId;
char *Description;
char *SerialNumber;
WORD MaxPower;

WORD PnP;
WORD SelfPowered;

WORD RemoteWakeup;
// VID - идентификатор производителя (0x0403)
// PID - идентификатор изделия (0x6001)
// строковый идентификатор производителя
// строковый префикс производителя
// строковый идентификатор изделия
// строка с серийным номером изделия
// максимальный потребляемый ток в мА
// минимум 0, максимум 500
// Plug and Play: запрещение (0)/ разрешение (1)
// режим питания: 0 - питание от USB, 1 - питание от
// внешнего источника
// удалённый перевод в активное состояние.
// 0 - невозможно, 1 - возможно.

// Остальные поля структуры зарезервированы для микросхем четвёртой версии
UCHAR Rev4;
UCHAR IsoIn;
UCHAR IsoOut;
UCHAR PullDownEnable;
UCHAR SerNumEnable;

UCHAR USBVersionEnable;

WORD USBVersion;
// не ноль - микросхема версии 4, ноль - другая версия
// не ноль, если приемник изохронный
// не ноль, если передатчик изохронный
// не ноль, если разрешена привязка к земле
// не ноль, если микросхеме разрешено использовать
//серийный номер
// не ноль, если микросхеме разрешено использовать
//код версии USB
//код версии USB. 0х0200 - USB 2.0
} FT_PROGRAM_DATA, *PFT_PROGRAM_DATA;

Здесь следует отметить, что микросхемы FTDI могут работать и без внешней EEPROM. При этом микросхема, формируя USB-протокол, подставляет в USB-кадр конфигурационные данные по умолчанию. Их значения приведены в приложении документа "D2XX Programmer Guide". При этом сохраняется возможность подключать к шине множество устройств FTDI, несмотря на то, что без внешней EEPROM все они будут иметь совершенно одинаковые дескрипторы. Операционная система в этом случае будет различать устройства по номеру используемого USB-разъема. Конечно, в такой системе нельзя будет безболезненно менять конфигурацию дерева подключенных USB-устройств.

При использовании внешней EEPROM и назначении своих собственных идентификаторов следует иметь ввиду, что драйверы FTDI в том виде, как они предоставлены на сайте производителя, могут работать только с устройствами, имеющими стандартные идентификаторы FTDI (VID=0x0403 и PID=0x6001 или 0x6006). Вместе с тем разработчик USB-устройства имеет возможность задавать собственные строковые идентификаторы производителя, устройства и строковый серийный номер устройства для того, чтобы его конечное приложение могло использовать эти индивидуальные строковые идентификаторы для отображения информации о подключенном USB-устройстве. Кроме того, компания FTDI выдает и бесплатно регистрирует индивидуальные PID-идентификаторы. При этом необходимо помнить, что USB-устройство с индивидуальным PID-идентификатором должно комплектоваться скорректированными драйверами, настроенными на работу с данным идентификатором.

Оставшиеся три функции для работы с внешней EEPROM позволяют работать с областью пользовательских данных. В зависимости от длины строковых идентификаторов область пользовательских данных может иметь различные размеры. Поэтому имеется функция "FT_EE_UASize", которая позволяет определить размер пользовательской области. Следует также иметь в виду, что при перезаписи области настроек USB все данные из пользовательской области стираются.

Примером работы с внешней EEPROM служит утилита "EditEEPROM" (рис. 1). Она позволяет считывать и записывать USB-идентификаторы, находящиеся в EEPROM, а так же работать с User Area.


Рис. 1


Функции поддержки новых режимов позволяют программировать интервал ожидания ("time-out") приемного буфера перед его заполнением новыми данными, а также дают возможность организовать обмен данными в режиме "Bit Bang". Если в обычном режиме 8 линий данных микросхемы FT245BM образуют двунаправленную шину и в отсутствии сигналов RD и WR находятся в высокоимпедансном состоянии, то в режиме "BitBang" линии данных функционируют аналогично порту микроконтроллера. Каждую линию данных можно сконфигурировать на ввод или на вывод. Данные, принятые по USB будут сразу же устанавливаться на выходных линиях, а состояния входных выводов может быть считано через USB в компьютер. Режим "Bit Bang" может использоваться, например, для конфигурирования микросхем программируемой логики через канал USB, или для ввода/вывода через USB цифровых логических сигналов без использования дополнительного микроконтроллера.

Функции FT-Win32 API являются альтернативой классическим функциям. Они эмулируют стандартные вызовы Win32 API для работы с последовательным каналом и позволяют быстро адаптировать уже готовое приложение, использующее эти вызовы, для работы с микросхемами FTDI.

Внимание! Группа классических функций и группа "FT-Win32 API" являются альтернативными друг другу. Разработчикам следует выбрать одну из них для работы и не смешивать функции в одной программе.

© 1999-2016 All Right Reserved. EFO Ltd. При использовании материалов ссылка на источник обязательна.
Контактная информация