Ft232r usb uart что это
При изготовлении почти любого устройства с процессорным управлением встаёт необходимость обеспечить его связь с компьютером. Причём зачастую эта связь нужна только при отладке и в дальнейшей работе прибора совершенно не требуется. А порой и сам прибор в дальнейшем не требуется — так, один раз поиграл и засунул в дальний ящик. Лепить в каждом таком девайсе преобразователь интерфейса с обвязкой лень, да и жаба душит. А ведь ещё и разъём нужен… Что бы не возникало таких проблем нужно под рукой иметь внешний преобразователь интерфейса, легко подключаемый к тому девайсу, с которым сейчас работаешь.
Какие интерфейсы использовать особо выбора не стоит — самое простое и универсальное что можно придумать в настоящее время — это uart на стороне девайса и USB на стороне компа. С выбором преобразователя тоже думать особо нечего — достойных альтернатив FT232RL для решения данных задач на горизонте не видно (среди основных бонусов этой микрухи функциональность, качественные дрова, лёгкость монтажа и минимум необходимой обвязки). Делать простой дата-кабель скучно и не интересно, да и не всегда его хватает, кроме того FT-шка имеет много дополнительных фишек, терять которые не охото. В общем, решил я сделать что-то типа демо-платы для микросхемы FT232R. После вдумчивого курения даташита, нарисовалась примерно такая схема:
- Раздельное питание — преобразователь питается от USB, девайс от своего источника. Тут три варианта в зависимости от питания целевого устройства:
а) девайс работает на 5В
б) девайс работает на 3.3В
в) девайс работает на другом (1.8В — 5.25В) уровне питания - Общее питание от USB — преобразователь питается от шины, девайс от преобразователя. Тут у меня получилось четыре варианта разной степени бредовости:
а) девайс работает на пяти вольтах
б) девайс работает на 3.3В (ВНИМАНИЕ. в этом случае девайс должен потреблять ток не более 50mA, а светодиоды лучше отключить, иначе можно спалить FT-ку)
в) девайс работает на 3.3В, но питается от 5В
г) девайс работает на вообще фиг знает чём (1.8В — 5.25В), но питается от 5В - Общее питание от девайса (может понадобиться при прототипировании, когда предполагается, что FT232R будет в составе конечного девайса). Тут можно выделить всего два варианта — питание равняется VCCIO и питание не равняется VCCIO (главное, что бы питание было не ниже 4В, так как внешний кварц для FT не заложен):
а) напряжение питания и напряжение обмена равняются
б) напряжение питания и напряжение обмена различаются
Ёжику на спину ещё предлагалось повесть мезонинную плату, делающую его по совместительству программатором для AVR, но до изготовления дело пока не дошло, так как сейчас не сильно нужно, да и разъёмы для мезонинных плат я так и не добыл.
Принцип работы программатора объяснять не буду — о подобных схемах уже писали много, отмечу только основные схемотехнические особенности. Во-первых, обращу внимание на то, что у меня питание таргета по умолчанию отвязано от питания самого модуля, ибо нехорошо это, коротить питальник девайса и питальник программатора (ну это, конечно, когда девайс не от программатора запитывается, для этого случая предусмотрена перемычка XP8).
Десятиконтактный разъём программирования XP7 состоит из стандартного шестиконтактного ISP и двух контактов порта uart, что позволяет сократить количество проводов, подключенных к подопытному девайсу в процессе его разработки и отладки. Предполагается на плате устройства ставить такой же разъём и соединять их шлейфом, в котором RX и TX поменяны местами. Выкусанные две ноги позволяют программировать такую плату стандартным программатором с шестиконтактной головой.
Пачка резисторов по 33Ом предназначена для того, что бы защититься от кратковременного КЗ на девайсе, а 10k резистор подтягивает к земле линию RX дабы избавиться от возможных помех. Если понадобится внешний тактовый сигнал, то можно настроить его вывод на любую из ног CBUS.
Ну вот, вроде бы всё. В приложенном архиве находится комплект файлов для этих двух плат в формате Altium Designer и печатные платы в формате P-CAD PCB.
Комментарии ( 24 )
хорошо, годно :) реквестирую фотки поменьше(с увеличением по клику хотя бы), а то на 1024p уплыло за край.
В наши дни становиться всё меньше и меньше ПК с наличием в них COM и LPT портов. В этом случае можно использовать USB программаторы, но большинство из них имеют в своём составе микроконтроллер, который тоже нужно чем-то прошить. Вот тут и начинается проблема т.е чтобы собрать программатор нужен ещё один программатор. Но к счастью в интернете уже давно появилась схема высокоскоростного USB программатора, не требующего прошивки управляющего контроллера. Программатор называется USBBit. В составе этого программатора имеется распространённая микросхема FT232RL. Это аппаратный высокоскоростной переходник USB – RS232, который может не только эмулировать RS232, но и поддерживает прямой доступ к порту (это когда мы можем не только записать в порт число, но и выставить любой вывод порта в 0 или 1). Такой режим называется BitBang. Именно с помощью этого режима можно эмулировать интерфейс SPI, по которому программируются микроконтроллеры AVR. Программатор получается отличный, а главное не требует прошивки управляющего контроллера!
Вот по этой схеме я делал программатор. Но можно было сделать более упрошенную схему без 74НС244, но у этой схемы есть два недостатка: он не возвращает в 1 линию RST после программирования, и чтобы программа запустилась, нужно отключать программатор то целевой платы, что неудобно. И ещё один её недостаток – после завершения программирования линии остаются либо в нулях, либо в единицах, а если к выводам программирования мк подключено ещё что-то, то это доставляет неудобство без 74НС244, но за счёт применения микросхемы буфера удалось избавиться от вышеперечисленных недостатков. У микросхемы буфера есть три состояния выхода: высокий уровень, низкий уровень и HI-Z. HI-Z – третье состояние, при котором линии как бы не к чему не подключены, поэтому на них ни 1, ни 0. Вывод 1 и 19 – выводы управления. Если на них подать 1, то выход перейдёт в HI-Z состояние, а если ноль – на выводе будет либо 1, либо 0, в зависимости от сигнала на входе. И ещё один плюс такой схемы – если вывод программирования случайно закоротить(соединить) на землю, то сгорит буфер
Далее развёл плату в Sprint-layout, так как у меня была микросхема 74НС244 в DIP исполнении соответственно и плату развел под этот корпус .
Методом ЛУТ перевел на текстолит и вытровил плату (при переводе с бумаги немного перегрел утюгом, за счет этого дорожки немножко поплыли и не очень ровные, ну думаю это не так страшно)
Такое мудрёное название записи БЖ можно расшифровать намного проще.
"В рамках борьбы за интеллектуальную собственность FTDI ломает контрафактные чипы программными средствами."
Собственно злая компания съела мой шнурок. )))
А я то думаю, руки чтоли кривые, аль голова с плеч свалилась. ЧЁ ШНУРОК НЕ РАБОТАЕТ !
Кароч прошлые выходные прошли в решении проблемы. И я её решил скажу я вам.
Спросите как ?
Пишу…
Сперва я накидаю вам ссылок, потому как не являюсь первооткрывателем в данной теме и не претендую на авторство.
1 — Воскрешаем FTDI в картинках
2 — Восстанавливаем Arduino Nano
3 — FTDI наносит ответный удар
4 — VAG-COM. Восстанавливаем работоспособность VCDS 10.6
Везде по чуть-чуть и вот оно счастье ))))
Иногда борьба корпораций с конечными пользователями приобретает гротескную форму. Коротко: я перестал любить FTDI.
Если вы используете устройство с подключением через конвертер USB2COM на чипе FTDI под Windows — берегитесь. В рамках борьбы за интеллектуальную собственность FTDI ломает контрафактные чипы программными средствами.
В начале октября вышло обновление Windows, после установки которого драйверы начинают ругаться на устройство FTDI. После этого все пошли на официальный сайт FTDI и скачали последную версию драйверов — 2.12.00 WHQL Certified. И тут начинается самое интересное, драйверы проверяют чип на контрафакт, и если он не оригинальный – выводят его из строя путем смены PID на 0000. После чего в списке устройств появляется FT232R USB UART, к которому никакой драйвер уже не подходит.
Гугление выявило что с подобной проблемой столкнулось не только сообщество любителей Arduino, но и автолюбители использующие FT232 в OBD адаптерах, и многие другие, использующие этот чип в своей жизни. Обычно проблему решали заменой кабеля на чипах CH340, CP2102, PL2303 и т.п.
Процесс выхода чипа FTDI из строя состоял из двух стадий. Сначала происходит автоматическое обновление драйверов FTDI через Windows update. Эти драйверы не изменяют PID, а просто отказываются работать с неправильным с их точки зрения устройством.
Пользователь, скачивает свежие драйвера, не читает и соглашается с лицензионным соглашением, после чего драйверы изменяют PID на 0000. Рекомендованное лечение: поставить старые драйверы 2.8.14 (или ранние), прописать правильный PID (по возможности заблокировав его на запись), в дальнейшем не обновлять драйверы FTDI.
Замечательная компания FTDI сменила тактику борьбы с поддельными чипами. Ее решение изящно, легально и позволяет контролировать рынок. Вот только устраивает ли оно конечных пользователей? Если ранее, вы просто устанавливали драйверы штатными средствами Windows, то теперь, новые драйверы поставляются в виде exe и при инсталляции вы принимаете лицензионное соглашение, в котором есть такие слова:
1.5 Use of the Software as a driver for, or installation of the Software onto, a component that is not a Genuine FTDI Component, including without limitation counterfeit components, MAY IRRETRIEVABLY DAMAGE THAT COMPONENT
В вольном переводе звучит так: использование этого программного обеспечения с поддельными компонентами может привести к повреждению этих компонентов.
Тем кто столкнулся с данной проблемой советут читать выше выложенные 4 ссылки.
А у меня всё )))
Всем пока.
Для полноценного функционирования устройства 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е-подобные скрипты (правда документации по этому скриптовому языку я не нашел. В архиве есть несколько примеров применения скриптов и это все)
Кроме очевидной функции преобразования интерфейсов эта микросхема умеет целых три режима bit bang. А еще разные свиселки-перделки, которые можно вывести на ножки CBUS.
Сначала решил свалить все в одну кучу, но потом передумал — будет несколько небольших постов.
В первом — описание функционала FT232 и её тюнинга с помощью FT Prog. Интересен будет наверное, лишь начинающим.
Дальше CBUS битбанг, синхронный и асинхронный битбанг. На дельфи и LabView.
Начнем с альтернативных функций пинов CBUS. Их аж 13 штук:
TXDEN — сигнал разрешения передачи (Transmit Enable) для интерфейса RS-485. Может быть выведен на любую из ножек CBUS. Если поглядеть на распиновку, видно что удобнее всего его выкинуть на CBUS2..4 — они на той стороне микросхемы, где и остальные линии RS-232.
PWREN — Сигнал о том, что комп благополучно ушел в спящий режим. Для нас это значит, что надо отключить всю мощную нагрузку. В даташите советуют прицепить на этот пин p-канальный полевик и включать всю нагрузку через него.
TXLED, RXLED и TX&RXLED — три варианта включения светодиодной индикации. TXLED светится, когда данные передаются через USB. То-есть, когда FT232 принимает данные по UART. В RXLED все наоборот. А последний — порождение двух предыдущих режимов. Подключать их надо катодом к FT232 (анодами на питание).
SLEEP — противоположность PWREN (в смысле полярности). Предназначен для уведомления МК о том, что комп уснул. В обычно режиме он находится в высоком лог. уровне. В спячке — в низком. Его тоже можно использовать для отключения нагрузки в спящем режиме.
CLK48, CLK24, CLK12, CLK6 — выход тактового сигнала. Да еще и с разными частотами! Просто сказка для строителей программаторов. На практике первые два-три варианта мало применимы, а вот последний можно удачно использовать в программаторе. Только позвольте отговорить вас от идеи сделать из этого внешний так для МК — при переходе компа в спящий режим этот тактовый сигнал так-же отрубится. Так-же следует помнить, что тактовый сигнал FT232 всегда будет не больше 3.2 Вольт.
CBitBangI/O — Превращает ножку CBUS в GPIO, управляемый с компа. Работает только на CBUS0..3 по причине того, что разработчики засунули направление линий (вход/выход) и уровень (высокий/низкий) в один байт. Это первый вариант реализации bit bang. О нем будет следующая статья.
BitBangWRn, BitBangRDn — сигналы записи и чтения для двух других режимов bit bang — Синхронного и Асинхронного. Тоже работает на CBUS0..3
Вот такая компания.
Возникает резонный вопрос — как все это настраивать? Для этого есть утилита FT_prog, которая умеет прошивать EEPROM память FTшки. Выглядит она вот так:
При запуске тут-же нажимаем на кнопку «Scan and Parse» (c лупой) или F5 и получаем список подключенных FTDI устройств.
У меня подключен только один модуль. Пробежимся по его настройкам:
Chip Details -> Type Здесь у нас название чипа. Менять ничего нельзя. Идем дальше.
USB Device Descriptor — тут PID (Product ID), VID (Vendor ID). Их можно изменять. Но для домашних разработок это все-равно никакого значения не имеет.
USB Config Descriptor — тут уже больше вкусных настроек:
Bus powered \ Self Powered — режим питания устройства (сомостоятельно или от шины USB).
Max Bus Power — максимальный ток, который наше устройство собирается кушать от линии USB. Что характерно, превышение тока не наказуемо. При заявленом значении в 10мА моё устройство съедало все 120мА а хрюша даже «еггог» не сказала. Но все-же нарушать не стоит.
USB remote Wake Up — Если этот режим активирован, то дерганье вниз ноги RI выводит комп из спящего режима. Но работает только на FT245. Fail.
Pull down I/O Pins in USB Suspend — если включено, то при переходе в спящий режим, выводы UART должны подтягиваться к земле с целью уменьщения потребления. У меня так и не заработало. Наверно чип такой попался :(
USB String Descriptor — тут можно написать название производителя, описание устройства и задать параметры генерации серийника. Вот тут есть один прикол — по умолчанию FT Prog генерит новый серийник при каждой прошивке. Видна, соответственно думает что это новое устройство и назначает ему другой виртуальный COM порт. Так, через несколько итераций номер порта сдвинется непойми-куда, поэтому генерацию серийника я запретил.
Последний пунт — Hardware Specific. Там описаны настройки железа.
High Current IO — позволяет пинам двигать большей нагрузкой. 12мА, против 4мА в обычном режиме. Но это отрицательно сказывается на энергопотреблении.
Load D2XX Driver — если поставить галочку, то загрузка D2XX драйвера будет предпочтительнее, чем обычного драйвера VCP (Virtual Com Port). На практике, никаких изменений я не заметил — виртуальный COM порт по прежнему доступен сразу при подключении устройства.
Use External Oscillator — переключиться на внешний кварц. ВНИМАНИЕ! Если включить этот режим без внешнего кварца, труп FT232 станет неплохой возможностью поиметь с NXP халяву, но не более того (Кто не в теме — НХП раздает демоплаты за фото/видео зверской расправы над МК. Мертвая FT232 вполне сойдет за какой-нибудь МК… :) ).
Invert RS-232 Signals — инверсия любой из 8 линий COM порта. В некоторых случаях позволяет избавится от лишней микросхемы-инвертора.
IO Control — те самые дополнительные возможности, список которых приводился выше.
После того, как конфигурация будет настроена — тыкаем кнопку с молнией или нажимаем Ctrl+P. Нам показывают краткое описание настроек.
Нажимаем program, дожидаемся завершения операции (надпись ready в левом нижнем углу основного окна) и передергиваем FT232 — новые настройки вступают в силу только после сброса.
Вторая часть будет про реализацию CBUS-битбанга в delphi.
Useful appnotes:
FT Prog — программа для настройки FTDI чипов.
USB View — показывает подключенные USb устройства. Тоже самое но для linux.
Читайте также: