Uart программатор своими руками

Самодельный внутрисхемный программатор из конвертера USB-UART

В дополнение к статье «Как прошить микроконтроллер ATtiny или ATmega без программатора» расскажу, как сделать и как использовать внутрисхемный программатор из дешёвого конвертера USB-UART.

1. Преимущества внутрисхемного программирования МК

Ранее я уже описывал во всех подробностях, как с помощью простенького и очень дешёвого конвертера USB-UART осуществить программирование микроконтроллера ATtiny или ATmega . Теперь вы узнаете, как усовершенствовать этот импровизированный программатор, чтобы можно было многократно перепрошивать МК, не выпаивая его из основной схемы.

Как и в прошлый раз, основой нашего программатора будет очень доступный преобразователь интерфейса USB-UART. Приобрести такой модуль стало возможно менее, чем за доллар, включая пересылку. Думаю, столь низкая цена объясняется в первую очередь тем, что подобные конвертеры не имеют многих входов и выходов, свойственных полноценному COM-порту. На разъём выводятся только сигналы TXD и RXD. Но если вы покупаете конвертер, не залитый сплошь пластиком, а в скромной термоусадочной оболочке, то всё, что вам нужно для получения недостающих входов/выходов — это владение паяльником. В результате получается полноценный конвертер USB-RS232TTL .

В статье «Как прошить микроконтроллер ATtiny или ATmega без программатора» я уже рассказывал, как приспособить подобный конвертер на роль программатора микроконтроллеров. Но тот способ удобен для разовой «заливки» программы в МК, и не очень годится для разработки нового устройства, когда программу приходится много раз переделывать, отлаживать, снова и снова записывая её в микроконтроллер .

В чём же тут разница? Если, допустим, вы решили собрать устройство по уже готовой схеме и у вас имеется готовая прошивка, то можно воспользоваться ранее предложенным способом. Для этого потребуется временно соединить проводками выводы микроконтроллера (желательно через резисторы) с определёнными входами и выходами конвертера USB-RS232TTL, записать в МК информацию из файла прошивки, затем отпаять временные проводки и установить МК в основную схему. Но если через какое-то время вы захотите обновить прошивку, придётся выпаивать микроконтроллер, заново соединять его с конвертером-программатором и, в общем, повторять те же действия. Перепайка микросхемы — занятие зачастую трудоёмкое. Кроме того всегда есть риск повредить выводы. Чтобы избежать лишних сложностей, иногда микроконтроллер не впаивают в схему, а устанавливают в панельку. Панелька же монтируется на плату при помощи пайки. При необходимости контроллер можно легко извлечь из панельки (впрочем, есть такие панельки, что вынуть из них микросхему бывает очень нелегко), перепрошить и заново установить в панельку. В этом случае программатор тоже снабжается панелькой.

Но есть и другой очень распространённый способ решения проблемы многократной перепрошивки, не требующий использования панелек под микросхемы — внутрисхемное программирование . В этом случае микроконтроллер впаивается в основную схему раз и навсегда, а его программирование выполняется через предназначенный специально для этого разъём. Если не касаться методов самопрограммирования МК, то данный способ основан на тех же принципах, что и программирование МК вне схемы. В данном случае также на время программирования необходимо обеспечить физическое соединение специальных выводов микроконтроллера с соответствующими входами и выходами программатора. Использование разъёма позволяет легко подключать и отключать внутрисхемный программатор по мере необходимости.

Но тут имеются и свои «подводные камни». Если у МК «ножек» не слишком много и вы не можете позволить себе «роскошь» отказаться от использования в основной схеме тех выводов, которые участвуют в программировании, то неизбежно встаёт вопрос о совместном использовании некоторых выводов, как в основной схеме, так и в целях программирования. При неудачном решении этого вопроса возможны конфликты между программатором и основной схемой.

2. Решение конфликтов между программатором и схемой

На что следует обращать внимание, чтобы избежать конфликта между программатором и основной схемой? Прежде всего, это проблема шунтирующих цепей. Необходимо убедиться, что выходы, как со стороны программатора, так и со стороны МК без труда справятся с той нагрузкой, которая сложится для них в режиме программирования . При этом важно проследить и за тем, чтобы основная схема не «ударилась в неадекват». То есть чтобы сигналы программатора не могли спровоцировать нежелательное поведение основной схемы, которое в каких-то случаях может закончиться даже выходом из строя отдельных её частей. Чаще всего наилучшей тактикой является использование в основной схеме потенциально конфликтного вывода МК в том же качестве вход/выход, какое предусмотрено для него в режиме программирования. То есть чтобы выход при программировании оставался выходом в обычном режиме, а вход — оставался входом. Но и тут возможна ситуация, когда выход со стороны программатора будет конфликтовать с каким-то выходом внутри основной схемы. Тогда потребуется обеспечить перевод конфликтующего выхода внутри основной схемы в высокоимпедансное состояние, или, как минимум, установить резистор в цепь конфликтующего выхода.

Читайте также:  Гусеницы своими руками стен

Рассматривая возможность шунтирования сигналов программатора цепями основной схемы, следует помнить также о ёмкостях и индуктивностях. Наличие, например, конденсатора между входом микроконтроллера и «землёй» может существенно испортить крутизну фронтов от программатора, что сделает программирование невозможным из-за сбоев или вынудит использовать низкую скорость программирования. А вот в цепи питания большая ёмкость будет только на пользу. Здесь можно не скупиться, так как это самый простой и эффективный способ борьбы с помехами по питанию. Хорошо, если конденсатор установлен максимально близко к выводам питания микроконтроллера.

Возможны и разные варианты организации питания в режиме программирования. Например, основное питание может быть отключено, а на микроконтроллер питание может подаваться от программатора. Если в схеме нет больших потребителей энергии, то достаточно соединить соответствующий контакт разъёма программирования с проводом питания основной схемы. Но если имеются элементы с большим потребляемым током, лучше предусмотреть их отсоединение от цепи питания на время программирования при питании от программатора . Что касается конвертеров USB-RS232TTL, то я бы не рекомендовал брать с их линии питания более чем 50 мА. Эта цифра может быть и больше, но тогда уже надо внимательнее смотреть, чтобы не получить всевозможные сбои по цепи питания .

3. Изготовление внутрисхемного программатора

Чтобы использовать конвертер USB-UART в качестве внутрисхемного программатора , достаточно припаять к нему кабель, на конце которого имеется разъём с нужным количеством контактов. В моём случае разъём имеет шесть контактов, что обеспечивает подключение не только всех необходимых сигналов SPI , но и позволяет подавать на программируемый контроллер питающее напряжение от программатора. Естественно, в разрабатываемой схеме должна быть установлена ответная часть такого разъёма.

Тот разъём (несколько штырьков), который изначально был установлен на плате конвертера USB-UART, предварительно выпаян ввиду его бесполезности. Последовательно со всеми сигнальными проводами впаяны резисторы. Сопротивления резисторов 4,3К уменьшены до 1К (хотя это непринципиально), резистор 100 Ом оставлен с тем же номиналом. Схема всех соединений между конвертером и МК осталась без изменений. Программное обеспечение для этого способа прошивки МК подходит такое же, как и в указанной выше статье «Как прошить микроконтроллер ATtiny или ATmega без программатора».

В данной статье использован конвертер интерфейса на микросхеме PL2303 . Но существуют аналогичные преобразователи и на других микросхемах. Например, в статье «Конвертер USB-UART на CH340G: дорабатываем до RS232TTL, тестируем, сравниваем» подробно описан подобный модуль на микросхеме CH340G .

Ещё об одном способе использования конвертеров USB-RS232TTL читайте в статье «Подключение и тестирование LCD 240RGBx320 c параллельным интерфейсом».

Источник

КОНВЕРТЕР USB-UART: ПЕРЕПРОШИВКА АДАПТЕРОМ

Ремонт любой сложной электронной техники, в настоящее время можно условно разделить на два варианта: либо программный ремонт, “софтовый”, либо ремонт аппаратный, на уровне “железа”. Если первый подразумевает собой просто настройку аппарата, которую способен выполнить любой пользователь знакомый с техникой, в случае если по каким-либо причинам его настройки сбились в процессе эксплуатации.

Ремонт аппаратный — это чаще всего пайка, замена определенных радиодеталей которые вышли из строя по различным причинам. Будь то перегрев, например из-за набившейся пыли в корпусе устройства, и как следствие худшая теплоотдача, или же попадание влаги и в результате короткое замыкание. Либо то-же самое, любимое всеми мастерами КЗ устроенное на плате поселившимися насекомыми в корпусе устройства), а следы их деятельности, на платах, встречаются нередко.

Прошиваем с помощью клипсы

Но существует и третий вид ремонта, обычно применительно к цифровой технике, в котором эти два вида ремонта бывают совмещены — это перепрошивка устройства. И если смартфон или планшет мы можем перепрошить просто подключив его к компьютеру по USB кабелю, то например, с роутером, материнской платой или видеокартой такой способ не пройдет. Все они содержат в своем составе Flash память, специальную микросхему, обычно 24 или 25 серии, в которой и хранится наша прошивка.

Микросхема памяти 25 серия

С материнскими платами и видеокартами обычно все просто — нужен программатор Flash и EEPROM памяти, например простой и дешевый CH341A о котором и пойдет речь, как одном из вариантов для решения нашей проблемы. Также для прошивания памяти без выпаивания будет нужна специальная клипса, для прошивания микросхем в корпусе SO-8 или SO-16. У меня есть обе клипсы в моей домашней мастерской.

Читайте также:  Глазурь для изразцов своими руками

Клипса для прошивания SO-8

Первая из них, для микросхем в корпусе SO-8, обычно бывает нужна во много раз чаще, чем вторая, для микросхем в корпусе SO-16. Которая пригодилась мне всего один раз для перепрошивки роутера Zyxel, они же, к слову сказать, так как считают себя известным брендом, оригинальничают и ставят иногда микросхемы в подобных корпусах SO-16, и хорошо еще если не микросхемы 29 серии, кто в теме — тот сразу поймет.

Разъем клипсы SO-16

Дело в том, что для того чтобы прошить микросхему 29 серии, нам необходим намного более дорогой программатор — MiniPro TL866A, который у меня также есть, но нет ни переходника с корпуса Dip на данный корпус, который имеет очень частое расположение ножек, и по сравнению с пайкой которого паять микросхему в SMD корпусе, те же SO-8 или SO-16 — детская забава. Так вот, мне на ремонт достался как раз роутер Zyxel с микросхемой 29 серии. В первый раз когда я ремонтировал предыдущий роутер Zyxel, микросхема была последовательной памяти, 25 серия, пусть и в корпусе SO-16. Тогда, как вы понимаете, выполнить ремонт было в разы проще.

Микросхема памяти 29 серии

Так как же все-таки мы можем восстановить роутер, если нам “повезло” и у нас стоит именно такая микросхема 29 серии? Производители роутеров, в данном случае, предусматривают аварийное перепрошивание через TFTP сервер. Но проблема в том, что иногда у нас бывает затерт загрузочный раздел в памяти микросхемы, который называется U-Boot. В таком случае вам подойдет вариант прошивки памяти роутера по определенным адресам, которые вы должны будете найти самостоятельно на специализированных форумах по перепрошивке роутеров. Но обычно все бывает намного проще — прошивка сбилась, данные необходимые для работы роутера в штатном режиме потеряны, но загрузочная область и калибровочная область целы. В Таком случае будет нужен простой и дешевый адаптер USB-TTL, стоимость которого на Али экспресс составляет всего порядка 40 рублей.

Также подойдет адаптер на микросхеме CH340A, который используется для заливки скетчей в плату Ардуино Pro mini, которая не имеет распаянного на плате загрузчика CH340A. Так-же подойдут адаптеры на базе pl2303, либо программатор Flash и EEPROM памяти CH341A, про который уже писал выше, и который может после перестановки перемычки работать в режиме USB-UART адаптера.

Программатор Flash и EEPROM памяти + USB-TTL

В крайнем случае можно будет воспользоваться кабелем для прошивания от старого мобильного телефона, также содержащим конвертер USB-COM, только нужно будет обязательно согласовать уровни по питанию. Питание с адаптера необходимо брать строго 3.3 вольта, никаких 5 вольт, которые он может выдавать, с определенного пина. Итак, допустим у нас есть этот адаптер, (вернее любой из перечисленных выше), мы установили для него драйвер, зашли в диспетчер устройств в Windows и определили, какому номеру СОМ порта соответствует наш адаптер. А данный адаптер это и есть не что иное, как виртуальный СОМ порт в вашей системе.

Ищем номер СОМ порта

Затем нам нужна какая-либо программа — терминал, в которой с помощью консольных команд, мы и будем восстанавливать наш роутер перепрошивая его. Но перепрошивать роутер мы будем не через данный адаптер, адаптер используется только для управления процессом прошивки. Как же в данном случае мы прошьем роутер? Существуют, конечно, варианты прошивки роутера через его процессор ARM по интерфейсу JTAG, и у меня есть и этот программатор, приобретенный на Али экспресс — это программатор Wiggler, подключаемый по LPT интерфейсу, но попробовав разобраться с ним решил, что способ перепрошивки с помощью TFTP сервера намного проще.

Программатор JTAG Wiggler

Разберем подробнее данный, более простой вариант, для которого JTAG программатор не нужен, это перепрошивка, как уже писал выше, через TFTP сервер. Для этого нам потребуется, подключить наш адаптер USB–UART к 4 пинам на плате роутера. Правда иногда бывает так, что производитель контактные площадки и дорожки развел, а сами пины не впаял. В таком случае можно самостоятельно впаять гребенку состоящую из 4 пинов, приобретенную в радиомагазине либо выпаянную с донорской материнской платы или какого другого устройства.

Читайте также:  Домашние стенды своими руками

Эти пины в принципе можно даже не впаивать если нет возможности, а просто аккуратно подпаяться к пятакам на плате, контактным площадкам, куда должны были быть впаяны эти пины. Для этой цели очень удобен тонкий провод МГТФ. Итак, мы подключили адаптер к компьютеру, установили драйвер, обеспечили необходимое нам надежное соединение с этими 3 из 4 пинов на плате.

Джамперы Ардуино для адаптера

Для соединения с гребенкой удобно использовать джамперы, перемычки, используемые для подключения плат Ардуино к шилдам. Каким же образом, нам нужно соединить данные 3 провода? И почему всего три, если контактов четыре? Питание на роутеры не рекомендуют подавать от адаптера, питание должно приходить от собственного блока питания. Поэтому плюс питания лучше отсоединить, даже если вы используете как и положено напряжение 3.3 вольта.

Соединение адаптера и роутера — схема

Земли устройств, соединяемых между собой при перепрошивании, нужно объединять, поэтому землю, пин GND, подсоединить нужно будет обязательно. А вот оставшиеся два пина, RX и TX, нужно подсоединить “перекрестив” их между собой, то есть RX соединить с TX, а TX, с RX. Итак, мы подключили все правильно, затем нам нужно правильно настроить терминал, я предпочитаю пользоваться Putty, для того чтобы иметь возможность управлять нашим роутером через консоль, и соответственно залить в него новую прошивку.

Значит мы выбираем в настройках Putty порт Serial, последовательный порт, или СОМ порт, затем устанавливаем нужный номер СОМ порта, который мы предварительно посмотрели в диспетчере устройств. После этого нужно настроить скорость СОМ порта, обычно это 57600, реже 115200 бод. И наконец, убедившись еще раз, что все соединено правильно, ничего на плате не “коротит”, не будет замкнуто, в процессе перепрошивки, мы войдя заранее в настроенную консоль и подаем питания на роутер от родного блока питания.

Кракозябры в терминале

Если у вас на экране, побежали “кракозябры”, значит вы неправильно настроили скорость СОМ порта и нужно либо почитать какая скорость должна быть установлена для вашей модели роутера, либо подобрать ее экспериментально до пропадания “кракозябров” и появления обычного текста. Затем нужно будет нажать, сразу после включения питания роутера, поймав нужный момент, что бывает не так просто, определенную комбинацию клавиш, либо tpl, для роутеров TP-Link, либо цифры 4, вход в консоль, либо цифру 2, для роутеров Zyxel, запуск перепрошивки с TFTP сервера.

Интерфейс TFTP сервера

Сам сервер должен быть запущен от имени администратора в сетевых подключениях, там должен быть указан ip адрес сервера, который подскажет либо консоль, либо можете самостоятельно найти в интернете. В TFTP сервере нужно будет указать ip адрес клиента и папку, в которой находится наша прошивка.

Меняем настройки сетевого подключения

Сама прошивка должна быть обязательно без Boota, то есть когда мы шьем прошивку прицепившись клипсой, через программатор 25 серии SPI, нам необходим Фуллфлеш, или иначе говоря прошивка с загрузчиком, в данном случае прошивка должна быть стандартная, без загрузчика, какую обычно предоставляет производитель, на своем сайте. Имя файла прошивки лучше сделать попроще, например 123.bin, его будет нужно ввести в консоли, при запуске процесса перепрошивания.

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

Объяснение процесса прошивания получилось конечно объемное, но сам процесс для человека выполнившего его хотя бы пару раз, становится довольно простым делом. А учитывая, что роутеры это техника, которая долго не живет, особенно в период, когда проходят грозы, в мае — июне, думаю данная статья будет полезна новичкам желающим сэкономить средства на покупке нового роутера. Всем удачных ремонтов! Специально для сайта Радиосхемы — AKV.

Форум по обсуждению материала КОНВЕРТЕР USB-UART: ПЕРЕПРОШИВКА АДАПТЕРОМ

Тонкомпенсированный регулятор громкости с адаптацией к регулятору тембра — теория и практика.

Предусилитель со стерео темброблоком для усилителя мощности, собранный на ОУ 4558.

Сборник из 10 конструкций и схем приставок к цифровым мультиметрам, расширяющих функционал измерительных приборов.

Источник

Оцените статью