Как подключить микросхему к компьютеру
"Прошиваем" микроконтроллеры. Часть 1. Знакомство.
Микроконтроллер относится к программируемому типу микросхем, на основе которого можно собрать схему какого либо автоматического устройства. Такое устройство может представлять собой простейшую схему с мигающим светодиодом, или автомат, выполняющий сложные вычисления и управляющий другими устройствами. Основной элемент в обоих случаях может быть одним и тем же микроконтроллером, разница будет состоять лишь в записанной в него программе.
Доступность микроконтроллеров и простота составления своих собственных программ для них, делает микроконтроллеры очень заманчивым для сборки разнообразнейших схем. Раньше, для изменения функций устройства, построенного на обычных логических микросхемах, требовалось изменять саму схему, выпаивать и впаивать детали, а теперь конструкцию на микроконтроллере обычно достаточно лишь перепрограммировать. Отчасти как раз из-за этой простоты изменения функций, микроконтроллеры быстро вытеснили устройства, построенных на множестве логических элементах.
Программы для микроконтроллеров могут быть написанны на различных языках программирования с использованием специальных компьютерных программ. Написанная и преобразованная (откомпилированная) программа переносится в микроконтроллер с помощью программатора.
Программатором называют электронное устройство, к которому подключается микроконтроллер, а так же программатор - это компьютерная программа, управляющая процессом переноса подготовленной программы из компьютера в микроконтроллер.
Конструкцию с микроконтроллером, в который прошивается прошивка, называют целевой конструкцией или целевой схемой.
Определить, какое именно значение слов "программатор" или "прошивка" употребляется, можно обычно из контекста. Далее мы убедимся, что это не так сложно.
Большинство программ-программаторов могут быть настроены для работы с разными схемами программаторов-адаптеров. Программатор-адаптер подключается к компьютеру через какой либо порт ввода-вывода. В настоящее время существуют три наиболее распространённых возможности подключения программатора к компьютеру по какому либо порту:
В течении последних лет параллельный порт принтера LPT и последовательный COM-порт были вытеснены USB-портом. Тем не менее всё ещё имеются в продаже отдельные платы расширения для LPT- и/или COM-порта. Такие карты ("мультипортовки") можно дополнительно установить в уже имеюшийся компьютер, но дополнить ноутбук COM- или LPT-портом нельзя или крайне сложно.
Рис. 1. USB-COM адаптер.
Вместе с тем практически на всех современных компьютерах и ноутбуках имеется хотя бы один USB-порт, а так же распространены недорогие адаптеры USB-COM, которые позволяют создавать на компьютере с USB-портом недостающий COM-порт.
Часто схемы программаторов для USB-порта достаточно сложны для повторения начинающими электронщиками, и нередко содержат микроконтроллер, который тоже необходимо сначала каким то образом прошить, можно посоветовать несложную схему программатора, подключаемого к компьютеру на COM-порт или на USB через адаптер USB-COM. Через существующие адаптеры USB-LPT прошить микроконтроллер не удасться, так как эти адаптеры "эмулируют" не LPT порт, а лишь управляют работой с принтером.
Нужно предупредить, что программа в микроконтроллер через USB-COM-адаптер загружается в десятки раз дольше, чем через "нормальный" COM-порт и с этим придётся мириться.
Пожалуй, большинство начинающих выбирает восьмибитные AVR-микроконтроллеры RISC архитектуры фирмы ATMEL из-за их гибкости, хорошо описанных примеров применения и невысокой цены. Эти микроконтроллеры, как и множество других, могут быть запрограммированны через ISP-интерфейс.
ISP-интерфейс состоит из пяти проводников: MOSI, MISO, SCK, RESET и GND. Подключение ISP-программатора позволяет программировать микроконтроллеры, (в большинстве случаев) не извлекая сам микроконтроллер из схемы.
Среди радиолюбителей распространнено много схем-программаторов для последовательного COM-порта. Многие из них собраны на нескольких транзисторах и стабилитронах, и даже на нескольких резисторах. Достоинством таких схем является их простота, но они имеют и важный недостаток. Дело в том, что стандат RS-232 допускает отклонения уровней напряжения на выводах COM-порта, причём эти отклонения у разных производителей компьютеров могут сильно меняться, всё же оставаясь при этом в разрешённых пределах. Поэтому такая простая схема, работающая на одном компьютере, может работать с перебоями на другом или не работать совсем. Очень неудобно и то, что программатор, собранный по простейшей схеме, необходимо каждый раз подключать и отключать от целевой конструкции на время сеанса прошивки.
Вышеперечисленных недостатков лишина схема на Рис. 2. Это программатор для последовательного COM-порта всего на двух распространённых микросхемах: микросхемы RS232-драйвера MAX232 (или аналога) и логической микросхемы 74LS240 (отечественный аналог К555АП3).
Микросхема MAX232 представляет собой широкораспространённый четырёхканальный драйвер (преобразователь уровня) интерфейса RS-232 (примерно от минус 12 до плюс 12 вольт) к уровням CMOS/TTL (уровень 5-вольтовой логики). Микросхема 74LS240 является сдвоенным инвертирующим буфером четырёх линий с разрешением выхода.
Рис. 2. Схема myPROGGER.
Программатор, собранный по этой схеме обладает следующими достоинствами:
- благодаря MAX232 происходит гарантированное преобразование уровней сигналов
- программатор не требуется отключать от схемы после прошивки
- в схему программатора можно легко внести модификации, которые будут полезными в дальнейшем
- эту схему можно использовать как при работе через COM-порт, так и через переходник USB-COM
- с этой схемой работают многие программы-программаторы (например, avrdude и PonyProg200).
Кстати, существует еще и MAX3232 это то же самое, но на выходе у него не 5вольт TTL, а 3.3 вольта TTL. Её используют для низковольтных контроллеров.
Я себе сделал один такой универсальный шнурочек, чтобы к контроллерам цепляться было удобно по UART . Для общей компактности всю схему запихал прям в разъем, благо у меня были ST232 в soic корпусе. Получилась платка не больше рублевой монеты. Так как под рукой не было мелких SMD конденсаторов, то пришлось напаять кондеры сверху, кто во что горазд. Главное работает, хоть и не очень красиво вышло.
Если сомневаешься, что у тебя получится столь мелкий монтаж, то я тебе развел плату на стандартный PDIP корпус. Размером она будет со спичечный коробок, зато мельчить не надо.
После сборки проверяется просто:
Втыкается в разъем COM порта. Подается 5 вольт питания на схему, а затем замыкаешь Rx на Tx (у меня это зеленый и желтый провода).
Плата сделана была методом ЛУТ, в одном месте по моему недосмотру толщина просвета оказалась 0.05мм, протравилась, но со спайками, пришлось процарапывать. А в целом с первого раза ать и никаких проблем. Аж сразу захотелось сделать что нибудь маленькое маленькое, нафаршированное нафаршированное :)
Все, аппаратная часть для связи микроконтроллера с компом готова. Ждите следующего поста в котором я расскажу как конфигурировать и использовать UART в микроконтроллерах AVR . В будущем я буду через UART осуществлять отладочную связь с компом. Может быть даже ради этого соберу отдельный модуль с LCD экранчиком. Для отладки в железе. Посмотрим как попрет.
Спасибо. Вы потрясающие! Всего за месяц мы собрали нужную сумму в 500000 на хоккейную коробку для детского дома Аистенок. Из которых 125000+ было от вас, читателей EasyElectronics. Были даже переводы на 25000+ и просто поток платежей на 251 рубль. Это невероятно круто. Сейчас идет заключение договора и подготовка к строительству!
А я встрял на три года, как минимум, ежемесячной пахоты над статьями :)))))))))))) Спасибо вам за такой мощный пинок.
165 thoughts on “Связь микроконтроллера с компьютером через RS232”
Парадокс однако, последовательные порты в писюках пропадают. А потребители последовательных портов множатся =)
Будет! Когда найду где купить эту гребанную FT232 а заказывать за 3 цены из Москвы совершенно не хочется.
Да COM у меня гдет в глубине, а USB на морде. ПЛюс на ноуте нет СОМ порта, а хочется :)
А чо за камеры за 10 баксов да еще с RS232? Чтот не верится.
Классно, у нас таких цен нет :( Все везут сначала в Москву, а потом только к нам. Выходит раз в 5-10 дороже.
Не смогли бы вы скинуть фотку платы видеопередатчика описываемого выше?
Много надо?
Могу прислать сколько-нибудь.
В приставки спутниковой антенны, она там стоит для прошивки приставки.
Сейчас проще уже сразу Obdev AVR-USB использовать, а в пару ему загрузчик BootloadHID. Лишь бы кварц не меньше 12 МГц был.
А как с этим Obdev AVR общатсья с компом? Он виртуальный COM порт открывает?
Сколько памяти в кристалле сжирает код USB?
Драйвер памяти кушает
1.5 Кб, зависит от конфигурации. На tiny2313 точно влезало, даже ещё место под свой код оставалось.
HIDBoot кушает 2 Кбайта.
Вопрос: какую набольшую длину кабеля можно сделать от платы с MAX232 до выводов контроллера ? и какая наибольшая длина может быть у кабеля от MAX232 до COM порта, если делать девайс на стороне контроллера ?
У меня от МАХ232 до контроллера 1.5 метра, от MAX232 до порта тоже было 1.5 метра, работало без сбоев. ПОдозреваю, что можно и много больше, по крайней мере раза в два три точно. Но тут уже от скорости передачи зависит.
Это чистый 12В рс232. Поэтому от МАкс до контроллера сильно лучше не удалять.
Я писал про случай Макс-COM.
На быстром обмене можно не заморачиваться на создание буффера и слать посимвольно. На медленной скорости будет тупить вся прога на передаче =)
Гдето давно схемка была датакабеля для симена с25,на мах232 дак там и питание от ком порта было и вся схема с микрой в дипе в пластмассовый корпус разъёма влезала
Действительно, лучше уж сразу про USB статью делать. Простейший пример я в ЖЖ постил.
Да он еще столько же проживет. Может и не на пользовательских компах, но вот в промышленных решениях точно!
FT232 спасет отца русской демократии :)
Всё зависит от случая. Иногда устройство по USB только синхронизируется с компом, не выполняя в этот момент своих основных функций. В таком случае оно гораздо удобнее.
Открываю ГиперТерминал, выбираю подключиться через com 1, пишу текст. Что я должен увидеть?
Свой же набранный текст к тебе должен вернутся (при отключеном эхе). Если схема собрана верно и работает.
Еще вопросик. В печатной плате. номерация площадок для приклеивания разьема RS232 с лево на право 1,2. 5. Когда начал прикладывать разем к спаеной плате получилось, что цифры не на разьеме и на плате не совпадаю. 1(RS232) напротив 5 (плата), 2(RS232) напротив 4 (плата) и т.д. это так и задумывалось? или на печатной плате в электронном виде перепутан порядок цифр?
Нет, все нормально. Это я маму с папой перепутл. Когда взяд маму все цифры совпали :). Тока еще вопрос есть. если нумерация ног начинается от метки с возростанием номера ноги против часовой стрелко, то как Тх и Rx попали на 7 и 8 ногу Мах232. Должны наверно быть 15 и 16 (в тексте статьи)
да кстати. про ноги тоже заметил, только не 15,16 а 9,10.
Хотел купить микруху MAX232, а её в прайсе нет, но есть другие, какую брать? Самую дешёвую? ;-) И чем они отличаются?
MAX232AEJE 127.65руб.
MAX232AEPE+ 71.63руб.
MAX232AESE 63.86руб.
MAX232AESE+ 58.64руб.
MAX232AEWE 56.11руб.
MAX232AMJE 223.67руб.
MAX232CPE 22.12руб.
MAX232DR PBF 9.83руб.
MAX232ECDW PBF 21.07руб.
MAX232EEPE 56.53руб.
ST232ABDR PBF 22.42руб.
ST232ACDR PBF 11.59руб.
ST232BDR PBF 12.64руб.
ST232BN PBF 16.22руб.
ST232CDR PBF 11.24руб.
ST232CN PBF 11.59руб.
Разница только в производителе и в типе корпуса. Еще в температурном диапазоне.
Если вас интересует подключение микроконтроллера (здесь и далее МК), а также подключения к нему кнопки, питания, или светодиода. Или вы хотите знать что делать с выводами AREF или AGND, что представляет собой AVCC. И собственно понять как все таки подключить микроконтроллер то данная статья сможет вам слегка приоткрыть занавес в изучении мира микроконтроллеров.
Все нижеописанное относится к AVR контроллерам, но в случае с PIC все процедуры схожи, из-за единства принципов.
Питание микроконтроллера
В своей работе МК использует электроэнергию. Поэтому для того, чтобы правильно выполнить подключение микроконтроллера, требуется напряжения от 1.8 до 5 В. Любой МК AVR работает с напряжением от 5 Вольт. Поэтому примем это напряжение как эталон от него и будем отталкиваться. Оно имеет обозначение VCC.
Если вы в качестве питания для микроконтроллера планируете использовать батарейки, то минус батареек обозначим как GND, а их плюс, как VCC.
При этом важно, чтобы напряжение от батарей сохранялось в нужных лимитах для конкретной модели МК. Эти данные указаны в datasheet (документации) на микроконтроллер.
Такой вопрос как подключение микроконтроллера должен учитывать то, что существуют низковольтные модели (как 2313V), их нижний уровень напряжения будет значительно занижена. Также важны частоты. Здесь показано то, как наибольшая частота может зависеть от напряжения. Очевидно, что при низком уровне, предельные частоты будут ниже. При том низковольтные модели вдвое медленней высоковольтных. Но их можно разогнать, как и любой процессор.
Все, что требуется AVR контроллерам для функционирования, это питание. На входы VCC необходимо подавать 5 В. (или же другое значение в зависимости от модели), а входы GND необходимо заземлить.
МК может иметь и ни один вход VCC, а несколько, это же относится и к GND входам (в особенности если они помещены в квадратный корпус TQFP, где питалово на виду). Важно, чтобы питание кристалла было равномерным со всех сторон, для избежания перегрева внутренних питательных цепей.
Иначе может возникнуть ситуация типа следующей: допустим, вы осуществили подключение питалова лишь с одной из сторон чипа. С другой стороны решили установить на каждую портовую линию светодиод, и затем все их сразу и зажгли.
Реакция устройства будет такова: внутренняя шина питания, не поняв заданного параметра электричества, исчезла, а процессор, казалось бы не имея на то никаких причин, вдруг сгорел.
Поэтому очень важно производить правильное подключение всех выводов GND и VCC. Необходимо соединить их требуемым образом и подать нужное питание.
Поэтому в схемах земля бывает аналоговой и цифровой (соединение их должно присутствовать только в 1 точке). Напряжение на AVCC нужно подавать при помощи дроссельного фильтра.
Если не требуется применение АЦП и отсутствует необходимость в точных расчетах измерений, то на AVCC просто подайте 5 вт, равно как и на AGND и VCC, посадите на землю, как и все остальное. Но подключать их нужно!
Простое подключение микроконтроллера AVR
Все это нужно, чтобы контроллер мог заработать. VСС провод до программатора указан пунктирной линией, ибо является опциональным. При наличии внешнего источника питания, в нем необходимости нет. Но все-таки лучше сначала питать общею систему (МК и программатор) от единого источника, так как это даст возможность с успехом опробовать прошивку.
Следует использовать внешние навесные элементы.
Как видишь, добавился дроссель в цепь питания AVCC, а также конденсаторы. Хорошим тоном является ставить керамический конденсатор на сотню нФ между VCC и GND у каждой микросхемы (а если у микрухи много входов питания и земель, то между каждым питанием и каждой землей) как можно ближе к выводам питания — он сгладит краткие импульсные помехи в шине питания вызванные работой цифровых схем. Конденсатор на 47 мкФ в цепи питания сгладит более глубокие броски напряжения. Конденсатор между AVCC и GND дополнительно успокоит питание на АЦП.
Схема сброса
Резистор на RESET. AVR имеет собственную схему сброса, сигнал RESET оснащен резистором на 100 кОм к VCC. Но это не надежно! Лучше подтянуть RST до питания при помощи резистора 10 кОм.
Еще одна схема сброса
Ее преимущество в том, что когда схема включается, конденсатор находится в разряженном состоянии и напряжение на RST почти нулевое, микроконтроллер не начинает свою работу, ибо ему выдается непрерывный сброс. Но вскоре конденсатор получит заряд через резистор и напряжение на RST составит лог1, и МК будет запущен.
Задержка равняется T=R*C ( в примере: 1 сек.). Она требуется, чтобы МК не начал работать раньше остальных устройств.
Тактовый сигнал и его источник
Тактовый генератор является центром МК. По всем импульсам происходят различные операции в контроллере — данные ходят по шинам и регистрам, выводы портов переключаются, и т.д. При большей скорости тактовой частоты, МК будет быстрее выполнять свою работу и использовать большее количество энергии.
Задают импульсы при помощи встроенного в МК тактового генератора, или внешнего. Быстрота внутреннего генератора может зависеть от настроек МК и обвязки.
- внутренний (имеющий внутреннюю задающую цепочку RC).
- Обвязка не нужна. Выводы XTAL2 и XTAL1 нет необходимости подключать, но их можно оставить в качестве портов ввода вывода (при возможности). Выбирается 1 из 4 (по умолчанию) значений внутренней частоты.
- внутренний(имеющий внешнюю задающую RC цепь).Нужен внешний для мк резистор и конденсатор. Можно менять в процессе тактовую частоту, изменяя значение резистора.
- внутренний (имеющий внешний задающий кварц).С внешней стороны устанавливается кварцевый резонатор и 2 конденсатора. При низкочастотном кварце (до 1 МГц) конденсатор не потребуется.
- внешний. Другое устройство подает на вход МК прямоугольный сигнал, задающий такты.
Плюсы различных схем
При наличии внутренней цепи RC мы может получить экономию места на плате, не потребуются дополнительные элементы, но не будет максимальной частоты, плюс она будет зависеть от температуры.
Внешний кварц является точным, нужны дополнительные элементы. Возможен максимальный уровень производительности МК.
Методы тактования МК можно посмотреть в даташите в System Clock and Clock Options, при этом важна конфигурация фьюз битов. Фьюз биты лучше не трогать, если пока вы не являетесь спецом в настройках.
Как подключить кнопку или светодиод к микроконтроллеру
Светодиод или кнопку можно подключить используя ряд нехитрых операций:
Для кнопки необходимо выбрать ножку I/O, и произвести ее подключение при помощи кнопки на землю. Конфигурация самого вывода будет представлять собой DDRxy=0 PORTxy=1 (вход с подтяжкой).
При этом, если кнопка не находится в нажатом положении, при помощи подтягивающего резистора, вход будет иметь большое напряжение, а из бит PINху при чтении мы получим 1. При нажатой кнопке, вход будет на земле, а напряжение на этом входе упадет до нулевого, из PINxy будет прочитываться 0. По нулевым позициям в битах PINх регистра нам становится известно о нажатом состоянии кнопки.
Пунктиром выделен еще один подтягивающий резистор. Хотя внутри AVR возможно подключение к порту подтяжки, она будет ненадежной: 100 кОм. Поэтому она может быть просто придавлена к земле при помощи наводки или помехи, что даст ложное срабатывание. Для хорошей схемы необходима внешняя подтяжка на 10 кОм.
Способы подключения светодиода к порту
Всего существуют 2 схемы:
В первом случае диод зажигается при выдаче в порт логический ноль: уровень низкий (близок к нулю). При втором способе, чтобы диод зажегся, следует выдать в порт логическую единицу: уровень высокий, приравненный к значению VCC.
Для AVR подходит любой их этих способов, но старые модели МК тянули вниз лучше, поэтому Порт-Питание более популярен. Настройка вывода порта на выход для светодиода (DDRxy=1), при этом, зависимо от параметра в PORTxy ножка будет иметь либо низкое либо высокое напряжение.
Производить подключение светодиода следует через резистор. Так как уровень прямого сопротивления светодиода небольшой. И при отсутствии лимитов проходящего сквозь него тока, он может сгореть, а также прожечь вывод МК. Для нормальной работы светодиода достаточно примерно 3…15 мА.
Как следует из названия программатора, его основная часть – это микросхема CH341A. Рядом с ней располагается кварцевый резонатор на 12 МГц, а также стабилизатор напряжения AMS1117, который выдаёт 3,3 вольта. По бокам от USB разъёма, которым программатор подключается к компьютеру, располагаются светодиодные индикаторы: сверху (на фото) – индикатор питания (POWER), а снизу – индикатор обмена данными между ПК и программатором (RUN). Он включается, когда программатор считывает данные из программируемой микросхемы и когда происходит запись.
Верхняя сторона программатора CH341A
Нижняя сторона программатора CH341A
По названиям выводов понятно, что верхняя (на фото) гребёнка предназначена для обмена по интерфейсу SPI, а нижняя – по UART. Также тут имеется площадка для пайки, на которую можно припаять программируемую микросхему.
С помощью перемычки, которая по умолчанию установлена между контактами 1 и 2, можно менять режим работы программатора. Так, если перемычка установлена между контактами 1 и 2, программатор работает в параллельном режиме и определяется в диспетчере устройств Windows как параллельный порт (USB-EPP/I2C), а если между контактами 2 и 3 – в последовательном режиме и определяется в диспетчере устройств как COM-порт.
Программатор предназначен для чтения и записи данных в микросхемы flash-памяти серий 24 и 25. На шелкографии на нижней стороне программатора CH341A указано, каким образом нужно подключать программируемую микросхему каждой из серий. Приобрести программатор можно на Али-Экспресс, например, здесь, а подходящие микросхемы памяти здесь.
2 Софт для работы с программатором CH341A
Программатор CH341A поставляется с программой, которая, к сожалению, давно прекратила своё развитие. Последняя версия программы 1.30 датируется 2009 годом. Программа имеет предельно простой и интуитивно понятный интерфейс, который мы подробней рассмотрим чуть далее.
Программное обеспечение программатора CH341A
Также существует альтернативное программное обеспечение (например, Программатор SPI, I2C, Microwire FLASH/EEPROM v1.4.0), которое, к сожалению, также не отличается дружелюбным интерфейсом и на сегодняшний день более не поддерживается.
Однако, со своей основной задачей программатор вполне успешно справляется даже со штатным программным обеспечением. В чём мы сейчас и убедимся.
3 Чтение и запись ПЗУ с помощью программатора CH341A
Установим программируемую микросхему в DIP-панель и зажмём с помощью специального рычага. Первая ножка микросхемы flash-памяти обозначена на корпусе точкой.
Программируемая микросхема в ZIF-панели под микроскопом
На нижней стороне программатора, как мы уже видели, отмечено, как необходимо располагать программируемую микросхему.
Программируемая микросхема в DIP-панели программатора CH341A Программатор CH341A
Будьте предельно внимательны при установке программируемой микросхемы. Если её неправильно (и неудачно) подключить, можно вывести из строя или микросхему, или сам программатор. Явным признаком неправильного подключения микросхемы может служить сильный разогрев частей программатора или программируемой микросхемы.
После установки драйвера запустим программу CH341A Programmer. Программа автоматически определит, что программатор подключён. В правом нижнем углу в статусной строке программы появится надпись, оповещающая о том, что программа нашла программатор: Состояние: Подключено
Если программа не определила программатор, статусная строка отобразит соответствующее предупреждение.
Программа для работы с программатором CH341A
После того, как чип выбран, нажмите кнопку «Чтение». Программа прочитает и отобразит содержимое чипа в шестнадцатеричном формате (а также в виде текстовых символов в кодировке ASCII).
Кстати, в программе отображается подсказка в виде изображения, как должна быть расположена микросхема при программировании. Так вот, не смотрите на неё. Правильное положение указано на самом программаторе CH341A, как мы видели ранее, и оно не совпадает с нарисованным в программе.
Можно убедиться в том, что данные успешно записаны, отключив программатор от компьютера, а затем подключив его и заново считав содержимое ПЗУ .
Как правило, расширения файлов для хранения данных ПЗУ – *.bin, *.hex и *.rom.
Читайте также: