Max232 подключение к компьютеру

Обновлено: 01.07.2024

Продолжение переводов руководства для начинающих от SparkFun [1]. Эта часть посвящена обмену данными с помощью последовательного интерфейса UART.

Предыдующая часть: Введение во встраиваемую электронику, часть 3 (варианты тактирования микроконтроллера, подключение кварцевого резонатора, программирование фьюзов).

ATmega168 обладает богатой встроенной в ядро аппаратурой. Давайте освоим последовательную передачу данных. У нас уже есть макет работающей системы (микроконтроллер, запущенный на частоте 16 МГц), собранный на breadboard. Мы закачали WinAVR, научились пользоваться компилятором, прошивать программу в память микроконтроллера, попробовали управлять портами на примере мигания светодиодом LED. Настало время передать данные в компьютер и обратно.

Я не особо крутой кодер. Мне просто нужно, чтобы оператор printf() делал то, что он обычно должен делать. Я не использую аппаратный отладчик (наподобие JTAGICE mkII [2] или AVR Dragon), и отлаживаю свои программы с помощью операторов printf. Конечно, такая отладка имеет свои ограничения, но для 90% приложений это работает очень хорошо.

[RS-232]

Сначала окунемся немного в историю интерфейса RS232 (именно его может реализовать встроенный в AVR аппаратный интерфейс UART). Что такое RS232? Это просто имя для стандарта, который был широко известен среди нескольких поколений компьютеров. Первые компьютеры имели последовательные порты, которые использовали RS232, и даже сейчас компьютеры имеют последовательные порты (или как минимум порты USB, которые через специальный переходник USB <--> COM работают как обычный порт RS232). Много лет назад, как и сейчас, последовательные каналы связи были нужны для передачи данных в устройства наподобие принтеров, джойстиков, мышей, модемов, сканеров и т. п., и даже для передачи данных в другой компьютер. Самый простой путь реализовать последовательный интерфейс - передать серию единичек и нулей в компьютер и из него. Получается схема передачи данных точка-точка. С обеих сторон последовательного интерфейса - например, с одной стороны компьютер, с другой стороны принтер - используется заранее обусловленная скорость передачи данных 'bits per second' (bps, бит в секунду). Компьютер передавал бы блок данных принтеру на скорости 9600 bps, и принтер прослушивал бы этот поток 0 и 1, и ожидал бы появление каждого нового бита каждые 1/9600 = 104 мкс (104 микросекунды, 0.000104 секунды). Так как компьютер использует заранее известную скорость, принтер сможет понять и прочитать этот поток данных. На рисунке показана стандартная цоколевка коннектора COM-порта компьютера (это и есть RS-232), расположенного на задней стенке системного блока. Показан вид снаружи, со стороны штырей (разноцветными галочками обозначены соединения RS-232, которые мы будем использовать, остальные сигналы нам не понадобятся).

rs232-pinout

Давайте переключимся теперь в наши дни. Сейчас электроника несколько изменилась. Раньше использовались довольно мощные, высоковольтные устройства. Стандарт RS232 диктует использовать для передачи 1 и 0 уровни напряжения -12V и +12V. Современная электроника не работает с такими высокими положительными и отрицательными напряжениями. В действительности все логические уровни нашей ATmega168 составляют 0V и 5V, и все входные и выходные сигналы должны лежать в этом диапазоне напряжений. Как же сделать, чтобы 5V микроконтроллер смог работать с напряжениями +/-12V интерфейса RS232? Эта проблема решается применением специальной микросхемы, которая чаще всего известна как MAX232 (название очень напоминает RS232, верно?).

Микросхема MAX232 изначально была разработана компанией Maxim. Это преобразователь уровней цифровых сигналов. Микросхема преобразует сигналы +/-12V интерфейса RS232 в сигналы 0/5V, которые может воспринять ATmega168. Микросхема также увеличивает уровни выходных сигналов ATmega168, чтобы они соответствовали уровням +/-12V протокола RS232, чтобы компьютер мог понять ATmega168, и наоборот. Чтобы наш ATmega168 мог передать последовательные символы данных в компьютер, мы должны передать эти сигналы через схему на MAX232, в результате чего компьютер получит сигналы RS232 с уровнями +/-12V. Не беспокойтесь о том, что микросхема преобразователя уровней промаркирована как 'ICL232' или 'ST232' - это просто аналоги MAX232. Имя MAX232 стало нарицательным, точно таким же как "ксерокс" и "кока-кола". Все эти преобразователи уровней RS232 работают примерно одинаково, и часто даже имеют одинаковую цоколевку выводов и похожую схему включения (может варьироваться напряжение питания 3.3V или 5V, а также номиналы конденсаторов вольтдобавки).

Вот типичная схема включения MAX232, которую мы соберем на плате breadboard:

UART-MAX232

Для генерации повышенных напряжений MAX232 использует 3 конденсатора вольтдобавки (C5, C6, C7), их нужно подключить к микросхеме. Также обязательно нужен конденсатор фильтра питания C8 (так называемый развязывающий конденсатор) - он сглаживает пульсации, и должен быть установлен максимально близко к микросхеме MAX232 (подключен к выводам VCC и GND проводами минимальной длины). Для генерации повышенных напряжений MAX232 использует быстро переключающиеся ключи, которые генерируют значительные импульсы тока. Эти импульсы тока образуют провалы и выбросы в напряжении питания, и C8 помогает их уменьшить. Будет ли работать микросхема MAX232 и без конденсатора C8? Да, будет. Но попробуйте-ка обойтись без этого конденсатора. Наступит такой день, когда что-то перестанет работать, и Вы не будете знать почему. Может быть, ошибка в коде? Или что-то коротит? Может, не контачит? Или все-таки мало поставлено развязывающих конденсаторов?

Развязывающий конденсатор предназначен для быстрой подачи дополнительной энергии, когда от тока нагрузки проседает питающее напряжение - примерно так же, как срабатывает UPS (источник бесперебойного питания), когда сетевого напряжения для питания компьютера недостаточно. Чем дальше находится от микросхемы развязывающий конденсатор, тем выше может быть уровень пульсаций на микросхеме - так как провода имеют собственное сопротивление и индуктивность. Хорошая практика разработки электронных схем - всегда ставить как минимум один конденсатор 0.1uF рядом с микросхемой, и подключать его к выводам её питания максимально короткими и широкими проводниками. Хорошо подойдет расстояние полдюйма и меньше; на плате breadboard это обеспечить довольно трудно, и расстояние будет больше. Конечно, фильтрующие конденсаторы не будут так же хорошо работать, как на хорошо разведенной печатной плате, но их наличие на breadboard не помешает.

JP2 это коннектор DB9 мама. Он так называется 'DB9' потому, что имеет 9 контактов универсального стандартного коннектора RS232. Вам понадобится стандартный "прямой" кабель папа-мама, чтобы соединить коннектор, подключенный к коннектору DB9 breadboard, с компьютером (у компьютера коннектор папа). Окончание 'папа' кабеля имеет металлические штыри, а окончание 'мама' имеет гнезда в черной (или белой, или синей) пластмассе, которые принимают подключение штырей. Если Вы рассмотрите близко соединители папа и мама, то заметите возле их контактов цифровую нумерацию штырьков и гнезд.

Что это все для нас дает? ATmega168 передает 5V сигнал TX в микросхему MAX232. MAX232 преобразует 5V сигнал TX в сигнал с уровнями +/-12V RS232, который компьютер может принять через свой порт DB9 на задней стенке системного блока (или порт DB9 может быть на переходнике USB <--> COM). Обычно это выглядит сначала несколько уродливым. Но такая связь безусловна необходима, она будет использоваться почти в каждом приложении, которое Вы будете разрабатывать.

Прим. переводчика: в Arduino этот канал последовательного обмена данными через UART используется не только для отладки операторами printf, но и для загрузки кода в память микроконтроллера (с помощью бутлоадера UART).

UART-loop-back

Действительно, в современных компьютерах порты RS-232 больше не устанавливают, потому что этот интерфейс считается устаревшим. Вместо него для подключения любых периферийных устройств повсеместно используют интерфейс USB. Поэтому Вы можете приобрести преобразователь USB <--> RS-232, и подключить к своему компьютеру, после чего операционная система Windows обнаружит и установит обычный COM-порт. На фото показан обычный вид такого преобразователя.

USB-RS-232

После того, как Вы все соединили наподобие того, как показано на фото, нужно запустить программу терминала на компьютере. Если Вы работаете под Windows, то у Вас есть программа Hyperterminal, которая обычно доступна через меню Пуск -> Все программы -> Стандартные -> Связь. Те, кто работает в Linux и MacOS, наверняка тоже знают, как запустить программу терминала.

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

UART-hyperterminal-conn-setup1

Здесь нужно указать имя соединения, оно может быть произвольным.

UART-hyperterminal-conn-setup2

На следующем экране нужно выбрать COM-порт, который используется. Предположим, что это COM1.

UART-hyperterminal-conn-setup3

Прим. переводчика: на Windows в качестве терминальной программы можно использовать множество программ: TerraTerm, SecureCRT, putty и многие другие. Настройка "without flow control" означает без управления потоком данных, т. е. для подтверждения приема и передачи не будут использоваться ни аппаратные, ни логические сигналы. Подробнее, что это значит, лучше осведомиться в Википедии.

Отлично, у Вас есть открытое окно гипертерминала с настроенным соединением, в котором Вы можете печатать символы, набирая их на клавиатуре (при этом вводимые символы по каналу связи будут отправляться в порт DB9 RS232). Также у Вас есть MAX232 (или подобная эквивалентная микросхема) которую Вы установили на макет и подключили к ней питание. Перед тем, как соединить MAX232 с микроконтроллером, следует проверить её работу. Самый простой способ - замкнуть накоротко друг на друга сигналы TX и RX (т. е. выводы 11 и 12 микросхемы MAX232). Такое тестовое соединение называется 'loop-back' (толстый желтый провод на фото выше).

После установки перемычки 'loop-back' подключите MAX232 кабелем к компьютеру, включите питание на breadboard, и нажмите клавишу 'A', находясь в фокусе окна программы гипертерминала. Это нажатие преобразуется в код символа A, и затем будет передано в виде единичек и нулей через последовательный порт, и затем через перемычку 'loop-back' вернется обратно в компьютер и будет отображено в окне терминала в виде введенного символа 'A'. Символ A будет закодирован 8 битами '01000001' в битовом представлении, что равно 65 в десятичном и 41 в шестнадцатеричном виде. Эти нолики и единички пройдут весь путь через MAX232, установленную на Вашей плате, сигнал будет преобразован с уровней RS232 в уровни TTL на замкнутых выводах 11 и 12 (R1OUT желтой перемычкой замкнут на T1IN), затем обратно будут преобразованы из уровней TTL в уровни RS232 и попадут обратно в компьютер. Все, что Вы ввели на клавиатуре, должно появляться на экране терминала, это и есть суть теста loop-back. Если снять перемычку, то вводимые на клавиатуре символы не будут отображаться на экране терминала. Все получилось? Отлично. В будущем, когда нужно будет проверить канал связи таким способом, просто замкните сигналы TX и RX на другом конце линии.

Прим. переводчика: чтобы передача данных успешно заработала, необходимо выход передатчика компьютера TX соединить со входом приемника R1IN MAX232, и вход приемника компьютера RX соединить с выходом микросхемы T1OUT MAX232.

Все в порядке, MAX232 работает корректно. Теперь подключите выводы цепи TX и RX к ATmega168, микросхема MAX232 теперь будет подключена к микроконтроллеру (см. полную схему макета ниже).

UART-full-sch

Вы можете заметить, что на схеме магически появился конденсатор C9 рядом с ATmega168. Это развязывающий конденсатор по питанию для ATmega168 номиналом 0.1uF. Этот конденсатор нужно установить как можно ближе к выводам VCC (ножка 7 микроконтроллера) и GND (ножка 8) ATmega168, чтобы снизить шум по питанию, который создает ядро ATmega168. Повторюсь - без этого конденсатора все тоже наверняка будет работать, но я хочу приучить Вас всегда ставить развязывающие конденсаторы во избежание глюков и неприятностей.

UART-breadboard-maket

На фото показано соединение ATmega168 с MAX232 желтым и красным проводами. Внимательный читатель заметит, что на фото вместо MAX232 стоит на самом деле SP3232 (EBCP). Это микросхема компании Sipex, продвинутый аналог MAX232. Заметили цифру 3 перед 232? Оригинальные MAX232 рассчитаны на напряжение питания 5V и логические уровни 5V. Поскольку цифровые схемы на микроконтроллерах имеют тенденцию использования низких напряжений питания 3.3V, то производители микросхем переработали MAX232 на более эффективную версию, которая при малом напряжении питания 3.3V также может генерировать 12V уровни RS232. Напряжение 3V отражено в названии SP3232. Микросхема SP3232 может успешно принимать 3V сигналы и успешно конвертировать их в уровни RS232.

Теперь у нас есть вся необходимая аппаратура, чтобы можно было использовать операторы printf. В следующим уроке мы это попробуем.

Следующая часть: Введение во встраиваемую электронику, часть 5 (компилирование с помощью AVR-GCC, работа с последовательным портом через printf).

Типовая схема подключения контроллера Arduino UNO к компьютеру через USB порт показана на Рисунок 1. Со стороны компьютера канал связи виден как стандартный СОМ порт. Но, на самом деле, это виртуальный СОМ порт с которым компьютер обменивается пакетами данных на частоте 12 МГц, а специализированный контроллер, расположенный на плате Arduino UNO, преобразует пакеты USB данных в последовательность бит в формате асинхронного интерфейса UART с уровнями 0/5В, которые и используются основным контроллером Arduino UNO (микросхема ATmega328P) для загрузки программ и обмена данными с компьютером в процессе выполнения программ.

image


Рисунок 1. Типовое подключение контроллера Arduino UNO к компьютеру через USB порт.

Временная диаграмма последовательной передачи данных по правилам UART устройства с уровнем сигналов 0/5В показана на Рисунок 2. Данные передаются байтами. Помимо данных последовательность содержит стартовый и стоповый биты и может включать другие служебные биты, например, бит контроля четности, применение которого задается в настройках СОМ порта, там же устанавливается и одна из стандартных скоростей передачи.

Примечание. В семействе асинхронного интерфейса UART наиболее известен стандарт физического уровня RS-232, применяемый COM-портом компьютера.

СОМ порт не имеет сигналов синхронизации, временные интервалы формируются как передатчиком так и приемником с точностью тактирования не хуже 5%.

image


Рисунок 2. Временная диаграмма UART последовательной передачи данных (01001011) микросхемы ATmega328P контроллера Arduino UNO.

Контроллер Arduino UNO содержит специализированный контроллер для преобразования UART сигналов в USB последовательность и наоборот. Порт USB компьютера осуществляющий связь с виртуальным СОМ портом работает в режиме Full-speed на частоте 12 Мбит/с (Рисунок 3). Этот режим поддерживает как USB 1.0. так и USB 2.0.

image


Рисунок 3. Измеренный 4В сигнал на дифференциальной линии USB–COM контроллера Arduino. Длина USB кабеля 2м. Частота сигналов на USB линии 12 МГц. Для формирования сигналов использовалась запись данных в СОМ порт контроллера. Частота USB данных 12 МГц не изменялась при записи в СОМ порт как на скорости 9600 бит/c так и 115200 бит/c.

Данные по шине USB передаются пакетами (Рисунок 4). Размеры пакета зависят от типа выполняемой передачи. Каждый пакет в режиме Full-speed содержит 8 бит синхронизации тактов приемника и передатчика (Sync), 8 бит идентификатора пакета (PID) и 2 бита конца пакета (EOP). Блок данных может составлять от 0 до 1023 байт.

image


Рисунок 4. Пример передачи пакета по дифференциальной линии USB 1.1 в режиме Full-speed [2]. Изменение состояние дифференциального сигнала соответствует передаче нуля, сохранение уровней — соответствует передаче единицы. Для улучшения синхронизации на единичных последовательностях принудительно вставляют нуль на каждые 6 единиц подряд.

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

Дифференциальные сигналы USB передаются по витой паре экранированного 4-проводного кабеля. По стандарту, сечение сигнальных проводников высокоскоростного кабеля USB 2.0 должно быть 28 AWG и от 20 до 28 AWG для жил питания, в зависимости от длины кабеля (см. Таблица 1).

Таблица 1. Примерное соответствие длины и диаметра проводов USB2 кабеля.
Размер провода [3]

image

Для увеличения длины USB кабеля его снабжают встроенными усилителями сигнала.
По требованию спецификации USB 2.0 для режима High-speed (до 480 Мбит/с) задержка распространения сигнала в кабеле не должна превышать 5,2 нс/м и быть не более 26 нс, что и определяет максимальную длину кабеля 5 м.

Задержка на метр длины в коаксиальном кабеле обратно пропорциональна скорости распространения волны в м/c, которая вычисляется как

image

,
где с – скорость света 3*10^8 м/с; е — диэлектрическая проницаемость материала внутреннего изолятора; u — магнитная проницаемость изолятора. Для полиэтилена с u= 1 и е= 2,2 фазовая скорость равна 2*10^8 м/с и, соответственно, задержка 5 нс/м.

Для уменьшения потерь сигнала важно обеспечить однородность волнового сопротивления (в.с.) сигнальной линии. Изменение в.с. может быть связано с некачественной заделкой кабеля, плохим согласованием элементов линии, низким качеством разъёма и др.

Волновое сопротивление кабеля определяется его конструкцией. В.с. коаксиального кабеля в области высоких частот (30 кГц и выше) вычисляется по следующей формуле.

image


где L – продольная индуктивность закороченного кабеля, Гн; C – поперечная ёмкость разомкнутого кабеля, Ф; e — диэлектрическая проницаемость изолятора; D — диаметр изолятора; d – диаметр проводника. Величина в.с. не зависит от длины кабеля.
Диэлектрическая проницаемость изоляторов лежит в диапазоне 1… 7: 1 – воздух, вакуум; 1.3… 2.4 – полиэтилен; 2.5..6 — резина; 5..7 – фарфор; 6..7 – слюда; 7 — стекло.
Величина в.с. витой пары USB 2.0.кабеля составляет 90 ± 15% Ом [5]. Расчет в.с. экранированной витой пары должен учитывать и взаимное расположение проводников.

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

image

,
где rH — сопротивление нагрузки; Z – в.с. кабеля.

Включении несогласованных элементов в USB линию может значительно исказить сигнал. Например, линия оказывается неработоспособной при включение в неё эектровводов из силового кабеля с волновым сопротивлением 10… 40 Ом.

Структура канала USB – RS-232 – плата Arduino UNO

Для обеспечения устойчивой связи удаленного СОМ устройства с компьютером через USB порт длина USB канала сведена к минимуму, на выходе USB линии поставлен USB – RS-232 преобразователь, который через длинную линию подключен к преобразователю уровней +15/-15В == 0/5В, находящегося вблизи контроллера Arduino и подключенного к его UART порту, как показано на Рисунок 5. Скорость обмена данными в этой структуре такая же как и при подключении Arduino к компьютеру через USB кабель, но частота сигнала в протяженной линии почти в 100 раз ниже — как 0,115200 Мбит/с и 12 Мбит/с.

image


Рисунок 5. Схема подключения контроллера Arduino UNO к компьютеру через USB порт и длинные несогласованные линии. Обозначение контактов GND, передатчика Tx и приемника Rx на стандартном разъеме DB-9 СОМ порта компьютера показано вверху слева. Со стороны устройства сигналы TxD и RxD на разъема DB-9 надо поменять местами.

Преобразователь RS232 уровней (Рисунок 5) не меняет последовательность бит. Он изменяет уровни сигнала 0/5 В в +12/-12 В и наоборот (Рисунок 6).

image


Рисунок 6. Временная диаграмма и уровни сигналов преобразователя RS232.

Для преобразования уровней сигналов RS232 могут использоваться микросхемы, например, MAX232 (компании Maxim Integrated Products), SP232 (Sipex), ADM232 (Analog Devices). Эти микросхемы имеют одинаковые характеристики и назначения выводов. Подключение преобразователя MAX232 показано на Рисунок 7 [6].

image


Рисунок 7. Схема подключения преобразователя уровней MAX232. Схема обеспечивает уровень выходного напряжения приблизительно ± 7.5 В соответствующий интерфейсу RS-232.

Рынок предлагает множество модулей преобразователей уровней построенных на базе перечисленных и других микросхем. Внешний вид одного из таких модулей показан на (Рисунок 5).

К компьютеру устройство можно подключить через стандартный COM порт, если он есть, или использовать преобразователь USB-RS232 (другие названия: USB-COM конвертеры, переходники или адаптеры), связанный с USB портом напрямую или через собственный USB кабель. Внешний вид USB преобразователей показан на Рисунок 5.

Вариант реализации макета линии COM устройство – USB порт компьютера без RS-232 линии показан на Рисунок 8.

image


Рисунок 8. Вариант подключения контроллера Arduino UNO к преобразователю USB-COM компьютера.

Для проверки работоспособности канала обмена данными между контроллером Arduino UNO и компьютером через длинную несогласованную линию был собран провод показанный на Рисунок 9 и Рисунок 10. Куски провода соединялись скруткой или удерживались в гнездах разъемов на трении.

image


Рисунок 9. Канал RS232 из составного кабеля 9,5 м.

image


Рисунок 10. Куски провода канала RS232 из составного кабеля 9,5 м.

Передача и прием данных через СОМ порт контроллера Arduino UNO контролировалась утилитой компьютера COM Port Toolkit.

Используемая для тестирования линии программа Arduino UNO, передающая в СОМ порт байты данных и переключающая светодиод контроллера по приходу внешних команд, показана ниже.


Осциллограммы сигналов, снятые на концах состоящей из кусков линии RS-232 показаны на Рисунке 11. Данные передаются на частоте 115200 бит/с.

Прошивка контроллера Arduino UNO

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

При подключении платы Arduino через канал RS-232 с двумя сигнальными линиями Tx и Rx при отсутствии линии сигнала сброса загрузка выполнялась в следующем порядке.

1. Запускалась среда разработки Arduino (как и в режиме загрузки через USB).

2. Загружалась программа (как и в режиме загрузки через USB).
3. Прошивка программы запускалась командой Ctrl+U или через кнопку (как и в режиме загрузки через USB)
4. Дополнительно, после запуска прошивки и заполнения прогресс индикатора нажималась кнопка Reset на плате контроллера Arduino приблизительно на 0,5 секунды.

image

.

Прошивка выполнялась успешно и при кратковременном отключении питания контроллера, вместо нажатия на кнопку Reset.

Запуск загрузчика контроллера Arduino можно выполнять и в автоматическом режиме от компьютера, без нажатия на кнопку Reset или кратковременного отключения питания. Для этого необходимо, например, канал RS-232 с Tx, Rx, и GND дополнить линией RTS и подключить ее через преобразователь уровней ко входу RESET контроллера Arduino.

В Микроконтроллерах Atmel есть интерфейс UART. Фактически это тот же RS-232, но с другими логическими уровнями. Используя его подключим наш микроконтроллер к компьютеру.

Подключение микроконтроллера к последовательному порту (RS-232) используя MAX232

Напрямую контроллер включать конечно же нельзя. Для сопряжения используют микросхему MAX232.

Код программы микроконтроллера для тестирования связи с компьютером:

На компьютере открываем Hyper Terminal, подключаемся с Com порту. Теперь можно передавать информацию с компьютера в микроконтроллер и, наоборот, с микроконтроллера в компьютер.

Программа работает просто - Вы нажимаете клавишу от 0 до 9, микроконтроллер возвращает соответствующую строку. Файлы примера можно скачать здесь. Обратите внимание, что микроконтроллер должен работать на частоте как минимум 2Мгц.

Подключение микроконтроллера к USB порту используя FT232


Используя FT232 можно обеспечить питание Вашей схемы напряжениями +5 и +3.3В. На этапе разработок Вам будет очень полезен модуль для подключения микроконтроллера к компьютеру на базе FT232. Его можно приобрести или сделать самостоятельно. Я поступил проще, купил отдельно плату, необходимые детали и собрал сам и сейчас плотно эксплуатирую. Где купить смотрите здесь.

Есть еще более простой и не дорогой способ, который я нашел - использование шнуров для подключения мобильных телефонов к компьютеру. Некоторые шнуры для подключения мобильных телефонов к компьютеру построены по такому же принципу. Т.е. имеют встроенную микросхему и после подключения и установки драйверов эмулируют последовательный COM-порт. У меня оставался такой разрезанный шнур (CA-42). Отрезаем разъем к мобильному телефону, находим нужные провода и подключаем напрямую к ногам микроконтроллера. При не правильном подключении ничего не сгорит. По крайней мере, у меня не сгорело :)

По отношению к вышеописанному модулю недостаток один - невозможно использовать питание, которое предоставляет USB порт. Такой метод подключения я использовал в метеостанции.

Существует способ работать с USB напрямую с микроконтроллера, но для этого требуются определенные ресурсы микроконтроллера и использование отдельных драйверов. В этой статье он не рассматривается.

Существует способ подключения микроконтроллера к локальной сети посредством Ethernet модуля, и превращение его в отдельное сетевое устройство. Но о нем поговорим позже.


Схема обвязки.


Схема включения MAX232.


Схема включения MAX3232.

Из даташитов, схема обвязки имеет различия по подключению конденсатора С3, со второй ножки микросхемы. На самом деле это не опечатка, С3 у MAX3232 можно подключать как к питанию так и к земле. Чисто теоретически MAX3232 можно ставить вместо MAX232, но возможно придется поиграть конденсаторами в обвязке. Кроме того MAX3232 может работать в диапазоне напряжений питания 3,3-5В, MAX232 только от 5В.

Расположение каналов TTL-RS232.

Именно расположение каналов преобразования чаще всего становится причиной скачивания даташита на max232. Если часто приходится проверять работоспособность до достаточно держать в памяти несколько шпаргалок-напоминалок и тогда не придется заглядывать в дташит.

1. +5В приходит как у классических микросхем 74 серии, на самую последнюю ножку (16 pin), а вот земля находится не по диагонали, а рядом с питанием (15 pin). То есть две последнии ножки MAX232 это питание.

2. Преобразователи интерфейсов выполнены для удобства разводки печатной платы - в двух вариантах. Вариант 1 - это каналы выполнены геометрически насквозь микросхемы, то есть сигнал вошел в 8 ножку, а вышел напротив 8 ножки – с 9 ножки, другой канал в 10 вошел и вышел напротив 10 ножки – с 7 ножки. Причем ТТЛ входы/выходы находятся с одной стороны микросхемы, RS входы/выходы с другой.


МAX232 - сквозной вариант каналов.

Вариант 2 - это каналы выполнены с одной стороны микросхемы, логика прохождения сигнала ближний в ближний, дальний в дальний. То есть сигнал вошел в 11 ножку, а вышел с самой дальней ножки – с 14 ножки, другой канал в 13 вошел и вышел к самой ближайшей ножки – с 12 ножки. Причем ТТЛ входы/выходы и RS входы/выходы находятся попарно.


МAX232 – односторонний вариант каналов.

Подтяжка входов.


MAX232 имеет на каждом входе резисторы подтяжки.

Из даташита, MAX232 со стороны входов RS232 имеет резисторы подтяжки 5К на землю, а со стороны TTL входов подтяжку 400кОм на +5В.


MAX3232 имеет резисторы подтяжки только на RS232 входах.

Из даташита, MAX3232 со стороны входов RS232 имеет резисторы подтяжки 5К на землю, со стороны TTL входов подтяжка не обозначена.
Тут стоит отметить на практике не приходилось встречать резисторов подтяжки во внешних цепях у обоих типов микросхем. Поэтому смысла во внешних резисторах подтяжки не видим.

Уровни входов/выходов.

Таблица. MAX232 уровни TTL вход/выход

OUT

INPUT

логический "0"

логическая "1"

Таблица. MAX3232 уровни TTL вход/выход

OUT

INPUT

логический "0"

логическая "1"

Из таблиц становится понятным, если по TTL входам совместимость полная, то вот по TTL выходам наблюдается некоторая несовместимость, это касается логической единицы. Использование MAX232 вместо MAX3232 предполагает наличие балластного резистора 60-100 Ом на TTL выходе, в противном случае последствия непредсказуемы. По документации, обратная замена (MAX232 на MAX3232) недопустима из-за уровня логической единицы TTL выхода, однако практика показывает обратное, замена допустима – правда TTL выхода мы из подстраховки подтягивали к +5В.

Справочные данные.
Хоть и не по теме материала, но без этого раздела материал был бы неполным

Таблица. Назначение выводов 9 контактного (9pin) разъема DB9M COM порта со стороны компьютера по стандарту RS232C. Направление сигналов указано относительно хоста (компьютера).

Практика ремонта.

Так как статистика по ремонтам именно с участием MAX232/ MAX3232 отсутствует, то утверждать какая микросхема надежнее (стабильнее) мы однозначно ответить не можем, само собой речь идет только о 5В питании. Но были прецеденты когда после замены MAX3232, были возвраты с повторной поломкой MAX3232, а вот после радикальной замены всего интерфейса на MAX232 возвратов не было. С другой стороны некоторые экземпляры MAX232 при тестировании показывали полную работоспособность на одном компьютере, но при этом отказывалась работать на другом компьютере, причем случаи такого поведения MAX232 были не единичные.

Читайте также: