1.   Общее описание изделия USB2185

Изделие USB2185 представляет собой одноплатное интерфейсное устройство на шину USB (rev 2.0, rev 1.1). Изделие предназначено для подключения пользовательских (прикладных) устройств, блоков или систем ввода-вывода к компьютерам под управлением ОС Win2k, XP или Linux.

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

С другой стороны, изделие обеспечивает гибкость при подключении пользовательской аппаратуры и позволяет вести первичную ЦОС (Цифровую Обработку Сигнала) при вводе и выводе. Кроме того, обеспечивается возможность выполнения алгоритмов управления объектом в жестком реальном времени, без использования ресурсов компьютера.

Данное сочетание свойств определяется структурой изделия (Рис. 1):  

Обращённая к пользователю часть состоит из сигнального процессора (ADSP-2185M производства Analog Devices.) и внешнего разъема ВН-50, с контактами которого напрямую соединены выводы DSP, позволяющие задействовать 16-ти разрядную шину данных,  два универсальных скоростных сериальных порта, несколько входных и выходных логических линий, входы прерываний. Управление указанными ресурсами выполняется программой, загружаемой в DSP (драйвер DSP).

Часть, обращённая к шине USB (интерфейсная часть), осуществляет обмен информацией между ПК и DSP и функционирует под управлением микроконтроллера. Микроконтроллер предварительно  запрограммирован управляющей программой (BIOS) производителем изделия («R-technology group»).

Связь между частями изделия при передаче данных между компьютером и внутренней памятью DSP осуществляется при помощи Внутреннего Прямого Доступа к Памяти (IDMA).

 

Рис. 1 Структурная схема изделия USB2185.

 

            На практике использование такой структуры имеет следующие преимущества:

 

-         для пользователя данные, подлежащие отправке в компьютер или принятые из компьютера, выглядят как области памяти DSP – это позволяет пользователю, совершенно не знакомому с архитектурой и протоколом USB, самостоятельно изменять драйвер DSP или создавать свои собственные программы под конкретные задачи;

-         ресурсы DSP не расходуются на управление обменом данными с ПК и полностью высвобождаются для задач пользователя – это обеспечивает уверенное выполнение требований жесткого реального времени в процессе сбора данных или управления объектом;

-         загрузка драйвера в DSP (после включения питания) осуществляется из компьютера через шину USB – это позволяет отказаться от использования дополнительных аппаратных средств (программатор, JTAG и т.д.) при изменении конфигурации интерфейса. Радикально облегчается процесс отладки.

 

Кроме того, изделию присущи следующие положительные качества:

 

Ø      В комплект бесплатного программного обеспечения, помимо универсального драйвера DSP, входят несколько вариантов драйверов, ориентированных на разные пользовательские задачи. Эти варианты поставляются как в виде загрузочных кодов, так и в исходных текстах на ассемблере ADSP21XX, что позволяет пользователю (при необходимости) самостоятельно модифицировать программу. Компиляция и создание загрузочного модуля производятся при помощи бесплатно распространяемого Analog Devices программного обеспечения. Т.к. программы собственно управления процессами сбора данных, как правило, имеют простую структуру и небольшой объём, а процесс передачи данных по протоколу USB реализован независимо, на отдельном микроконтроллере, возможна успешная реализация специализированных драйверов DSP пользователями, не имеющими большого опыта разработки встроенного программного обеспечения.

 

Ø      В комплект бесплатного программного обеспечения входит специализированный драйвер для ОС Win2k, XP. Управление и обмен данными с устройством осуществляется при помощи входящей в комплект библиотеки функций API. Также в комплект входят примеры использования функций API.

 

Ø      Пользователь имеет возможность, например, для обновления, легко «перепрошить» BIOS интерфейсной части модуля, обеспечивающей связь ПК с DSP. Данная операция выполняется по интерфейсу USB, при помощи программы, входящей в состав комплекта бесплатного программного обеспечения.

 

Ø      В состав изделия входит энергонезависимое пользовательское ПЗУ (ППЗУ), которое позволяет пользователю хранить необходимую информацию, например, калибровочные коэффициенты пользовательского АЦП, сериальный номер, название и т.д. Чтение/запись из/в ППЗУ осуществляется программно, через шину USB, и не требует дополнительных аппаратных средств. Подробнее о работе с ППЗУ см. в руководстве программиста.

 

Ø      На внешний разъем изделия кроме всех выводов DSP (за исключением линий, задействованных для обмена данными с ПК) выведены также питание 5В, питание 3.3В, опорная частота 36МГц - это позволяет пользователю создавать самые разнообразные устройства на базе изделия USB2185, подключая к нему различные модули расширения.

 

Ø      Питание модуля может осуществляться как непосредственно от шины USB, так и от внешнего источника питания +5В +/- 10%. Низкая потребляемая мощность самого изделия USB2185 позволяет обойтись без внешнего источника. Внешний источник можно использовать при работе USB2185 совместно с различными пользовательскими узлами, если их потребление (совместно с USB2185) превышает допустимые стандартом USB 500 мА, а также при работе с ноутбуком, в целях экономии энергии аккумулятора ноутбука.

 

Ø      Конструкция изделия позволяет легко размещать устройства на базе USB2185 в стандартных корпусах типа G738 или G738A фирмы Gainta.

 

 

 

1.1.   Область применения

 

Основное назначение изделия USB2185 – служить базовым модулем для пользовательских устройств ввода/вывода и обработки информации.

На базе изделия USB2185 могут быть созданы самые разнообразные устройства, подключаемые к ПК через современную высокоскоростную шину USB, в том числе:

·        АЦП

·        ЦАП

·        логические анализаторы

·        системы хранения и обработки информации

·        концентраторы данных для АСУТП

·        мобильные измерительные комплексы на базе notebook

 

 

 

1.2.   Технические характеристики

 

Тип DSP                                                  ADSP-2185MKST-300

Рабочая частота DSP                             72 МГц

 

Допустимое напряжение на

контактах внешнего разъема

относительно

контактов 47-50 (земли):                       0 … 3.3В.

 

Максимальная скорость передачи массивов данных:

- из DSP в ПК                                         10.4 х 106 байт/с[1]

- из ПК в DSP                                         2.8 х 106 байт/с[2]

-  дуплексная передача                          6 х 106 байт/с в ПК и 250 х 103 байт/с из ПК

 

Ток потребления не более                    230 мА

Рабочая температура                             10… 50 С

Габариты                                                117 х 99 мм

 

 

 

 

 

 

 

 

 

1.3.   Индикаторы и устройства коммутации изделия USB2185

 

На Рис. 2 представлен внешний вид изделия USB2185.

 

 

Рис. 2. Внешний вид изделия USB2185.

 

Светодиод PWR – загорается при подаче питания от шины USB или от внешнего источника.

 

Светодиод LINK – загорается при подключении изделия к шине USB после успешной нумерации устройства. Сигнализирует о том, что USB-порт ПК правильно распознал изделие USB2185.

 

Светодиод HS (High Speed) – горит, если USB-порт ПК, к которому подключено изделие, поддерживает стандарт USB 2.0 (High Speed USB). Если светодиод HS при подключении устройства к ПК на короткое время загорается, а затем гаснет – значит, USB-порт ПК поддерживает стандарт USB 1.1. (Full Speed USB), и скоростные возможности изделия USB2185 при работе с таким портом будут ограничены (например, максимальная скорость передачи данных из DSP в ПК падает до 900 Кбайт/с).

 

Светодиод DSP – соединен с выводом PF2 DSP. Загорается при PF2 = 0. Служит для облегчения отладки пользователем своего драйвера DSP. Например, пользователь может отслеживать, заходит ли DSP в обработчик прерывания, включая в этом обработчике светодиод.

 

Кнопка RST – общий сброс. При нажатии на эту кнопку происходит сброс интерфейсной части, сброс DSP и реенумирация изделия (устройство отключается от шины USB на короткое время и снова подключается к ней).

 

Разъем USB – тип Б. Стандартный разъем для подключения устройства к ПК по шине USB кабелем типа А-Б (кабель входит в комплект поставки изделия USB2185).

 

Разъем питания – предназначен для подачи внешнего питания на изделие USB2185 от внешнего источника питания +5В +/- 10%. Низкая потребляемая мощность самого изделия USB2185 позволяет обойтись без внешнего источника. Внешний источник можно использовать при работе USB2185 совместно с различными пользовательскими узлами, если их потребление (совместно с USB2185) превышает допустимые стандартом USB 500 мА, а также при работе с ноутбуком, в целях экономии энергии аккумулятора ноутбука.

 

ВНИМАНИЕ!!! Производитель гарантирует нормальную работу изделия USB2185 только с источником питания, входящим в комплект поставки изделия! Изделие не подлежит гарантийному ремонту, если оно использовалось совместно с источником питания, не входящим в комплект поставки изделия USB2185.

 

 

1.4.   Внешний разъем изделия USB2185

 

На внешний разъем изделия USB2185 кроме всех выводов DSP (за исключением линий, задействованных для обмена данными с ПК) выведены также питание 5В, питание 3.3В, опорная частота 36МГц - это позволяет пользователю создавать самые разнообразные устройства на базе изделия USB2185, подключая к нему различные модули расширения.

Тип внешнего разъема – BH-50.

Все выводы разъема соединены с выводами DSP через последовательно включенные сопротивления 33 Ом. Все выводы DSP, соединенные с разъемом (за исключением выводов PF1, PF3) подтянуты к питанию 3.3 В через сопротивления 4.7 кОм. Выводы PF1, PF3 подтянуты к земле через сопротивления 4.7 кОм.

Ниже представлена таблица соединения контактов внешнего разъема. Подробнее о назначении цепей см. документацию на процессор ADSP-2185M, входящую в комплект документации на изделие USB2185.

 

Таблица 1. Контакты внешнего разъема.

N вывода

внешнего

разъема

 

Название цепи

N вывода

DSP

 

Назначение

1

A0

97

Адресный выход

2

PF0

94

Программируемый вход/выход

3

PF1

93

Программируемый вход/выход

4

PF2

89

Программируемый вход/выход

5

PF3

88

Программируемый вход/выход

6

FL0

87

Выходной флаг

7

FL1

86

Выходной флаг

8

FL2

85

Выходной флаг

9

DATA23

84

Линия данных

10

DATA22

83

Линия данных

11

DATA21

82

Линия данных

12

DATA20

81

Линия данных

13

DATA19

79

Линия данных

14

DATA18

78

Линия данных

15

DATA17

77

Линия данных

16

DATA16

76

Линия данных

17

DATA15

75

Линия данных

18

DATA14

74

Линия данных

19

DATA13

73

Линия данных

20

DATA12

72

Линия данных

21

DATA11

70

Линия данных

22

DATA10

69

Линия данных

23

DATA9

68

Линия данных

24

DATA8

65

Линия данных

25

SCLK1

42

Клоки сериального порта 1

26

DR1

40

Входные данные сериального порта 1

27

RFS1

39

Входной фрейм сериального порта 1

28

TFS1

38

Выходной фрейм сериального порта 1

29

DT1

37

Выходные данные сериального порта 1

30

SCLK0

35

Клоки сериального порта 0

31

DR0

34

Входные данные сериального порта 0

32

RFS0

33

Входной фрейм сериального порта 0

33

TFS0

32

Выходной фрейм сериального порта 0

34

DT0

31

Выходные данные сериального порта 0

35

-IRQE (PF4)

26

Прерывание (программируемый вход/выход)

36

-CMS

25

Выход выбора Комбинированной Памяти

37

-IOMS

24

Выход выбора пространства IO

38

-DMS

22

Выход выбора Памяти Данных

39

-BMS

21

Выход выбора Байтовой Памяти

40

-RD

20

Строб чтения

41

-WR

19

Строб записи

42

36MHZ

 

Опорная частота – меандр 36МГц, 3.3 В.

43,44

VCC

 

Питание 3.3 В.

45,46

5V

 

Питание 5 В.

47,48,49,50

GND

 

Земля

 

ВНИМАНИЕ! При подключении пользовательских модулей расширения к изделию USB2185 следует учитывать, что для корректной работы изделия необходимо, чтобы в начале работы (до загрузки драйвера DSP в DSP) на программируемых входах/выходах PF0 – PF3 были следующие логические уровни: PF0, PF2 = 1;  PF1, PF3 = 0. Поэтому на пользовательском модуле расширения эти контакты должны быть (до загрузки DSP) либо в третьем состоянии (входы), либо не задействованы, либо на них должны быть поданы соответствующие логические уровни. После загрузки DSP состояние этих выводов может быть произвольным.

 

 

 

 

 

 

2.   Подключение изделия USB2185 к ПК

Сама процедура аппаратного подключения изделию USB2185 к компьютеру достаточно тривиальна: необходимо просто соединить Разъем USB изделия с любым свободным USB-портом компьютера при помощи кабеля, входящего в комплект штатной поставки. При этом подразумевается, что на компьютере уже установлена операционная система, способная корректно поддерживать функционирование шины USB: Windows2000\XP. Причем спецификацией USB предусматривается как "горячее" подключение или отключение устройств к/от шины USB (при работающем ПК), так и включение компьютера с уже подключенными устройствами USB.

Если Вы собираетесь использовать внешний источник питания, то для корректной работы нужно сначала подать питание с внешнего источника на изделие USB2185, а потом подключать изделие к ПК.

Шина USB предоставляет пользователям реальную возможность работать с периферийными устройствами в режиме Plug & Play. Это означает, что стандартом USB предусмотрено подключение устройства к работающему компьютеру, автоматическое его распознавание немедленно после подключения и последующая загрузка операционной системой соответствующих данному устройству драйверов.

При самом первом подсоединении изделия USB2185 к компьютеру (с помощью прилагаемого стандартного кабеля USB) операционная система должна запросить файлы драйвера для впервые подключаемого устройства. Тогда ей необходимо указать inf-файл с CD-ROM: \DRV\RtecUsb.inf. При этом операционная система сама скопирует файл драйвера в нужное ей место и сделает необходимые записи в своём реестре. После чего операционная система должна произвести так называемую операцию нумерации (enumeration, ‘переписи’), т.е. проинициализировать подключенное устройство. Такая процедура нумерации устройств, подключенных к шине USB, осуществляется динамически по мере их подключения или отключения без какого-либо вмешательства пользователя или клиентского программного обеспечения. По окончании нумерации должен загореться светодиод LINK. Это будет говорить о том, что подключенное устройство корректно опознано операционной системой и полностью готово к дальнейшей работе. Дополнительно проконтролировать правильность распознавания операционной системой подключенного модуля можно в “Device Manager” (“Диспетчер устройств”). Там должен появиться раздел “R-Technology Devices”, а в этом разделе  должно появиться устройство RT USB-2185 Unit (USB 2.0)”, как это, например, отображено на рисунке ниже:

 

 

При дальнейшей работе с изделием USB2185 операционная система уже будет знать, где находятся драйвера для данного типа устройства, и будет подгружать их автоматически по мере необходимости.

 

 

 

3.   Руководство программиста

3.1.   Введение

Основное назначение изделия USB2185 – служить базовым модулем для пользовательских устройств ввода/вывода и обработки информации. Структура изделия USB2185 позволяет создавать самые разнообразные устройства путем подключения к Внешнему разъему различных пользовательских модулей расширения.

Программирование устройств, созданных на базе изделия USB2185, состоит из двух этапов:

1)      программирование DSP, который управляет пользовательскими модулями расширения;

2)      программирование процесса передачи и обработки информации в ПК в среде Windows2000/XP, другими словами – управления изделием USB2185 со стороны ПК.

Возможности современного мощного цифрового сигнального процессора ADSP-2185M позволяют не только осуществлять управление пользовательскими модулями расширения и внешними устройствами в режиме жесткого реального времени, но и вести первичную обработку информации. Ресурсы DSP не расходуются на управление обменом данными с ПК и полностью высвобождаются для задач пользователя. Тем не менее, для упрощения  процесса программирования DSP, необходимо придерживаться общих рекомендаций, изложенных в главе Рекомендуемая структура драйвера DSP.

В комплект поставки изделия USB2185 входит штатная библиотека функций, облегчающая пользователю второй этап программирования изделия – управление модулем USB2185 со стороны ПК. Подробнее о работе со штатной библиотекой см главы Общий подход к работе со штатной библиотекой и Описание штатной библиотеки.

 

3.2.   Общий подход к работе со штатной библиотекой

 

Настоящий раздел описания предназначен для программистов, собирающихся писать свои собственные программы в среде Windows2000/XP для работы с изделиями USB2185. В качестве базового высокоуровневого языка при написании штатного программного обеспечения нами был выбран язык С++ (а конкретнее, диалект Borland С++ 5.02), поскольку он является одним из самых доступных, а также достаточно широко распространенных и применяемых языков. В комплект штатной поставки для изделия USB2185 входит драйвер устройства, готовая библиотека штатных подпрограмм, в виде динамически подключаемой библиотеки (DLL), и ряд законченных примеров программирования. В библиотеку мы попытались включить множество самых необходимых функций для облегчения пользователю процедуры написания собственных программ по управлению модулем USB2185. Данная библиотека позволяет Вам использовать практически все возможности модуля, не вдаваясь в тонкости их низкоуровневого программирования. Для тех кто сам будет писать софт для данного модуля наша библиотека может быть использована в качестве законченного и отлаженного примера, на основе которого Вы можете реализовать свои собственные алгоритмы.

Подробное описание всех функций штатной библиотеки см. в Описание штатной библиотеки.

Общий вид проекта DLL библиотеки в среде разработки Borland С++ 5.02 представлен на рисунке ниже:

            Собственно, сама библиотека содержит всего две экспортируемые функции, одна из которых, CreateInstance(), возвращает указатель на интерфейс модуля USB2185. В дальнейшем, используя этот указатель, можно осуществлять доступ ко всем интерфейсным функциям DLL библиотеки (см. исходные тексты примеров). !!!Внимание!!! Все интерфейсные функции (кроме ReadData() и WriteData()), строго говоря, не обеспечивают “потокобезопасную” работу DLL библиотеки. Поэтому, во избежание недоразумений, в многопоточных приложениях пользователь должен сам организовывать, если необходимо, корректную синхронизацию вызовов интерфейсных функций в различных потоках (используя, например, критические участки, мьютексы и т.д.).

            В сам файл библиотеки Rtusbapi.dll включена информация о текущей версии DLL. Для получения в Вашем приложении сведений о данной версии можно использовать вторую из экспортируемых функций из штатной библиотеки: GetDllVersion(). Кроме того, оперативно выявить текущую версию библиотеки можно, используя штатные возможности Windows. Например, в Windows Explorer щелкните правой кнопкой мышки над файлом DLL библиотеки Rtusbapi.dll. Во всплывшем на экране монитора меню следует выбрать опцию ‘Properties’, после чего на появившейся панели выбрать закладку ‘Version’. На этой закладке в строчке ‘File version’ можно без труда прочитать номер версии DLL библиотеки (две старшие цифры). Выглядит это примерно так:


Исходные тексты самой DLL библиотеки Вы можете найти на нашем CD–ROM’е в директории \DLL.

 

Для получения возможности вызова интерфейсных функций в Вашем проекте на Borland С++ Вам необходимо следующее:

·          создать файл проектов (например, для Borland С++ 5.02, test.ide);

·          добавить в него файл RTUSBAPI.LIB;

·          создать и добавить в проект Ваш файл с будущей программой (например, test.cpp);

·          включить в начало вашего файла заголовочный файл #include "RTUSBAPI.H", содержащий описание интерфейса модуля USB2185;

·          с помощью функции GetDllVersion() желательно сравнить версию используемой DLL библиотеки с версией текущего программного обеспечения;

·          вызвать функцию CreateInstance() для получения указателя на интерфейс модуля;

 

Теперь Вы можете писать свою программу и в любом месте, используя полученный указатель, вызывать соответствующие интерфейсные функции из штатной DLL библиотеки Rtusbapi.dll.

 

Приведем пример создания "скелета" типичной программы для управления изделием USB2185.

 

Итак, в самом начале мы получаем указатель на интерфейс модуля, вызвав функцию CreateInstance().

После этого, используя уже полученный указатель на интерфейс модуля, следует проинициализировать доступ к виртуальному слоту, к которому подключён модуль, применяя для этого интерфейсную функцию OpenDevice(). Если ошибки нет, то, в общем случае, какое-то устройство подключено к выбранному виртуальному слоту, и можно переходить к этапу его идентификации.

С помощью интерфейсной функции GetModuleName() нужно проверить название устройства, подключенного к выбранному виртуальному слоту, т.к. к нему, в принципе, может быть присоединено какое-нибудь другое, помимо USB2185, изделие, рассчитанное на работу с USB шиной. Если все в порядке и подключенное устройство – это изделие USB2185, то можно переходить к следующей стадии работы – загрузке драйвера DSP:

Для этого можно воспользоваться интерфейсной функцией LOAD_DSP().

Если в качестве параметра этой функции задать NULL, то в DSP начнет загружаться демонстрационный драйвер DSP, который хранится в теле штатной библиотеки в виде соответствующего ресурса. Подробнее об этом драйвере см. главу Рекомендуемая структура драйвера DSP . Исходный текст демонстрационного драйвера можно посмотреть в директории \DSP.

В случае успешного выполнения функции LOAD_DSP(), нужно проверить работоспособность загруженного драйвера с помощью интерфейсной функции MODULE_TEST(). Если и эта функция выполнена без ошибки, то это означает, что драйвер DSP успешно загружен и модуль полностью готов к работе.

Далее можно реализовывать любые необходимые алгоритмы работы с изделием USB2185.

В качестве иллюстрации приведем исходный текст очень простой консольной программы для работы с модулем USB2185:

#include <stdlib.h>

#include <stdio.h>

#include "Rtusbapi.h"      // заголовочный файл штатной библиотеки

using namespace USB2185;   // пространство имен модуля

IUSB2185 *pUSB2185;        // указатель на интерфейс модуля

 

char ModuleName[11];       // название модуля

DWORD DspVersion;          // текущий номер версии драйвера DSP

int main(void)

{

    // проверим версию DLL библиотеки

    if(GetDllVersion() != LC_CURRENT_VERSION_RTUSBAPI)

    {

      printf("Неправильная версия Dll!");

      return 1;

    }

    // получим указатель на интерфейс модуля

    pUSB2185 = static_cast<IUSB2185 *>(CreateInstance("USB2185"));

    if(pUSB2185 == NULL)

    {

      printf("Не могу получить указатель на интерфейс");

      return 1;                //выйдем из программы с ошибкой

    }

    // попробуем обнаружить какой-нибудь модуль

    // в нулевом виртуальном слоте

    if(!pUSB2185->OpenDevice(0))

    {

      printf("Не могу получить доступ к модулю!");

      return 1;                //выйдем из программы с ошибкой

    }

    // прочитаем название модуля в нулевом виртуальном слоте

    if(!pUSB2185->GetModuleName(ModuleName))

    {

      printf("Не могу прочитать название модуля!\n");

      return 1;                //выйдем из программы с ошибкой

    }

    // проверим: этот модуль - ' USB2185'?

    if(strcmp(ModuleName, "USB2185"))

    {

      printf(" В нулевом виртуальном слоте не 'USB2185'\n");

      return 1;                //выйдем из программы с ошибкой

    }

 

    // теперь можно попробовать загрузить из соответствующего ресурса // библиотеки Rtusbapi.dll код универсального драйвера DSP

    if(!pUSB2185->LOAD_DSP())

    {

      printf("Не выполнена функция LOAD_DSP()!");

      return 1;                //выйдем из программы с ошибкой

    }

 

    // проверим работоспособность загруженного драйвера DSP

    if(!pUSB2185->MODULE_TEST())

    {

      printf("Не выполнена функция MODULE_TEST()!");

      return 1;                //выйдем из программы с ошибкой

    }

 

    // получим версию загруженного драйвера DSP

    if(!pUSB2185->GET_DSP_VERSION(&DspVersion))

    {

      printf("Не выполнена функция GET_DSP_VERSION()!");

      return 1;                //выйдем из программы с ошибкой

    }

 

    printf("Модуль USB2185 полностью готов к работе!");

 

    // далее можно располагать функции для непосредственного

    // управления модулем!

    . . . . . .

 

    // завершим работу с модулем

    if(!pUSB2185->ReleaseDevice())

    {

      printf("Не выполнена функция ReleaseDevice()!");

      return 1;                //выйдем из программы с ошибкой

    }

 

    // выйдем из программы

    return 0;

}

 

 

 

3.3.   Рекомендуемая структура драйвера DSP

 

3.3.1.   Рекомендуемые переменные драйвера DSP

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3.4.   Описание штатной библиотеки

 

3.4.1. Функции общего характера

Получение версии DLL библиотеки

Формат:    LPVOID         GetDllVersion(void)

Назначение:

            Данная функция является одной из двух экспортируемых из штатной DLL функцией и возвращает версию используемой DLL библиотеки. Рекомендованную последовательность вызовов интерфейсных функций см. в Общий подход к работе со штатной библиотекой

Передаваемые параметры: нет.

Возвращаемое значение: номер версии DLL библиотеки.

Получение указателя на интерфейс модуля

Формат:    LPVOID     CreateInstance(const PCHAR const DeviceName)

Назначение:

            Данная функция должна обязательно вызываться в начале каждой пользовательской программы, работающей с изделиями USB2185. Она является одной из двух экспортируемых из штатной DLL функцией и возвращает указатель на интерфейс для устройства с названием DeviceName. Все интерфейсные функции штатной DLL библиотеки вызываются именно через этот возвращаемый указатель. Рекомендованную последовательность вызовов интерфейсных функций см. в Общий подход к работе со штатной библиотекой

Передаваемые параметры:

·       DeviceName – строка с названием устройства (для данного изделия это – USB2185).

Возвращаемое значение:     В случае успеха — указатель на интерфейс, иначе — NULL.

Функция завершения работы с модулем

Формат:    BOOL   ReleaseDevice(void)

Назначение:

            Данная интерфейсная функция реализует корректное высвобождение интерфейсного указателя, проинициализированного с помощью интерфейсной функции CreateInstance().  Используется для аккуратного завершения сеанса работы с модулем (если предварительно удачно выполнилась функция CreateInstance()). !!!Внимание!!! Данная функция должна обязательно вызываться в Вашем приложении перед непосредственным выходом из него во избежания утечки ресурсов компьютера. Рекомендованную последовательность вызовов интерфейсных функций см. в Общий подход к работе со штатной библиотекой

Передаваемые параметры: нет.

Возвращаемое значение:        TRUE – функция успешно выполнена;
                                                     FALSE– функция не выполнена.

Инициализация доступа к модулю

Формат:    BOOL   OpenDevice(const WORD VirtualSlot)

Назначение:

            С программной точки зрения, подсоединенное к компьютеру изделие USB2185 можно рассматривать как устройство, подключённое к некоему виртуальному слоту с сугубо индивидуальным номером. Основное  назначение данной интерфейсной функции – определить, находится ли хоть какое-нибудь устройство в заданном виртуальном слоте. Если функция OpenDevice() успешно выполнилась для заданного виртуального слота, то далее следует убедиться, что к этому слоту подключен именно модуль USB2185 (функция GetModuleName()). И если это так – можно переходить непосредственно к загрузке модуля и его последующему управлению с помощью соответствующих интерфейсных функций библиотеки Rtusbapi.dll. Рекомендованную последовательность вызовов интерфейсных функций см. в Общий подход к работе со штатной библиотекой

Передаваемые параметры:

·       VirtualSlot – номер виртуального слота, к которому, как предполагается, подключен модуль USB2185.

Возвращаемое значение:        TRUE – устройство находится в выбранном виртуальном слоте и можно попробовать определить его название с помощью интерфейсной функции GetModuleName() (см. ниже);
FALSE – никакого устройства в выбранном виртуальном слоте нет (может, стоит попробовать другой номер виртуального слота).

Освобождение виртуального слота

Формат:    BOOL   CloseDevice (void)

Назначение:

            Данная интерфейсная функция прерывает, если необходимо, всякое взаимодействие с текущим виртуальным слотом, т.е. выполняет его освобождение (и связанных с ним ресурсов компьютера). После её применения всякий доступ к модулю USB2185 становится невозможным. Для возобновления нормального доступа к устройству необходимо вновь воспользоваться интерфейсной функцией OpenDevice(). Таким образом, эта функция, по своей сути, противоположна интерфейсной функции OpenDevice(). Фактически данная функция используется в таких интерфейсных функциях как OpenDevice() и ReleaseDevice().

Передаваемые параметры: нет.

Возвращаемое значение:        TRUE – функция успешно выполнена;
                                                     FALSE– функция не выполнена.

Получение названия модуля

Формат:         BOOL   GetModuleName(PCHAR const ModuleName)

Назначение:

            Так как интерфейсная функция OpenDevice() определяет только наличие какого-нибудь устройства USB в выбранном виртуальном слоте, то, очевидно, необходимо каким-то образом это устройство идентифицировать. В принципе, к данному виртуальному слоту может быть подключено какое-нибудь другое (помимо модуля USB2185) изделие, рассчитанное на работу с шиной USB. Данная интерфейсная функция позволяет получить название подключенного к слоту модуля. Массив под название модуля ModuleName (не менее 6 символов плюс признак конца строки ‘\0’, т.е. нулевой байт) должен быть заранее определен. Рекомендованную последовательность вызовов интерфейсных функций см. в Общий подход к работе со штатной библиотекой

Передаваемые параметры:

·       ModuleName  возвращается строка, не менее 11 символов, с названием модуля (в нашем случае это должна быть строка USB2185).

Возвращаемое значение:        TRUE – функция успешно выполнена;
                                                     FALSE– функция не выполнена.

Получение версии BIOS интерфейсной части

Формат:         BOOL   GetAvrBiosVersion(DWORD * const AvrBiosVersion)

Назначение:

            Данная интерфейсная функция в переменной AvrBiosVersion возвращает номер версии BIOS, зашитого в микроконтроллер AVR, управляющий интерфейсной частью.

Передаваемые параметры:

·       AvrBiosVersion – номер версии BIOS.

Возвращаемое значение:        TRUE – функция успешно выполнена;
                                                     FALSE– функция не выполнена.

Загрузка драйвера DSP

Формат:         BOOL   LOAD_DSP(const PCHAR FileName = NULL)

Назначение:

            Данная интерфейсная функция выполняет операцию загрузки драйвера DSP модуля. Файл FileName с кодом драйвера должен находиться в текущей директории Вашего приложения. В DLL библиотеке есть дополнительная возможность загружать драйвер, содержимое которого хранится в самом теле библиотеки в виде соответствующего ресурса. Для этого достаточно параметр FileName задать в виде NULL. NULL является также значением по умолчанию для параметра FileName. Рекомендованную последовательность вызовов интерфейсных функций см. в Общий подход к работе со штатной библиотекой.

Передаваемые параметры:

·       FileName – строка с названием файла, содержащим код загружаемой управляющей программы. Если данный параметр задан как NULL, то загрузка модуля будет осуществляться тем драйвером, который находится в виде ресурса в теле штатной DLL библиотеки.

Возвращаемое значение:        TRUE – функция успешно выполнена;
                                                     FALSE– функция не выполнена.

Проверка загрузки модуля

Формат:    BOOL        MODULE_TEST(void)

Назначение:

            Данная интерфейсная функция проверяет правильность загрузки DSP и его работоспособность. !!!Внимание!!! Данная функция работает надлежащим образом только после выполнения интерфейсной функции LOAD_DSP().Рекомендованную последовательность вызовов интерфейсных функций см. в Общий подход к работе со штатной библиотекой.

Передаваемые параметры: нет

Возвращаемое значение:        TRUE – драйвер DSP успешно загружен и функционирует надлежащим образом,

                                                     FALSE – произошла ошибка загрузки или функционирования драйвера DSP.

Получение версии загруженного драйвера DSP

Формат:    BOOL        GET_DSP_VERSION(DWORD * const DspVersion)

Назначение:

            Данная интерфейсная функция позволяет выявлять номер текущей версии уже загруженного в модуль драйвера DSP. В случае успешного выполнения этой функции в переменной DspVersion возвращается текущий номер версии драйвера. !!!Внимание!!! Данная функция работает надлежащим образом только после выполнения интерфейсных функций LOAD_DSP() и MODULE_TEST(). Рекомендованную последовательность вызовов интерфейсных функций см. в Общий подход к работе со штатной библиотекой.

Передаваемые параметры:

·        DspVersion – в переменной возвращается текущий номер версии загруженного в модуль драйвера DSP.

Возвращаемое значение:        TRUE – функция успешно выполнена;
                                                     FALSE– функция не выполнена.

Сброс DSP на модуле

Формат:    BOOL        RESET_DSP(void)

Назначение:

            Данная интерфейсная функция производит сброс (RESET) DSP модуля. Используется при перезагрузке драйвера DSP или для полной остановки работы DSP. Необходимо помнить, что после выполнения данной функции работа DSP устройства полностью останавливается, и для приведения его снова в рабочее состояние требуется перезагрузить драйвер DSP (например, с помощью функции LOAD_DSP()).

Передаваемые параметры: нет

Возвращаемое значение:        TRUE – функция успешно выполнена;
                                                     FALSE– функция не выполнена.

Передача номера команды в драйвер DSP

Формат:    BOOL   SEND_COMMAND(const WORD Command)

Назначение:

            Данная интерфейсная функция передаёт в рекомендованную переменную D_COMMAND номер требуемой команды и вызывает командное прерывание IRQ2 в DSP модуля. В ответ на это прерывание драйвер DSP выполняет действия, соответствующие номеру переданной команды. !!!Внимание!!! Данная функция работает надлежащим образом только после выполнения интерфейсных функции LOAD_DSP() и MODULE_TEST(). Рекомендованную последовательность вызовов интерфейсных функций см. в Общий подход к работе со штатной библиотекой.

Передаваемые параметры:

·       Command – номер команды, передаваемый в драйвер DSP.

Возвращаемое значение:        TRUE – функция успешно выполнена;
                                                     FALSE– функция не выполнена.

Получение описания ошибок выполнения функций

Формат:    int      GetLastErrorString(LPTSTR const lpBuffer, const DWORD nSize)

Назначение:

            Если в процессе работы с DLL библиотекой Rtusbapi.dll какая-нибудь интерфейсная функция штатной библиотеки вернула ошибку, то только непосредственно после этого с помощью вызова данной интерфейсной функции можно получить краткое толкование произошедшего сбоя. !!!Внимание!!! Данная интерфейсная функция не выполняет классификацию ошибок для интерфейсных функций ReadData() и WriteData(). Т.к. эти функции фактически являются слепком со стандартных Windows API функций ReadFile () и WriteFile(). Для выявления ошибок их выполнения следует пользоваться классификацией ошибок, присущей системе Windows.

Передаваемые параметры:

·       lpBuffer – указатель на строку, в которой функция вернет описание ошибки;

·       nSize – длина строки (рекомендуется 128 символов).

Возвращаемое значение:        В случае успеха – кол-во скопированных в буфер символов;
                                                     в противном случае – ноль.

 


3.4.2. Функции для доступа к памяти DSP модуля

            Интерфейсные функции данного раздела обеспечивают доступ, как к отдельным ячейкам, так и к целым массивам памяти DSP. Эта возможность позволяет программисту работать с модулем напрямую, непосредственно обращаясь к соответствующим ячейкам памяти. При этом для работы с этими функциями, в принципе, совсем не требуется загруженного в модуль драйвера DSP.

Чтение слова из памяти данных DSP

Формат:    BOOL   GET_DM_WORD(WORD Address, SHORT * const Data)

Назначение:

            Данная функция считывает значение слова, находящееся по адресу Address в памяти данных DSP модуля.

Передаваемые параметры:

·       Address – адрес ячейки в памяти данных DSP, значение которой необходимо считать;

·       Data – указатель на переменную, куда функция положит считанное 16ти  битное слово.

Возвращаемое значение:        TRUE – функция успешно выполнена;
                                                     FALSE– функция не выполнена.

Чтение слова из памяти программ DSP

Формат:    BOOL   GET_PM_WORD(WORD Address, LONG * const Data)

Назначение:

            Данная функция считывает значение слова, находящееся по адресу Address в памяти программ DSP модуля.

Передаваемые параметры:

·       Address – адрес ячейки в памяти программ DSP, значение которой необходимо считать;

·       Data – указатель на переменную, куда функция положит считанное 24х битное слово.

Возвращаемое значение:        TRUE – функция успешно выполнена;
                                                     FALSE– функция не выполнена.

Запись слова в память данных DSP

Формат:    BOOL   PUT_DM_WORD(WORD Address, SHORT Data)

Назначение:

            Данная функция записывает значение Data в ячейку с адресом Address в памяти данных DSP модуля.

Передаваемые параметры:

·       Address – адрес ячейки в памяти данных DSP, куда необходимо записать значение Data;

·       Data – значение записываемого 16ти битного слова.

Возвращаемое значение:        TRUE – функция успешно выполнена;
                                                     FALSE– функция не выполнена.

Запись слова в память программ DSP

Формат:    BOOL   PUT_PM_WORD(WORD Address, LONG Data)

Назначение:

            Данная функция записывает значение Data в ячейку с адресом Address в памяти программ DSP модуля.

Передаваемые параметры:

·       Address – адрес ячейки в памяти программ DSP, куда записывается значение Data;

·       Data – значение записываемого 24х битного слова.

Возвращаемое значение:        TRUE – функция успешно выполнена;
                                                     FALSE– функция не выполнена.

Чтение массива слов из памяти данных DSP

Формат:    BOOL        GET_DM_ARRAY(WORD BaseAddress, WORD NPoints,
SHORT * const Buffer)

Назначение:

            Данная функция считывает массив слов длиной NPoints в буфер Buffer, начиная с адреса ячейки BaseAddress в памяти данных DSP модуля. Буфер Buffer надлежащей длины необходимо заранее определить.

Передаваемые параметры:

·       BaseAddress – стартовый адрес в памяти данных DSP, начиная с которого производится чтение массива;

·       NPoints – длина считываемого массива;

·       Buffer – указатель на буфер, в который передаются считываемые значения.

Возвращаемое значение:        TRUE – функция успешно выполнена;
                                                     FALSE– функция не выполнена.

Чтение массива слов из памяти программ DSP

Формат:   BOOL     GET_PM_ARRAY(WORD BaseAddress, WORD NPoints,
LONG * const Buffer)

Назначение:

            Данная функция считывает массив слов длиной NPoints в буфер Buffer, начиная с адреса ячейки BaseAddress в памяти программ DSP модуля. Буфер Buffer надлежащей длины необходимо заранее определить. При использовании этой функции следует помнить, что одно слово памяти программ DSP является 24х битным.

Передаваемые параметры:

·       BaseAddress – стартовый адрес в памяти программ DSP, начиная с которого производится чтение массива;

·       NPoints – число считываемых 24х битных слов;

·       Buffer – указатель на буфер, в который передаются считываемые значения.

Возвращаемое значение:        TRUE – функция успешно выполнена;
                                                     FALSE– функция не выполнена.

Запись массива слов в память данных DSP

Формат:   BOOL     PUT_DM_ARRAY(WORD BaseAddress, WORD Npoints,
SHORT * const Buffer)

Назначение:

            Данная функция записывает массив слов длиной NPoints из буфера Buffer в память данных DSP модуля, начиная с адреса BaseAddress.

Передаваемые параметры:

·       BaseAddress – стартовый адрес в памяти данных DSP, начиная с которого производится запись массива;

·       NPoints – длина записываемого массива;

·        Buffer – указатель на буфер, из которого идет запись.

Возвращаемое значение:        TRUE – функция успешно выполнена;
                                                     FALSE– функция не выполнена.

Запись массива слов в память программ DSP

Формат:   BOOL     PUT_PM_ARRAY(WORD BaseAddress, WORD NPoints,
LONG *const Buffer)

Назначение:

            Данная функция записывает массив слов длиной NPoints из буфера Buffer в память программ DSP модуля, начиная с адреса BaseAddress. При использовании этой функции следует помнить, что одно слово памяти программ DSP является 24х битным.

Передаваемые параметры:

·        BaseAddress – стартовый адрес в памяти программ DSP, начиная с которого производится запись массива;

·        NPoints – число записываемых 24х битных слов;

·        Buffer – указатель на буфер, из которого идет запись.

Возвращаемое значение:        TRUE – функция успешно выполнена;
                                                     FALSE– функция не выполнена.

Чтение переменной штатного драйвера DSP

Формат:    BOOL   GET_VAR_WORD(WORD Address, SHORT * const Data)

Назначение:

            Данная функция осуществляет считывание 16ти битной переменной штатного драйвера, расположенной по адресу Address в 24х битной памяти программ DSP модуля (см. Рекомендуемые переменные драйвера DSP).

Передаваемые параметры:

·       Address – адрес ячейки переменной драйвера в памяти программ DSP, значение которой необходимо считать;

·       Data – указатель на переменную, куда функция положит считанное 16ти  битное значение переменной штатного драйвера.

Возвращаемое значение:        TRUE – функция успешно выполнена;
                                                     FALSE– функция не выполнена.

Запись переменной штатного драйвера DSP

Формат:    BOOL   PUT_VAR_WORD(WORD Address, SHORT Data)

Назначение:

            Данная функция осуществляет запись 16ти битного значения Data в переменную штатного драйвера, расположенную по адресу Address в 24х битной памяти программ DSP модуля (см. Рекомендуемые переменные драйвера DSP).

Передаваемые параметры:

·       Address – адрес ячейки переменной драйвера в памяти программ DSP, куда необходимо записать значение Data;

·       Data – значение записываемого 16ти битного значения переменной штатного драйвера.

Возвращаемое значение:        TRUE – функция успешно выполнена;
                                                     FALSE– функция не выполнена.

 


3.4.3. Функции ввода данных

            Интерфейсные функции штатной DLL библиотеки позволяют реализовывать разнообразные алгоритмы ввода информации (независимо от состояния вывода). Изделие USB2185 с точки зрения состояния ввода данных, может находиться в двух режимах:

1.       режим “покоя”;

2.       потоковый (перманентный) ввод данных.

            Функция START_READ() позволяет переводить модуль во второе из этих состояний, а STOP_READ() ¾ в первое. При этом подразумевается, что драйвер DSP будет строго следовать рекомендованной процедуре ввода информации (см. Рекомендуемая структура драйвера DSP). При этом сами вводимые в РС данные модуль должен хранить в двойной циклический FIFO буфере ввода, который расположен в памяти данных DSP модуля. Для извлечения из модуля этих данных следует пользоваться функцией ReadData(). Примеры корректного применения интерфейсных функций для ввода данных можно найти в директориях \Examples\ReadTest и \Examples\ReadWrite.

Запуск ввода данных

Формат:    BOOL   START_READ(void)

Назначение:

 Данная функция запускает DSP на перманентный ввод данных в ПК. Извлечение из модуля требуемой информации можно осуществлять с помощью интерфейсной функции ReadData.  

Передаваемые параметры: нет

Возвращаемое значение:        TRUE – функция успешно выполнена;
                                                     FALSE– функция не выполнена.

Останов ввода данных

Формат:    BOOL   STOP_READ(void)

Назначение:

            Данная функция останавливает процедуру ввода данных из модуля.

Передаваемые параметры: нет

Возвращаемое значение:        TRUE – функция успешно выполнена;
                                                     FALSE– функция не выполнена.

Получение данных из модуля

Формат: BOOL  ReadData(SHORT * const Buffer, DWORD * const NumberOfWordsToRead,
LPDWORD *NumberOfBytesRead,
LPOVERLAPPED Overlapped)

Назначение:

            Данная функция обеспечивает асинхронный режим получения очередных NumberOfWordsToRead данных из FIFO буфера ввода, расположенного в памяти данных DSP модуля. Величина NumberOfWordsToRead должна быть в диапазоне от 32 до (1024*1024) и должна быть кратной 32. В противном случае интерфейсная функция сама подкорректирует величину переменной NumberOfWordsToRead и по возвращении из ReadData() в ней будет находиться истинное значение количества полученных с модуля данных.

            Поскольку данная функция осуществляет именно асинхронный режим приёма информации, ReadData() может вполне законно завершиться перед тем, как прекратится собственно сама операция чтения всего заказанного массива данных. При этом функция ReadData() должна вернуть FALSE, а NumberOfBytesRead может быть равно нулю. В этом случае следующим шагом необходимо вызвать Windows API функцию GetLastError() и убедиться, что она вернула ERROR_IO_PENDING. Это будет означать, что все в порядке и собственно операция чтения данных из модуля продолжает успешно выполняться. Окончание операции необходимо впоследствии отслеживать с помощью соответствующих Windows API функций (WaitForSingleObject() или GetOverlappedResult()), использующих обнаружение события, предварительно указанного в структуре Overlapped. Подробнее см. хелп на Windows API функцию ReadFile(), а также исходные тексты прилагаемой к модулю законченной программы в директории \Examples\ReadTest.

            !!!ВНИМАНИЕ!!! Для того чтобы эта функция корректно функционировала, строго необходимо, чтобы предварительно ввод данных был разрешён с помощью интерфейсной функции START_READ().

Передаваемые параметры:

·       Buffer – указатель на массив, в который складываются принимаемые из модуля данные;

·       NumberOfWordsToRead – количество данных (минимум – 32, максимум –1024*1024), которые необходимо получить из модуля и положить в Buffer;

·       NumberOfBytesRead – количество реально полученных байтов;

·       Overlapped – указатель на OVERLAPPED структуру (см. исходники примеров).

Возвращаемое значение:        TRUE – функция успешно выполнена;

                                                     FALSE – функция не выполнена (см. замечания в ‘Назначении’ к этой функции).

 


3.4.4. Функции вывода данных

            Интерфейсные функции штатной DLL библиотеки позволяют реализовывать разнообразные алгоритмы вывода информации (независимо от состояния ввода). Изделие USB2185 с точки зрения вывода данных, может находиться в двух состояниях:

1.         режим “покоя”;

2.         потоковая (перманентная) выдача данных.

            Функция START_WRITE() позволяет переводить модуль во второе из этих состояний, а STOP_WRITE() ¾ в первое. При этом подразумевается, что драйвер DSP будет строго следовать рекомендованной процедуре вывода информации (см. Рекомендуемая структура драйвера DSP). Для передачи данных в модуль уже в процессе работы (т.е. после запуска вывода) следует пользоваться функцией WriteData(). Примеры корректного применения интерфейсных функций для вывода данных можно найти в директориях \Examples\WriteTest и \Examples\ReadWrite.

Запуск вывода данных

Формат:    BOOL   START_WRITE(void)

Назначение:

Данная функция запускает устройство на перманентный вывод данных из ПК. Саму передачу данных в модуль (уже после запуска) можно осуществлять с помощью интерфейсной функции WriteData().

Передаваемые параметры: нет

Возвращаемое значение:        TRUE – функция успешно выполнена;
                                                     FALSE– функция не выполнена.

Останов вывода данных

Формат:    BOOL   STOP_WRITE(void)

Назначение:

            Данная функция останавливает передачу данных в модуль.

Передаваемые параметры: нет

Возвращаемое значение:        TRUE – функция выполнена;  FALSE– функция не выполнена.

Передача данных на модуль

Формат:    BOOL   WriteData(WORD *Buffer, DWORD *NumberOfWordsToWrite,
LPDWORD *NumberOfBytesWritten,
LPOVERLAPPED Overlapped)

Назначение:

            Данная функция обеспечивает асинхронный режим передачи NumberOfWordsToWrite данных из массива Buffer в модуль. Величина NumberOfWordsToWrite должна быть в диапазоне от 32 до (1024*1024) и должна быть кратна 32. В противном случае интерфейсная функция сама подкорректирует величину переменной NumberOfWordsToWrite, и по возвращении из WriteData() в ней будет находиться истинное значение количества передаваемых в модуль данных.

            Поскольку данная функция осуществляет именно асинхронный режим передачи информации, WriteData() может вполне законно завершиться перед тем, как прекратится собственно сама операция записи в модуль всего заданного массива данных. При этом функция WriteData() может вернуть FALSE, а NumberOfBytesWritten может быть равно нулю. В этом случае следующим шагом необходимо вызвать Windows API функцию GetLastError() и убедиться, что она вернула ERROR_IO_PENDING. Это будет означать, что все в порядке и собственно операция записи данных в модуль продолжает успешно выполняться. Окончание операции необходимо впоследствии отслеживать с помощью соответствующих Windows API функций (WaitForSingleObject() или GetOverlappedResult()), использующих обнаружение события, предварительно указанного в структуре Overlapped. Подробнее см. хелп на Windows API функцию WriteFile(), а также исходные тексты прилагаемых к модулю законченных программ в директориях \Example\WriteTest и \Example\ReadWrite.

            !!!ВНИМАНИЕ!!! Для того чтобы эта функция корректно функционировала, строго необходимо, чтобы предварительно работа ЦАП была разрешена с помощью интерфейсной функции START_WRITE().

Передаваемые параметры:

·       Buffer – указатель на массив, из которого берутся передаваемые в модуль данные для FIFO буфера ЦАП;

·       NumberOfWordsToWrite – количество отсчетов (минимум – 32, максимум – 1024*1024), которые необходимо передать в модуль;

·       NumberOfBytesWritten – количество реально переданных байтов;

·       Overlapped – указатель на OVERLAPPED структуру (см. исходники примеров).

Возвращаемое значение:        TRUE – функция успешно выполнена;

                                                     FALSE – функция не выполнена (см. замечания в ‘Назначение’ к этой функции).

 


 

 

4.   Примеры работы с изделием USB2185

 

5.   Приложения

Приложение А. Утилита прошивки BIOS изделия USB2185

Приложение B.



[1] Для увеличения скорости передачи данных в ПК до 12 х 106 байт/с необходимо прошить интерфейсную часть специализированным BIOS (см. Приложение А).

[2] Для увеличения скорости передачи данных из ПК до 7 х 106 байт/с необходимо прошить интерфейсную часть специализированным BIOS (см. Приложение А).