Ft232rl подключение к компьютеру
Работа с драйверами для FT232RL под ОС Windows
Перед тем, как начать работу с микросхемой FT232RL, нам, естественно, необходимо установить для нее драйвера. Процесс этот абсолютно несложный (во всяком случае, в Windows, с другими системами я не знако́м), однако, есть тут один подводный камень.
Дело в том, что компания FTDI (производитель данных чипов) с сентября-октября 2014г. решила бороться с китайцами, массово подделывающими ее микросхемы. Причем, для этой борьбы не нашла ничего более подходящего, чем тупо «портить» контрафактные чипы путем перезаписи их PID’ов с правильного значения 6001 на кривое 0000. Естественно, после такой процедуры пообщаться с FT232RL обычным способом уже́ не получается (да и комп перестает ее видеть). Подробное описание проблемы и способы лечения есть здесь, здесь, здесь, да и вообще – можно просто погуглить «ft232rl драйвер pid 0000». Ну а вкратце суть проблемы была такова.
Windows 7 (за другие ОС не скажу – не знаю) в определенный момент автоматически обновлялся, причем данное обновление затрагивало и драйвер для чипов FTDI. Этот новый драйвер, в отличие от старого, отказывался работать с поддельной микросхемой FT232RL, поскольку считал, что это некое «неправильное устройство». Обращаю внимание – автоматическое обновление не трогало чип, ибо это, по-ходу, противоречит каким-то там законам. Однако, поскольку ни хера не работало, новые дрова вынуждали пользователя лезть на сайт FTDI и скачивать самую свежую версию драйверов (мы ведь все уверены, что новое – гораздо лучше старого, да?). Новые дрова поставлялись не в виде набора отдельных файлов (как раньше), а в виде единого экзешника. Ну и при его запуске пользователь, как обычно, тупо нажимал «Принимаю», не читая лицензионное соглашение, которое прямо говорило: «Данный софт может убить ваш чип наглухо». Ну и всё, после этого свежие дрова с чистой совестью заменяли PID микросхемы с 6001 на 0000, и она вообще переставала видеться в системе.
Прочитав всё вышесказанное, можно, конечно, воскликнуть «ужоснах, плохой чип, он мне не нужен!». Однако, не всё так страшно (во всяком случае, не настолько, чтобы сразу же отказываться от довольно неплохой микросхемы). Насколько я понял, чтобы избежать конфликтов драйвера с поддельным чипом, достаточно сделать всего две вещи:
• устанавливать не самые свежие дрова с сайта FTDI, а скачивать старые и проверенные (версии не выше 2.08.14);
• перед установкой дров принудительно отключить обновление драйверов (см. далее).
Всё, после этого можно спокойно работать хоть с настоящей, хоть с поддельной FT232RL и особо не беспокоиться за последствия.
Надо сказать, что драйвер версии 2.08.14 был выпущен аж в 2011 году, и предназначен был для работы со следующими системами: Windows 2000, XP, Server 2003, Vista, Server 2008, Windows 7 и Server 2008 R2, при этом «разрядность ОС» может быть как 32, так и 64 бита. Однако, данные дрова нормально работают и под Win8, и под Win10. И таким образом получаем, что предлагаемая версия драйвера хотя и старая, но совместимая со всеми широко распространенными на данный момент форточками, а посему никаких допиливаний и танцев с бубнами вам с ним совершать не придется.
Перед тем, как переходить к описанию собственно процесса установки дров, я бы хотел сказать несколько общих слов о них самих. Вообще говоря, драйвер для FT232RL как бы состоит из двух частей (в связи с чем он называется Combined Driver Model или просто CDM):
• драйвер виртуального COM-порта (Virtual COM Port, VCP);
• драйвер «прямого» доступа (Direct Driver, D2XX).
Архитектура пакета CDM для операционок Windows выглядит так:
Дрова VCP создают в компе виртуальный COM-порт, через который можно общаться с микросхемой FT232RL как с обычным устройством RS-232. Данная фича весьма и весьма удобна: не надо переписывать «старые» программы, которые были написаны под аппаратный COM-порт. К тому же, написание даже «нового» софта зачастую реализуют на том же COM-порте. Причина как всегда банальна – он очень прост с точки зрения программирования. Ну а если функционала COM’а недостаточно, тогда вступают в бой дрова D2XX. Они позволяют софту со стороны компа достучаться до FT232RL напрямую через функции DLL, т.е. работать с микросхемой, как с полноценным USB-устройством. Отмечу, что при использовании D2XX программисту доступны такие фичи, которые никогда не предоставило бы ему API COM-порта (например, перевод USB-устройства в различные режимы работы, запись данных в EEPROM микросхемы и т.д.). Подробное описание функций DLL и примеры соответствующих проектов есть на сайте компании FTDI. Обратите внимание, что хотя дрова VCP и D2XX поставляются в одном пакете CDM, приложение со стороны компа не может использовать оба этих интерфейса одновременно (т.е. в один момент времени может быть задействован либо прямой доступ к чипу, либо доступ через COM-порт).
Перечень операционных систем Windows (как 32-х, так и 64-х битных), поддерживающих предлагаемую версию CDM-драйвера:
• Windows Server 2003;
• Windows Server 2008;
• Windows Server 2008 R2;
* - вживую не проверялся, но должен работать
Обратите внимание, что на сайте FTDI есть также дрова и для Линукса, и для MacOS, и даже для Андроида. Однако, в данных ОС я с FT232RL никогда не работал, а посему сказать что-либо по этому поводу не могу – пользователям перечисленных систем предлагаю разобраться в вопросе самостоятельно.
Как говорил ранее, установка драйверов для FT232RL под Windows не отличается какой-то особой сложностью. У меня на компе стои́т WinXP SP2, а у соседа – Win7, поэтому я проиллюстрирую инсталляцию дров для FT232RL именно на них. На мой взгляд, такой выбор будет вполне оправданным: во-первых, на данный момент времени эти операционки являются самыми распространенными, а во-вторых – судя по документации, инсталляция драйвера для Win8 и Win10 практически полностью аналогична таковой для Win7. Ну а если уж возникнут какие-либо сложности, на сайте FTDI есть куча оригинальных апнотов для каждой ОС с подробными инструкциями по установке (кстати, в этих документах также описаны и некоторые проблемы, которые могут возникнуть при инсталляции дров).
Итак, для установки дров чипа FT232RL нам необходимо будет выполнить следующие действия (на примере Windows XP SP2 и Windows 7):
• от греха подальше сразу принудительно отключаем обновление дров через узел «Window Update» (особенно это актуально для жутко умных и самостоятельных Win7/8/10). Нажимаем на клавиатуре кнопки «Win» + «Pause/Break» и попадаем в окно «Свойства системы». Дальнейшие действия для разных ОС будут такими:
WinXP: Вкладка «Оборудование» > Кнопка «Узел Windows Update» > Пункт «Никогда не использовать Windows Update для поиска драйверов» > Кнопка «ОК»:
Win7/8/10: Ссылка «Дополнительные параметры системы» > Вкладка «Оборудование» > Кнопка «Параметры установки устройств» > Пункт «Нет, предоставить возможность выбора» > Пункт «Никогда не устанавливать драйверы из Центра обновления Windows» > Кнопка «Сохранить»:
Обратите внимание: окно «Свойства системы» пока закрывать не надо.
• далее я бы еще порекомендовал на всякий случай вообще отключить комп от Интернета (выдернуть шнур или хотя бы отключить сетевую карту), но это, наверное, совсем уж паранойя. А вот что точно не помешает, так это попробовать удалить ранее установленные драйвера от FTDI. Продукцию данной конторы используют многие производители, и далеко не факт, что какая-нибудь железка, которую втыкали в комп несколько лет назад, не установила соответствующие дрова;
• скачиваем CDM-драйвер версии 2.08.14, если этого не было сделано раньше;
• распаковываем скачанный архив в какую-нибудь папку. Пусть для примера адрес папки с дровами будет таким: D:\DRV\FTDI_Driver_2.08.14;
• перед установкой драйвера заходим в «Диспетчер устройств» (соответствующая кнопка на вкладке «Оборудование» в ранее открытом окне «Свойства системы») и смотрим список установленного оборудования в разделах «Контроллеры универсальной последовательной шины USB» и «Порты (COM и LPT)» (если таковой вообще имеется):
(здесь и далее: если картинка двойная, то слева показан WinXP, справа – Win7).
• втыкаем устройство с чипом FT232RL в USB-порт компа. Возможно (возможно) сразу же вылезет какой-нибудь «Мастер автоматической установки нового оборудования». В этом случае твердой рукой отправляем его спать – жмем «Отмена». Ну а далее вновь обращаем свой взор на «Диспетчер устройств»: в разделе «Другие устройства» у нас должен появиться неизведанный дывайс «FT232R USB UART» (ну, или что-то подобное):
• щелкаем по неопознанному устройству правой кнопкой мыши и в вывалившемся меню выбираем пункт «Обновить драйвер»:
• у нас должен запуститься «Мастер обновления оборудования». Выбираем «Установка из указанного места» (WinXP) или «Выполнить поиск драйверов на этом компьютере» (Win7). В случае Windows XP потребуется еще нажать кнопку «Далее»:
• в открывшемся окне указываем мастеру место нахождения дровяных файлов (напомню, в нашем случае это D:\DRV\FTDI_Driver_2.08.14) и нажимаем «Далее»:
• если система начнет лаяться на то, что устанавливаемые дрова не имеют сертификации WHQL, жмем «Все равно продолжить»;
• наблюдаем, как красиво устанавливаются необходимые файлы драйвера D2XX. При этом в папке «\WINDOWS\inf» создаются соответствующие файлы *.inf и *.pnf, в папку «\WINDOWS\system32» копируются библиотеки «ftd2xx.dll», «ftbusui.dll» и «FTLang.dll», а в папку «\WINDOWS\system32\drivers» – драйвер шины «ftdibus.sys»:
• ну и в окне завершения работы мастера обновления оборудования жмем кнопку «Готово» или «Закрыть»:
• если после этого вдруг опять сам по себе запустится мастер установки нового оборудования, жмем «Отмена» – любую самодеятельность ОС нужно жестко пресекать. Ну а дальше снова смотрим в «Диспетчер устройств»:
Как видим, драйвер для «прямой» работы с FT232RL встал нормально (см. «USB Serial Converter») и появилось новое неопознанное устройство «USB Serial Port». Это виртуальный COM-порт, и для него нам надо установить драйвер VCP (обратите внимание: при установке CDM-драйвера всегда первым делом устанавливаются дрова прямого доступа (D2XX), и только пото́м – дрова виртуального COM-порта (VCP)). Проделываем еще раз вышеописанные действия:
• щелкаем по неопознанному устройству правой кнопкой мыши и в вывалившемся меню выбираем пункт «Обновить драйвер»:
• выбираем «Установка из указанного места» (WinXP) или «Выполнить поиск драйверов на этом компьютере» (Win7), жмем кнопку «Далее» (если нужно):
• в открывшемся окне указываем мастеру место нахождения драйвера (должен остаться правильный путь) и нажимаем «Далее»:
• наблюдаем установку необходимых файлов драйвера VCP. При этом в папке «\WINDOWS\inf» создаются соответствующие файлы *.inf и *.pnf, в папку «\WINDOWS\system32» копируются библиотеки «ftcserco.dll» и «ftserui2.dll», а в папку «\WINDOWS\system32\drivers» – драйвер виртуального COM-порта «ftser2k.sys»:
• в окне завершения работы мастера обновления оборудования жмем кнопку «Готово» или «Закрыть»:
Смотрим в «Диспетчер устройств» – виртуальный COM-порт установился нормально, а неизвестных устройств не осталось:
Обратите внимание на то, что по умолчанию виртуальному COM-порту присвоился номер 3 (в общем случае присваивается первый свободный номер из реестра компа). Однако, конечного пользователя это может совершенно не устраивать (например, я вообще номера́ больше 4-х никогда не использую – многие терминальные программы на это лаются). Поменять номер COM-порта, присвоенный по умолчанию, довольно просто. Для этого надо щелкнуть по нему в «Диспетчере устройств» правой кнопкой мыши и в вывалившемся меню выбрать «Свойства». После этого будет выведено окно свойств COM-порта, в котором нужно выбрать вкладку «Параметры порта»:
Всё, после этого номер COM-порта сменится на выбранный нами (для того, чтобы в этом убедиться, можно зайти в «Диспетчер устройств»). Ну а мы можем себя поздравить – установка драйверов для микросхемы FT232RL прошла успешно! Теперь можно приступать к работе с чипом.
Довольно редко, но всё же бывают случаи, когда дрова от FT232RL надо удалить. Для этого лучше всего подходит утилита CDMUninstaller_v1.4 от той же конторы FTDI. Программа мало весит, поддерживается всеми версиями Windows (вплоть до десятки), проста в использовании и не требует установки. Оригинальное описание работы с утилитой CDMUninstaller_v1.4 приведено здесь. Ну а я приведу лишь основные действия, которые потребуется выполнить для деинсталляции драйвера микросхемы FT232RL:
• скачиваем утилиту CDMUninstaller_v1.4 (если это не было сделано ранее), распаковываем и запускаем файл «CDMuninstallerGUI.exe»;
• проверяем, чтобы в окне «Vendor ID» было значение «0403», а в окне «Product ID» – значение «6001»;
• жмем кнопку «Add»;
• если мы хотим подробно изучить все действия, которые программа будет выполнять при деинсталляции дров, ставим галку напротив «Generate uninstall log file»;
• просматриваем логи работы программы, если ранее поставили соответствующую галку. Файл генерится в той же папке, откуда запускается экзешник CDMUninstaller_v1.4;
• поздравляем, драйвер FT232RL удален с вашего компьютера.
Вот так вот двумя-тремя щелчками мыши можно остаться без дров для FT232RL. Ну а на сегодня всё! Желаю удачи при работе с драйверами от FTDI!
Обсудить эту заметку можно здесь
Место для разного (сдается)
Создание, "дизайн", содержание "сайта": podkassetnik
Для писем и газет: Почта России электрическая
Как выяснилось на практике, управлять выводами FT232RL совсем не сложно. Я научился этому буквально за полчаса, хотя совсем не занимаюсь программированием для компа. В этом посте я расскажу о полученном опыте.
Для написания программы я использовал Visual Studio Express 2012 для Windows Desktop. Ее можно скачать бесплатно с сайта Microsoft. Думаю, подойдет и C++ Builder, но у меня не оказалось его под рукой.
В качестве подопытной платы был задействован самодельный usb-uart переходник на FT232RL. Впрочем подойдет абсолютно любая плата на этой микросхеме, главное чтобы на контактные площадки были выведены все необходимые сигналы
Открываем Visual Studio и в верхнем меню выбираем Файл > Создать Проект. В открывшемся окне выбираем Visual C++ - консольное приложение Win32. Обзываем проект и сохраняем его.
В следующем окне жмем Готово и у нас открывается пустой проект.
Первое, что нужно сделать - это добавить к проекту библиотеку ftd2xx.lib. Для этого копируем файлы ftd2xx.lib и ftd2xx.h в папку, где лежат исходники только что созданного проекта. Затем подключаем файл ftd2xx.lib к нашему проекту внутри среды разработки. С левой стороны в Visual Studio отображается иерархия проекта. Нужно кликнуть правой кнопкой мыши "Файлы исходного кода" и выбрать "Добавить" > "Существующий элемент" и указать файл ftd2xx.lib.
После этого с помощью директивы include включаем заголовочный файл ftd2xx.h в главный файл проекта. У меня это FTDI_test1.cpp.
Функций для работы с FT232R в библиотеке довольно много. Все они подробно описаны в руководстве "D2XX Programmer's Guide".Чисто для ознакомления мне понадобились только 5 из них: FT_Open, FT_SetBitMode, FT_Write, FT_Read, FT_Close.
FT_STATUS FT_Open (int iDevice, FT_HANDLE *ftHandle) - открывает устройство, инициализирует переменную типа FT_HANDLE и возвращает результат выполнения этой функции типа FT_STATUS. Если функция выполнилась успешно, она возвратит FT_OK.
Принимает в качестве параметров индекс устройства и указатель на пустую переменную типа FT_HANDLE. Для одного устройства на FT232R индекс будет равен 0. Если устройств много, то в библиотеке есть специальная функция для получения списка устройств. ftHandle - эта некая переменная, с помощью которой происходят дальнейшие обращения к FT232R.
FT_STATUS FT_SetBitmode (FT_HANDLE ftHandle, UCHAR ucMask, UCHAR ucMode) - устанавливает режим работы выводов (вход или выход) и режим бит банга, возвращает результат выполнения функции.
В качестве параметров принимает инициализированную переменную типа FT_HANDLE, поэтому эту функцию нужно запускать после FT_Open(..). Второй принимаемый параметр - это битовая маска ucMask. Каждый бит ucMask определяет направление соответствующего вывода ft232r. 0 устанавливает вывод на вход, 1 - на выход. И третий параметр - байт ucMode, задающий режим работы бит банга. Есть два основных режима бит банга - это синхронный (0x04) и асинхронный (0x01). В синхронном режиме чтение данных из FT232R выполняется только когда происходит запись (при вызове функции FT_Write(..)). Причем сначала выполняется чтение, а потом в FT232R записываются новые данные.
FT_STATUS FT_Write (FT_HANDLE ftHandle, LPVOID lpBuffer, DWORD dwBytesToWrite, LPDWORD lpdwBytesWritten) - запись данных в FT232R.
В качестве параметров принимает инициализированную переменную типа FT_HANDLE. lpBuffer - указатель на буфер, содержащий записываемые данные. dwBytesToWrite - количество байтов, которые нужно записать в устройство. lpdwBytesWritten - указатель на переменную, в которую сохранится количество записанных байтов.
FT_STATUS FT_Read (FT_HANDLE ftHandle, LPVOID lpBuffer, DWORD dwBytesToRead, LPDWORD lpdwBytesReturned) - читает данные из FT232R.
В качестве параметров принимает инициализированную переменную типа FT_HANDLE. lpBuffer - указатель на буфер, в который сохранятся данные от устройства. dwBytesToRead - количество байтов, которые нужно прочитать. lpdwBytesReturned - указатель на переменную, в которую сохранится количество прочитанных байтов.
Пока что я разобрался только с чтением данных в синхронном бит банг режиме.
FT_STATUS FT_Close (FT_HANDLE ftHandle) - закрывает открытое устройство. Нужно запускать эту функцию после окончания работы с FT232R. Что произойдет, если проигнорировать это, я не знаю.
Схему для тестового проекта я собрал из USB-UART переходника, светодиода и кнопки.
Код тестового проекта представлен ниже. Программа настраивает один вывод FT232R на вход, а другой на выход и устанавливает синхронный бит банг. Далее в цикле происходит запись и чтение FT232R. Если кнопка нажата, то зажигается светодиод. Если кнопка удерживается некоторое время, то программа выходит из цикла.
С функцией записи не возникло никаких проблем. И в синхронном и в асинхронном режимах бит банга она, по сути, используется одинаково. А вот с функцией чтения пришлось помучаться. Я получил от нее то, что мне нужно, только в синхронном режиме работы. Как было сказано выше, в синхронном бит банг режиме данные из ft232r читаются во время записи, то есть когда вызывается функция FT_Write(): сначала данные читаются, а потом производится запись. Когда вызывается FT_Read(), то мы получаем значение, которое было прочитано при вызове FT_Write(). Вроде так.
Надеюсь мой пост поможет вам в освоении FT232R, ведь ее можно использовать в широком спектре приложений. Начиная от таких банальных вещей как управление нагрузками по USB, и заканчивая программаторами или 1-Wire, SPI, I2C адаптерами.
ftdi-test.rar - проект для Visual Studio Express 2012. Чтобы запустить проект в студии, нужно нажать Ctrl + F5.
Как выяснилось на практике, управлять выводами FT232RL совсем не сложно. Я научился этому буквально за полчаса, хотя совсем не занимаюсь программированием для компа. В этом посте я расскажу о полученном опыте.
Для написания программы я использовал Visual Studio Express 2012 для Windows Desktop. Ее можно скачать бесплатно с сайта Microsoft. Думаю, подойдет и C++ Builder, но у меня не оказалось его под рукой.
В качестве подопытной платы был задействован самодельный usb-uart переходник на FT232RL. Впрочем подойдет абсолютно любая плата на этой микросхеме, главное чтобы на контактные площадки были выведены все необходимые сигналы
Открываем Visual Studio и в верхнем меню выбираем Файл > Создать Проект. В открывшемся окне выбираем Visual C++ - консольное приложение Win32. Обзываем проект и сохраняем его.
В следующем окне жмем Готово и у нас открывается пустой проект.
Первое, что нужно сделать - это добавить к проекту библиотеку ftd2xx.lib. Для этого копируем файлы ftd2xx.lib и ftd2xx.h в папку, где лежат исходники только что созданного проекта. Затем подключаем файл ftd2xx.lib к нашему проекту внутри среды разработки. С левой стороны в Visual Studio отображается иерархия проекта. Нужно кликнуть правой кнопкой мыши "Файлы исходного кода" и выбрать "Добавить" > "Существующий элемент" и указать файл ftd2xx.lib.
После этого с помощью директивы include включаем заголовочный файл ftd2xx.h в главный файл проекта. У меня это FTDI_test1.cpp.
Функций для работы с FT232R в библиотеке довольно много. Все они подробно описаны в руководстве "D2XX Programmer's Guide".Чисто для ознакомления мне понадобились только 5 из них: FT_Open, FT_SetBitMode, FT_Write, FT_Read, FT_Close.
FT_STATUS FT_Open (int iDevice, FT_HANDLE *ftHandle) - открывает устройство, инициализирует переменную типа FT_HANDLE и возвращает результат выполнения этой функции типа FT_STATUS. Если функция выполнилась успешно, она возвратит FT_OK.
Принимает в качестве параметров индекс устройства и указатель на пустую переменную типа FT_HANDLE. Для одного устройства на FT232R индекс будет равен 0. Если устройств много, то в библиотеке есть специальная функция для получения списка устройств. ftHandle - эта некая переменная, с помощью которой происходят дальнейшие обращения к FT232R.
FT_STATUS FT_SetBitmode (FT_HANDLE ftHandle, UCHAR ucMask, UCHAR ucMode) - устанавливает режим работы выводов (вход или выход) и режим бит банга, возвращает результат выполнения функции.
В качестве параметров принимает инициализированную переменную типа FT_HANDLE, поэтому эту функцию нужно запускать после FT_Open(..). Второй принимаемый параметр - это битовая маска ucMask. Каждый бит ucMask определяет направление соответствующего вывода ft232r. 0 устанавливает вывод на вход, 1 - на выход. И третий параметр - байт ucMode, задающий режим работы бит банга. Есть два основных режима бит банга - это синхронный (0x04) и асинхронный (0x01). В синхронном режиме чтение данных из FT232R выполняется только когда происходит запись (при вызове функции FT_Write(..)). Причем сначала выполняется чтение, а потом в FT232R записываются новые данные.
FT_STATUS FT_Write (FT_HANDLE ftHandle, LPVOID lpBuffer, DWORD dwBytesToWrite, LPDWORD lpdwBytesWritten) - запись данных в FT232R.
В качестве параметров принимает инициализированную переменную типа FT_HANDLE. lpBuffer - указатель на буфер, содержащий записываемые данные. dwBytesToWrite - количество байтов, которые нужно записать в устройство. lpdwBytesWritten - указатель на переменную, в которую сохранится количество записанных байтов.
FT_STATUS FT_Read (FT_HANDLE ftHandle, LPVOID lpBuffer, DWORD dwBytesToRead, LPDWORD lpdwBytesReturned) - читает данные из FT232R.
В качестве параметров принимает инициализированную переменную типа FT_HANDLE. lpBuffer - указатель на буфер, в который сохранятся данные от устройства. dwBytesToRead - количество байтов, которые нужно прочитать. lpdwBytesReturned - указатель на переменную, в которую сохранится количество прочитанных байтов.
Пока что я разобрался только с чтением данных в синхронном бит банг режиме.
FT_STATUS FT_Close (FT_HANDLE ftHandle) - закрывает открытое устройство. Нужно запускать эту функцию после окончания работы с FT232R. Что произойдет, если проигнорировать это, я не знаю.
Схему для тестового проекта я собрал из USB-UART переходника, светодиода и кнопки.
Код тестового проекта представлен ниже. Программа настраивает один вывод FT232R на вход, а другой на выход и устанавливает синхронный бит банг. Далее в цикле происходит запись и чтение FT232R. Если кнопка нажата, то зажигается светодиод. Если кнопка удерживается некоторое время, то программа выходит из цикла.
С функцией записи не возникло никаких проблем. И в синхронном и в асинхронном режимах бит банга она, по сути, используется одинаково. А вот с функцией чтения пришлось помучаться. Я получил от нее то, что мне нужно, только в синхронном режиме работы. Как было сказано выше, в синхронном бит банг режиме данные из ft232r читаются во время записи, то есть когда вызывается функция FT_Write(): сначала данные читаются, а потом производится запись. Когда вызывается FT_Read(), то мы получаем значение, которое было прочитано при вызове FT_Write(). Вроде так.
Надеюсь мой пост поможет вам в освоении FT232R, ведь ее можно использовать в широком спектре приложений. Начиная от таких банальных вещей как управление нагрузками по USB, и заканчивая программаторами или 1-Wire, SPI, I2C адаптерами.
ftdi-test.rar - проект для Visual Studio Express 2012. Чтобы запустить проект в студии, нужно нажать Ctrl + F5.
LPT и COM порты уже большая редкость на современных стационарных компьютерах, а про ноутбуки то и говорить нечего. USB медленно, но верно вытеснила их, усложнив жизнь разработчикам и упростив пользователям. Эх, как приятно было когда-то подключить микроконтроллер к COM порту компьютера, используя всего лишь max232 и не заботясь о драйверах. Еще чуть-чуть и это будет возможно только на промышленных компах.
Следуя общей тенденции, производители микросхем стали выпускать доступные микросхемы для работы с USB. Такие как USB-UART преобразователи или микроконтроллеры с поддержкой этой шины. К сожалению последние, несмотря на наличие библиотек, все еще сложны в освоении, поэтому неискушенному инженеру проще использовать первый вариант. И в этой статье мы рассмотрим две подобные микросхемы - FT232 и CP2103 и схемы преобразователей на их основе.
Микросхема FT232RL фирмы FTDI пользуется заслуженной популярностью в инженерных кругах. Она предоставляет пользователю возможность создания полноценного COM порта, имеет функцию управления отдельными выводами, драйвера, простую схему включения с минимальным количеством дополнительных элементов и приемлемый для пайки корпус. Также дополнительным плюсом этой микросхемы, является возможность программирования ее EEPROM памяти, в которой можно изменить некоторые параметры USB устройств. Из недостатков можно отметить ее высокую цену ~120-150 рублей, которая вполне сравнима с ценой на микроконтроллер atmega.
Я сделал на FT232RL свой вариант USB-UART преобразователя. Все пользовательские выводы развел на PLS`ку по краям платы. Расстояние между PLS выбрал таким, чтобы можно было втыкать переходник в макетную плату. Выводы RXD и TXD, предназначенные для подключения UART`a микроконтроллера, развел на отдельную PLS для удобства подключения. Также на плату помесил 2 светодиода, для индикации процесса передачи/приема информации микросхемой FT232RL, и перемычки для выбора напряжения питания выводов. Оно может быть пяти или трех вольтовым. USB разъем взял в мини исполнении, USB-B слишком громоздкий. Плату развел в одном слое, с тремя перемычками.
Схема USB-UART переходника на FT232RL
Внешний вид полученного девайса
Если ты соберешь этот USB-UART переходник, то не спеши сразу втыкать его в USB порт. Перед работой нужно убедиться в отсутствии замыканий между плюсом питания, землей и выводами D+, D-. Возьми тестер и прозвони их. Если замыканий нет, визуально проверь другие вывода и только после этого можешь подключать переходник.
Микросхема CP2103 фирмы Silicon Labs - это по сути аналог FT232. Имеет простую схему включения с минимальным количеством внешних компонентов, позволяет организовать полноценный COM порт со всеми его сигналами, имеет дополнительные пользовательские выводы и программу для их конфигурации, драйвера, маленькие габариты и более демократичную цену. Из недостатков стоит отметить мелкий и неудобный для запайки в домашних условиях корпус. Пожалуй, это главная причина непопулярности этой микросхемы в среде самодельщиков.
Ради интереса я сделал USB UART преобразователь и на ее базе. Все пользовательские выводы развел на PLS`ки по краям платы. RXD и TXD вывел на отдельный разъем. Джампер для выбора напряжения питания выводов здесь не понадобился, так как это напряжение не может быть большее 3.6 В. USB разъем выбрал в мини исполнении, плату развел в одном слое с четырьмя перемычками на обратной стороне. Светодиоды для индикации передачи/приема данных не сделал, потому что микросхема CP2103 не имеет выделенных для этих целей выводов. Можно задействовать любые пользовательские выводы, но их нужно конфигурировать с помощью специального софта. Когда я это узнал, переходник уже был готов и переделывать его было лень, особенно после мучений с запайкой. Единственное, что я добавил из индикации - это светодиод по питанию.
Схема USB-UART преобразователя на CP2103
Внешний вид полученного девайса
Я немного помучился с изготовлением этого переходника. Во первых между ножками CP2103 очень маленький зазор, нужно аккуратно делать плату. Во вторых ее сложно припаять. Если бы у меня не было фена, я бы за это вообще не взялся.
Запаивал я ее следующим образом. Залудил плату сплавом Розе. Он плавится при 100 градусах, что позволяет избегать перегрева платы и микросхемы . Обильно смочил посадочное место микросхемы флюсом и положил ее туда. Используя увеличительное стекло и пинцет, кое-как сориентировал ее по посадочному месту. Далее стал нагревать микросхему феном с температурой ~150-200 градусов. Когда припой расплавился, микросхема стала шевелиться и за счет сил поверхностного натяжения заняла точное положение на посадочном месте. Получилось очень ровно, но переходник не заработал. Я повторно нагрел микросхему и слегка придавил и пошевелил пинцетом. После этого микросхема сконтактировала с дорожками платы.
После сборки переходника нужно убедиться в отсутствии замыканий между плюсом питания, землей и выводами D+, D-, а затем между остальными выводами. Поскольку микросхема очень маленькая, между выводами легко может сесть сопля. После проверки выводов, USB UART переходник можно подключать к компьютеру.
Как и с предыдущем переходником, при первом включении система предложит установить драйвера. Скачивай их с официального сайта производителя - драйвер для CP2103.
Установленный переходник определяется в диспетчере устройств в разделе "Порты" как "Silicon Labs CP210X USB to UART Bridge (COM6)". У тебя может быть другой номер порта.
Работоспособность проверяется аналогично, повторяться не буду.
Альтернативные варианты адаптеров можно сделать на микросхемах FT230XS и CP2102. Это урезанные и соответственно более дешевые аналоги FT232 и CP2103. Обе микросхемы имеет меньшее число пользовательских выводов и не совпадают по распиновке.
Для полноценного функционирования устройства Atmega Fusebit Doctor потребовался преобразователь USB-UART.
Решил собрать модуль преобразователя USB-UART на микросхеме FT232RL. Преобразователь позволяет создать соединение на любом компьютере имеющем USB разъем.
Обвязка FT232RL минимальна, для работы устройства, помимо самой микросхемы, требуется пара конденсаторов. Также для индикации работы можно повесить 3 светодиода, которые будут сигнализировать о наличии питания, приеме и передаче данных. Само устройство собрано в форме флэшки, поэтому приткнутся к USB-порту можно в любой момент. На выходе устройства на разъем выведены пины Tx и Rx, GND, а также питание +5В, которым можно запитывать подключаемое устройство.
Схема устройства приведена ниже:
Вот что, собственно получилось:
Это печатная плата, файл с макросом этого микроблока для Sprint Layout будет в конце записи.
После травления:
После пайки всех деталей:
Отрезаем провод нужной длины, ставим разъемы типа "папа".
Устройство USB-UART можно втыкать в USB порт. Операционная система (У меня это Windows 7) сразу найдет новое устройство и предложит найти драйвер. Если имеется подключение к интернету, можно выбрать автоматическую загрузку и установку драйвера, центр обновления windows все сделает сам:
Если подключение не доступно, выбираем ручную установку и скармливаем ей нужный драйвер, скачать его можно по ссылке в конце записи.
Устанавливать драйвера нужно 2 раза, сперва устанавливается USB драйвер для FT232RL:
После чего Windows тут же обнаружит еще одно неопознанное устройство, тыкаем ее снова в папочку с драйверами и она находит виртуальный COM порт:
Проверить работоспособность устройства можно следующим образом: открываем любую терминальную программу, выбираем в настройках COM порт созданный при установке драйвера, замыкаем джампером контакты Rx и Tx, и отправляем любую команду в терминал. Если команда вернулась, значит модуль выполняет свое предназначение. Также при этом должны весело мигнуть светодиоды индикации приема/передачи.
Программа Terminal 1.9b RS232 (монитор COM порта ПК)
Для связи AVR и компьютера по UART на компьютере нужна терминальная программа. После работы с разными программами я остановился на «Terminal 1.9b». Очень удобная терминалка. Рекомендую.
Основные возможности Terminal 1.9b:
-работает без инсталяции. Вся программа — один exe-файл размером около 300Кб
-есть счетчик переданных и принятых байтов
-возможность отправлять файлы
-помимо стандартных скоростей (baudrate) есть возможность установить свою нестандартную
-поддерживает до 64 COM-портов
-можно весь лог работы записывать в файл
-можно назначить до 24 макросов
-реализованы Pascalе-подобные скрипты (правда документации по этому скриптовому языку я не нашел. В архиве есть несколько примеров применения скриптов и это все)
Читайте также: