Подписка на новости

Опрос

Нужны ли комментарии к статьям? Комментировали бы вы?

Реклама

 

2006 №3

Современные аппаратные средства связи микроконтроллера с компьютером по интерфейсу RS-232. Часть 1

Кузьминов Алексей


Разработанный еще в 1969 году последовательный интерфейс RS-232 до сих пор не утратил своего значения. Появление более современных интерфейсов, которыми оснащаются компьютеры (например, USB) и микроконтроллеры (например, CAN, I2C, SPI, RS485) и которые по многим параметрам (скорость и надежность обмена информацией, длина линии связи и т. п.) превосходят интерфейс RS-232, казалось бы, должно привести к «концу» использования этого интерфейса. Но интерфейсом RS-232 продолжают оснащать даже современные компьютеры и микроконтроллеры (а во многие из микроконтроллеров интегрируют даже по два таких интерфейса).

Все статьи цикла:

Введение

В чем же причина такой поразительной «живучести» этого интерфейса? Если попытаться ответить на этот вопрос в самом общем виде, то эту причину, по-видимому, следует искать в относительно высокой сбалансированности и универсальности интерфейса RS-232. Другими словами, в этом интерфейсе сочетаются средняя скорость обмена, среднее расстояние линии связи, средняя простота программирования, средняя надежность обмена информации и т. п. При этом, подчас, та или иная «средняя» характеристика интерфейса RS-232 иногда на порядок (а то и на два) превосходит соответствующую характеристику другого интерфейса.

Если, например, сравнить интерфейс RS-232 с интерфейсом USB, то получим следующие отличия.

Интерфейс RS-232:

  • значительно проигрывает USB в скорости и надежности обмена. В связи с этим многие периферийные устройства, подключаемые к компьютеру (принтеры, сканеры, мобильные телефоны, цифровые фотокамеры и т. п.), оборудуют именно интерфейсом USB;
  • выигрывает по длине линии связи (15–20 м против 3 м);
  • значительно выигрывает по простоте программирования (простота программирования RS-232 общеизвестна, а протокол обмена данными по USB сложен, и реализовать его до недавнего времени было не под силу не только радиолюбителям, но и многим специалистам). Почему до недавнего времени? Потому что, хотя и публикуются статьи о программировании USB (см. например, цикл статей в журнале «Современная электроника» за 2005/2006 год), одного взгляда на отрывок такой статьи достаточно (по мнению автора), чтобы отказаться самостоятельно запрограммировать интерфейс USB. В настоящее время двумя фирмами начат выпуск микросхем преобразователей USB–RS-232, в которых основные средства программирования USB переведены на аппаратный уровень и на драйверы, которые организуют «виртуальный« интерфейс RS-232 (повторюсь, как его программировать — всем известно). Если выпуск микросхем CP2101/02/03 компании Silicon Laboratories так и не оставил «глубокого следа» в сердцах разработчиков (поскольку сами микросхемы далеки от совершенства, выпущены в неудобных для ручной пайки корпусах; кроме того, требуются соответствующие драйверы и их установка на компьютер), то микросхемы FT8U100AX, FT8U232AM и FT8U245AM от FTDI (Future Technology Devices International) многим разработчикам очень понравились, поскольку они проще в применении (хотя и имеют неудобные корпуса).

Что касается других интерфейсов, то при сравнении с ними интерфейса RS-232 можно еще раз убедиться в его сбалансированности.

Интерфейс RS-232:

  • проигрывает интерфейсам CAN и RS-485 по скорости и дальности линии связи, но выигрывает по простоте программирования;
  • проигрывает интерфейсу I2C по скорости, но выигрывает по дальности линии связи и простоте программирования;
  • проигрывает интерфейсу SPI по скорости и простоте программирования (интерфейс SPI действительно примитивно прост), но выигрывает по дальности линии связи.

Помимо всего прочего, интерфейс RS-232 является на настоящий момент едва ли не единственным средством связи между компьютером и микроконтроллером (если, конечно, не принимать во внимание выпущенные в последнее время микроконтроллеры с интерфейсом USB). Учитывая это, такие ведущие фирмы-производители микроконтроллеров, как Analog devices, Texas Instruments, Atmel, Philips и др. стали выпускать микроконтроллеры, которые обладают свойством «программирования-в-системе» (In-System-Programming — ISP) по интерфейсу RS-232. Дело в том, что скорость программирования микроконтроллеров достаточно низкая (намного ниже, чем максимальная скорость обмена RS-232 — 115 200 бод). Эта скорость определяется относительно медленной записью данных в память программ (EEPROM). Если сравнивать интерфейс RS-232 по этому параметру (как средство коммуникации компьютера с микроконтроллером и его программирования в системе), то налицо явное преимущество RS-232 перед вышеупомянутыми интерфейсами.

И, наконец, последнее, что хотелось бы отметить относительно интерфейса RS-232.

В настоящее время этот интерфейс переживает свое новое рождение в связи с невероятным бумом, причина которого — современные беспроводные технологии. Скорость обмена информацией, например, в беспроводных устройствах малого и среднего радиуса действия едва дотягивает до 9600 бод, а иногда и много меньше (1200 бод). Об увеличении скорости обмена информацией в таких устройствах ни в настоящее время, ни в скором будущем, по-видимому, нет даже и речи, поскольку с каждым годом ужесточается ограничение мощности радиотрансиверов. Сейчас новшества касаются только увеличения чувствительности приемников, входящих в состав радиотрансиверов, и улучшения их (приемников) соотношения «сигнал–шум«. Это улучшение достигается различными методами (например, скачкообразным изменением частоты модуляции, применением избыточного кодирования и другими «хитроумными« способами), но ни в коем случае не увеличением мощности передатчиков, дабы не «засорять эфир«. В этих условиях об увеличении скорости обмена говорить не приходится.

Максимальная скорость обмена, которую допускает интерфейс RS-232 (в компьютере) — 115 200 бод — не будет в скором времени перекрыта подобными устройствами беспроводной связи.

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

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

Интерфейс далеко не идеальный, достаточно старый (так и хочется применить слово «потрепанный»); он не лишен многих недостатков, некоторые из которых, к счастью, могут быть устранены как аппаратными, так и программными способами (вот это как раз и является целью публикации цикла статей).

Кроме того, интерфейс RS-232 можно модернизировать, то есть несколько улучшить надежность обмена, увеличить длину линии связи и т. п., что также достигается аппаратными и программными способами.

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

Предлагаемый читателям материал об интерфейсе RS-232 условно делится на три части (что будет соответствовать трем статьям).

Предметом первой (настоящей) статьи будет обсуждение применения относительно новых традиционных и нетрадиционных преобразователей интерфейса RS-232 взамен широко известного MAX232, а также рассмотрение использования новых микросхем гальванических развязок взамен традиционно используемых оптоизоляторов (оптронов 6N137), применяемых в гальванически изолированном интерфейсе RS-232.

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

Вторая статья будет посвящена программированию интерфейса RS-232 в компьютере, работающем в операционных системах Windows 98/XP, с помощью прямых команд ввода-вывода в COM-порт взамен традиционно использующихся для таких целей функций API. Будет показана простота программирования (точно такая же, как и при программировании в DOS), а также сделано сравнение скоростей работы программ, использующих функции API и прямые команды ввода-вывода в COM-порт компьютера. Будет показано, что скорость работы программ, использующих прямые команды ввода-вывода в порт, на порядок выше скорости работы программ, где применяются функции API.

Для демонстрации и для использования в практических целях метода программирования с помощью прямых команд ввода-вывода в COM-порт будут приведены тексты программ для программирования вышеуказанных микроконтроллеров в режиме ISP.

Третья статья будет посвящена новому, разработанному автором протоколу обмена по интерфейсу RS-232 с аппаратной синхронизацией, но только не линиями квитирования (например, RTS-CTS или DTRDSR), традиционно использующимися для таких целей, а линиями данных (TxD и RxD). Необходимо сразу оговориться, что здесь речь идет не о программной синхронизации (традиционно называемой XON-XOFF) линиями данных (TxD и RxD), а именно об аппаратной синхронизации. Как известно, аппаратная синхронизация обладает высокой надежностью обмена, которая особенно важна на высокой скорости (115 200 бод). Будет показано, что линии данных вполне пригодны для аппаратной синхронизации обмена по RS-232; кроме того, использование аппаратной синхронизации линиями данных «освобождает« линии квитирования (DTR и RTS) для других более важных целей (например, для сброса-запуска и перевода микроконтроллера в ISP-режим программирования).

Для демонстрации использования аппаратной синхронизации будут приведены тестовые программы обмена по RS-232, написанные для микроконтроллера и компьютера, работающего под управлением ОС Windows 98/XP. Кроме того, для применения аппаратной синхронизации обмена линиями данных уже в практических целях будут приведены программы (для микроконтроллера и компьютера, работающего вWindows 98/XP) программирования микроконтроллеров P89LPC938 и P89LPC904 в режиме внутрисхемного программирования (In-Circuit-Programming — ICP). Подробнее об этом режиме можно прочитать в описании на эти микроконтроллеры.

В настоящее время издательством «ДМК Пресс» готовится к публикации книга автора «Интерфейс RS-232. Связь между компьютером и микроконтроллером. От DOS к Windows 98/XP», часть информации из которой и приводится в предлагаемом цикле статей.

1. Новые аппаратные средства интерфейса RS-232

1.1. Предварительные замечания

Основная цель настоящей статьи — показать на примерах аппаратных средств сопряжения микроконтроллеров с компьютером возможности интерфейса RS-232 для конструирования систем сбора и обработки информации, поступающей с различного рода датчиков-преобразователей физической (измеряемой) величины в электрический сигнал.

В начале статьи приводится описание новых специализированных микросхем преобразователей уровней интерфейса RS-232 (±10...±12B) в TTL уровни (0÷ +5/+3B) и обратно, которые в настоящее время стали широко доступны. Кроме того, приводится несколько примеров применения некоторых электронных компонентов, которые могут быть использованы в качестве таких преобразователей. Описываются новые микросхемы гальванических развязок для RS-232, среди которых совершенно новый тип развязок, использующий свойства электромагнитного поля.

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

1.2. Новые преобразователи интерфейса RS-232

Новые преобразователи интерфейса RS-232 обладают несомненным преимуществом (высокая скорость обмена, малые габариты и потребление энергии, а также достаточно низкая стоимость) перед использовавшимися ранее (MAX318X, MAX3190, ADM3202, MAX1406).

Кроме того, переход на 3-вольтовое питание, которое стало поддерживаться многими современными микроконтроллерами, позволил по-новому подойти к использованию стандартных преобразователей интерфейса (например, ADM231L).

Другой пример — двунаправленный преобразователь SN75155 (корпус DIP8), который давно уже не используется, тоже очень удобно применять в таких приложениях. Что касается нестандартных преобразователей интерфейса RS-232, то к ним можно отнести новые КМОП-транзисторы с изолированным затвором p- и n-проводимости (например, BS250, 2N7000 и др.), которые с успехом могут служить приемниками RS-232, так как их затвор (Uзи = ±20 В) без каких-либо дополнительных резисторов может непосредственно контактировать с выходными линиями RS-232 (±10 В).

Рассмотрим новые специализированные микросхемы преобразователей интерфейса RS-232 более подробно.

1.2.1. Новые специализированные микросхемы преобразователей интерфейса RS-232

На рис. 1 представлены вышеуказанные преобразователи. Кратко охарактеризуем их свойства.

Рис. 1. Специализированные микросхемы преобразователей интерфейса RS-232
Рис. 1. Специализированные микросхемы преобразователей интерфейса RS-232

Микросхема Analog Devices ADM3202 отличается высокой скоростью работы (до 460 кбод); емкости конденсаторов, требуемых для работы преобразователя, не превышают 0,1 мкФ; микросхема может работать и при Vcc = +3 В, и при Vcc = +5 В. Размах сигнала драйвера (передатчика) RS-232 составляет ±10 В (при Vcc = +5 В) и ±6 В (при Vcc = +3 В) при работе на нагрузку в 5 кОм. Сигнал очень чистый, без каких-либо паразитных искажений. Кроме того, ADM3202 отличается пониженным потреблением энергии (особенно при питании от +3 В).

Микросхема ADM231L этой же фирмы тоже работает на скорости 115 кбод (в описании указывается, что максимальная скорость обмена составляет 230 кбод), и емкости конденсаторов не превышают 1,0 мкФ. Размах сигнала драйвера повышен и составляет ±11,5 В при питании от первого источника питания +12 В при работе на нагрузку в 5 кОм. Уникальной особенностью микросхемы является независимость размаха сигнала драйвера от напряжения второго источника питания Vcc. Vcc может быть и +3 В, и +5 В. Сигнал также имеет высокую чистоту без паразитных составляющих. ADM231L отличается пониженным потреблением энергии.

Микросхема MAX1406 от MAXIM отличается высокой скоростью работы (до 230 кбод), повышенным размахом сигнала драйвера (±11,5 В) при работе на нагрузку в 5 кОм, независимостью этого размаха от напряжения Vcc и высокой чистотой сигнала. Микросхема питается от 3 источников питания (V+ = +12 В, V– = –12 В и Vcc: +3 ± +5 В), в связи с чем она не содержит преобразователей напряжения (удвоителей и инверторов напряжения как, например, ADM3202 и ADM231L) и не требует большого количества конденсаторов для работы. Особенностью микросхемы является наличие трех приемников и трех передатчиков, что, как будет видно из дальнейшего изложения, позволяет сопрягать с ее помощью компьютер с микроконтроллером (который может работать как в режиме программирования, так в штатном режиме) без каких-либо дополнительных преобразователей интерфейса RS-232. MAX1406 отличается пониженным потреблением энергии.

Микросхема передатчика RS-232 MAX3190 от MAXIM отличается повышенной скоростью работы (до 460 кбод), имеет размах сигнала драйвера до ±10 В при работе на два входа приемников (на нагрузку в 2,5 кОм) при питающих напряжениях V+ = +12 В и V– = –12 В. Кроме того, она потребляет очень мало энергии при работе и может быть переведена в режим сверхнизкого потребления («спящий» режим). Особенностью микросхемы является уникально малый корпус SOT23-6 размером 3×3 мм.

Микросхемы приемников MAX3181 и MAX3183 работают на сверхвысокой скорости для интерфейса RS-232 (до 1,5 Мбод), отличаются сверхнизким потреблением энергии и уникально малым корпусом SOT23-5 размером 3×3 мм. Микросхема MAX3181 является инвертирующим приемником, как и подавляющее большинство всех микросхем приемников RS-232, а MAX3183 — неинвертирующим, что является уникальным свойством, позволяющим, как будет видно из дальнейшего изложения, напрямую подключать к нему вход RST микроконтроллера с активно низким уровнем (например, P89LPC9XX).

И, наконец, последняя микросхема, которую хотелось бы представить, — микросхема SN75155 от Texas Instruments. Это микросхема, в которой в одном корпусе всего с восемью выводами (DIP8, SOIC8) размещается и приемник, и передатчик. Микросхема не нова, однако мало где применяется и особой популярностью не пользуется. А зря. Микросхема реально работает на высокой скорости (115 кбод), требует всего двух источников питания (V+ = +12 В, V– = –12 В), так как источник питания +5 В встроен. В связи с этим для ее работы не требуется дополнительных конденсаторов для инверторов и удвоителей напряжения (как, например, у ADM3202 и ADM231L). Размах сигнала драйвера составляет ±10 В при работе на два входа приемника (то есть на нагрузку в 2,5 К). Недостатками микросхемы являются стандартное (не пониженное) потребление энергии и невозможность работы с микроконтроллером при питании его от +3 В (при 5-вольтовом питании микроконтроллера микросхема работает идеально).

1.2.2. Нетрадиционные преобразователи интерфейса RS-232

Помимо специализированных микросхем преобразователей интерфейса RS-232, о которых было рассказано выше, существуют электронные компоненты, вообще говоря, не являющиеся преобразователями, но которые можно использовать в качестве таких преобразователей. Ниже представлены такие компоненты. Это КМОП-транзисторы прямой (BS250 от Vishay) и обратной (2N7000 от Fairchild или Vishay) проводимости с изолированным затвором и КМОП-коммутатор DG419 (от Vishay). Внутренняя структура и цоколевка этих компонентов приведена на рис. 2.

Рис. 2. Нетрадиционные преобразователи интерфейса RS-232
Рис. 2. Нетрадиционные преобразователи интерфейса RS-232

Кратко охарактеризуем их свойства.

Транзисторы выпускаются в корпусе TO-92 (см. рис. 2). Сопротивление транзисторов в открытом состоянии составляет около 10 Ом, максимальный ток стока — чуть более 200 мА, максимальное напряжение «сток–исток» — не более 50–60 В, время включения и выключения — около 10 нс, мощность рассеяния — около 0,5 Вт. Максимальное напряжение «затвор–исток» (Uзи_max) составляет ±20 В. Последнее свойство позволяет подключать затвор транзистора непосредственно к линиям RS-232 (напомню, что сигнал передатчика RS-232 составляет около ±10 ÷ ± 12В), в связи с чем транзисторы могут использоваться в качестве приемников RS-232. Единственное, что необходимо предусмотреть, это нагрузочный резистор номиналом в 5 кОм, который следует подключить между затвором и общим проводом («землей»), так как сопротивление (изолированного) затвора транзисторов составляет сотни MOм, а стандарт RS-232 предусматривает входное сопротивление приемника в 5 кOм.

На рис. 3 приведены варианты использования КМОП-транзисторов 2N7000 и BS250 в качестве преобразователей интерфейса RS-232 — инвертирующих и неинвертирующих приемников RS-232.

Рис. 3. Схемы применения транзисторов 2N7000 и BS250 в качестве приемников интерфейса RS-232
Рис. 3. Схемы применения транзисторов 2N7000 и BS250 в качестве приемников интерфейса RS-232

Из рис. 3 видно, что транзисторы могут использоваться в ключевом режиме как в схемах с общим истоком (классический ключ) — в таком режиме работают инвертирующие приемники, так и с общим стоком (истоковый повторитель) — в таком режиме работают неинвертирующие приемники. Схемы достаточно просты и в особых комментариях не нуждаются.

Проверка работы схем заключалась в подаче на затвор транзистора сигнала меандра частотой 115 200 Гц, сформированного передатчиком микросхемы ADM3202, и наблюдения выходного сигнала. Во всех случаях выходной сигнал представлял собой практически прямоугольный меандр.

Микросхема коммутатора DG419 выпускается в корпусе SOIC8 или DIP8. Напряжения питания V+, V– и VL лежат в следующих пределах: +10 ÷ + 15В, -10 ÷ –15 В и +3 ÷ +5 В соответственно. Сопротивление коммутатора в открытом состоянии составляет около 20 Ом. Коммутатор управляется напряжением, поданным на его управляющий вход (вывод 6). При лог. 1 на управляющем входе выводы 1–8 замыкаются, на что указывает символ «1», стоящий над контактом 8. При лог. 0 замыкаются контакты, связанные с выводами 2–8 (при этом контакты 1–8 размыкаются).

Микросхема Vishay DG419 по своей структуре и функциям не отличается от микросхем Analog Devices ADG419 и MAXIM DG419. Однако есть одно и очень существенное отличие в свойстве управляющего входа. Дело в том, что коммутатор управляется сигналом, поданным на его управляющий вход (6-й вывод), и этот сигнал в коммутаторах ADG419 (Analog Devices) и DG419 (MAXIM) должен строго соответствовать TTL-уровню (лог. 0 — от 0 до +0,8 В, лог. 1— от +2,4 В до +5 В при VL = +5 В, V– = –12 В,V+ = +12 В). При подаче на этот вход управления сигнала ниже 0 В (например, –10 В) эти две микросхемы автоматически коммутируют этот сигнал на «землю», так как оснащены входными диодами, защищающими вход управления от отрицательных напряжений (ниже 0 В). У микросхемы DG419 от Vishay таких ограничительных диодов нет, поэтому при VL = +5 В уровень напряжения управляющего сигнала Uупр. в состоянии лог. 0 должен находиться в пределах от V– до 0,8 В, а в состоянии лог. «1» — в пределах от +2,4 В до V+. Если V+ = +12 В, а V– = –12 В, то при Uупр. = ±10 В (уровни интерфейса RS-232) микросхема прекрасно работает и выполняет свои функции. Кроме того, вход управления можно смело подключать напрямую к сигналам с уровнями RS-232, не боясь, что вход будет закорочен на «землю».

Сопротивление открытого канала коммутатора DG419 Vishay (20 Ом) чуть больше, чем у DG419 MAXIM (4 Ом) и меньше, чем у ADG419 Analog Devices (35 Ом). Стоимость DG419 Vishay примерно в два раза меньше, чем ADG419 и примерно в три раза меньше, чем MAXIM DG419.

Таким образом, DG419 Vishay может работать приемником RS-232. Единственное, что необходимо предусмотреть — нагрузочный резистор в 5 кОм (в соответствии со стандартом RS-232), который необходимо подключить между управляющим входом и общим проводом («землей»), так как входное сопротивление микросхемы составляет несколько МОм (потребление энергии DG419 сверхнизкое). На вход VL можно также подавать не только +5 В, но и +3 В и даже меньше. При этом просто немного поменяется порог срабатывания.

Кроме того, DG419 может работать и как передатчик RS-232. В отличие от специализированной микросхемы передатчика RS-232, у DG419 более крутые фронты (намного круче, чем 30 В/мкс). На расстояниях до 10–15 м (расстояние от компьютера до микроконтроллера) это свойство ни к каким негативным результатам не приводит.

На рис. 4 приведены примеры использования коммутатора DG419 в качестве преобразователя интерфейса RS-232 — приемника (инвертирующего и неинвертирующего) и передатчика (инвертирующего). Схемы достаточно просты и в комментариях не нуждаются.

Рис. 4. Схемы применения коммутатора DG419 в качестве преобразователя интерфейса RS%232
Рис. 4. Схемы применения коммутатора DG419 в качестве преобразователя интерфейса RS-232

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

1.3. Примеры применения новых преобразователей для сопряжения микроконтроллеров с компьютером по интерфейсу RS-232

1.3.1. Предварительные замечания

Вначале несколько слов по поводу оценочных плат, наборов, эмуляторов-программаторов и т. п.— устройств, предназначенных для «быстрой» разработки аппаратных и программных средств на базе микроконтроллеров. Эти устройства выпускаются либо самими производителями микроконтроллеров, либо «третьими» фирмами.

Разработчику любой системы, состоящей из компьютера и устройства связи с объектом (УСО), сопряженного с первым по интерфейсу RS-232, необходимо помнить следующее:

  • Аппаратные средства сопряжения этих устройств имеют следующие особенности:
    • в подавляющем большинстве случаев схемы сопряжения не приводятся или приводятся с ошибками;
    • если схемы и приводятся, разработчик вынужден копировать их в своих разработках (что не всегда приемлемо, так как элементная база, используемая в таких устройствах, либо безнадежно устарела, либо состоит из микросхем, которые для него труднодоступны) или хотя бы следовать той логике сопряжения, которая приводится, иначе поставляемое программное средство работать не будет (а вот логика сопряжения у разработчика как раз-таки должна быть своя);
    • часто приводимые аппаратные средства сопряжения очень громоздки, и в них трудно разобраться, а разбираться все равно необходимо, иначе, если собственная разработка работать не будет, трудно или вообще невозможно определить причину неисправности;
    • если схема сопряжения реализована даже по интерфейсу RS-232, то различные устройства по-разному управляют состояниями микроконтроллера: одни, например, управляют выводом RST микроконтроллера от линии DTR RS-232 компьютера, другие используют линию RTS, третьи устанавливают микрокнопку, нажав на которую можно сформировать сигнал RST и «сбросить» микроконтроллер; иногда для сопряжения используется сразу два порта RS-232 компьютера и т. п.
  • Программные средства сопряжения подобных устройств с компьютером по RS-232 имеют еще больше недостатков:
    • исходные тексты программ, естественно, не приводятся, а предлагаются уже готовые программы исполняемого формата (∗.exe);
    • программы используют драйверы, которые необходимо установить в компьютере и которые часто конфликтуют с другими программами;
    • скорость обмена по RS-232 очень низкая (практически не более 9600 бод); при установке более высокой скорости в подавляющем большинстве случаев обмен срывается.

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

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

Вот здесь, по мнению автора, и могут пригодиться приведенные ниже примеры сопряжения микроконтроллеров с компьютером по RS-232. Кроме того, автор «не бросает» разработчика только на одних аппаратных средствах схем сопряжения. Для некоторых из них во второй статье будут приведены тексты программ (с комментариями) как для микроконтроллера, так и для компьютера.

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

И, наконец, последнее. Автор ни в коем случае не отговаривает разработчиков от приобретения подобных устройств. В конце концов — это дело вкуса и средств. Цель настоящей статьи — показать, каким образом сконструировать схемы сопряжения микроконтроллера и компьютера и написать соответствующее программное обеспечение — и не более того. Автор никоим образом не специализируется на разработке, производстве и тем более продаже устройств для программирования микроконтроллеров по интерфейсу RS-232. Основная специализация автора-разработка и производство компьютерных систем сбора данных на базе микроконтроллера и компьютера. Проблема, затронутая автором в настоящем цикле статей, является как бы побочным продуктом основной специализации.

Кроме того, приведенные в статье аппаратные и программные средства сопряжения между микроконтроллером и компьютером по интерфейсу RS-232 работают ничуть не хуже, а даже лучше фирменных, если, например, сравнивать не красоту и универсальность программных средств устройств (описанных выше), а характеристики их обмена с компьютером по RS-232 — скорость, надежность обмена и простоту схемных решений. Все фирменные программные средства для нижеприведенных микроконтроллеров (кроме программных средств для микроконтроллеров от ATMEL) работают на скорости, не превышающей 38 400 бод, и даже на этой скорости программы часто «зависают». Нельзя не убедиться еще и в том, насколько фирменные схемы сопряжения с компьютером громоздки и часто сконструированы на старой элементной базе. Насколько же просты схемы сопряжения, предложенные автором, читатель сможет убедиться уже через несколько страниц. Кроме того, все без исключения аппаратные и поддерживающие их программные средства идеально работают на скорости обмена 115 200 бод (разумеется, на более низких скоростях они также работают).

В качестве иллюстраций, показывающих применение новых преобразователей на практике, ниже приведены схемы сопряжения микроконтроллеров MSC121X (Texas Instruments) и P89LPC9XX (Philips Semiconductor) с компьютером для целей программирования и штатного режима работы. Выбор именно этих микроконтроллеров обусловлен следующими причинами.

Во-первых, эти микроконтроллеры поддерживают внутрисистемное программирование (ISP) и именно по интерфейсу RS-232. Напомню, ISP — свойство микроконтроллеров, заключающееся в том, что загрузка программы в микроконтроллер происходит прямо на готовом изделии. Если устройство (например, система сбора) обменивается в процессе своей работы с компьютером по интерфейсу RS-232 и программируется по этому же интерфейсу в режиме ISP, то никаких дополнительных устройств, специально предназначенных для программирования микроконтроллеров (программаторы, эмуляторы-программаторы и т. п.) не требуется.

Следует отметить, что режим ISP микроконтроллеров не обязательно должен иметь интерфейс RS-232. Существуют микроконтроллеры, которые могут быть запрограммированы в режиме ISP и по другим интерфейсам. Например, микроконтроллеры AT89SXX (ATMEL) поддерживают ISP по интерфейсу SPI; микроконтроллеры C8051FXXX (Silicon Laboratories) — по интерфейсу JTAG и C2 и т. п. Поскольку компьютер не имеет этих интерфейсов, необходимо приобретать дополнительные устройства, предназначенные для программирования микроконтроллеров, и использующие интерфейсы, имеющиеся у компьютера (USB, RS-232, принтерный параллельный порт). Стоимость таких устройств, как уже говорилось, довольно высока и может достигать десятков и сотен долларов.

Во-вторых, микроконтроллеры MSC121X и P89LPC9XX помимо ISP по RS-232 обладают еще двумя свойствами, которые намного упрощают конструирование систем сбора данных на их основе: встроенный прецизионный системный таймер (разрядностью 23–24 бита) и встроенный АЦП (разрядностью 10–24 бита).

1.3.2. Управление состояниями микроконтроллера с помощью компьютера по интерфейсу RS-232

Для запуска и внутрисистемного программирования на определенные выводы микроконтроллера необходимо подавать два управляющих сигнала.

Первым таким выводом является вход сброса (RESET).

Практически все микроконтроллеры (кстати сказать, и микропроцессоры) имеют вход сброса RESET (RST), который предназначен для полного сброса и запуска микроконтроллера. В подавляющем числе микроконтроллеров этот вход имеет активный высокий уровень, то есть если подать на вход RST уровень лог. 1, то микроконтроллер будет сброшен и остановлен. При подаче на вход RST лог. 0 микроконтроллер начинает работать (запускается). У микроконтроллеров семейств MSC121X, ADUC8XX и AT89C51ED2(RD2) вход RST имеет активный высокий уровень.

Семейства же P89LPC9XX и C8051FXXX отличаются тем, что вход RST у них имеет активный низкий уровень.

В книге [2] помимо схем сопряжения с компьютером микроконтроллеров MSC1210 и P89LPC9XX (рассматриваемых в настоящей статье) приводятся также схемы сопряжения микроконтроллеров ADUC8XX, AT89C51ED2(RD2) и C8051FXXX. Логика работы схем сопряжения микроконтроллеров ADUC8XX и AT89C51ED2(RD2) аналогична логике работы схемы сопряжения для микроконтроллеров семейств MSC121X, поэтому в статье эти схемы не приводятся.

Помимо уровня сигналов, вывод RST характеризуется еще и тем, что это именно вход, то есть он предназначен для того, чтобы им управлять извне. Как правило, если RST имеет активный высокий уровень, то в микроконтроллере он соединен с внутренним подтягивающим резистором номиналом в несколько сотен кOм, подключенным к общему проводу («земле»). Так, например, значение этого подтягивающего резистора в микроконтроллерах MSC12XX составляет около 500 кOм. Если же RST имеет активный низкий уровень, то подтягивающий резистор подключен к шине питания. Например, в микроконтроллерах P89LPC9XX значение этого подтягивающего резистора, подключенного к шине питания, составляет около 20 кOм.

Кроме того, поскольку вывод RST является входом, его можно либо непосредственно соединять с шиной питания или общим проводом, либо управлять им двухтактным сигналом (который имеют все современные микросхемы логики и который еще называют пушпульным — от английских слов push и pull).

Необходимо отметить, что вывод RST в микроконтроллере является основным. Это означает, что он используется как при запуске и сбросе микроконтроллера, так и при его программировании.

При программировании микроконтроллера по ISP (по RS-232) используется еще один дополнительный вывод, при подаче определенного сигнала на который микроконтроллер переводится в режим программирования. Иногда этот сигнал используется не самостоятельно, а совместно с сигналом, поданным на вывод RST (то есть перевод микроконтроллера в режим ISP производится путем манипулирования уровнями и длительностью обоих сигналов).

В микроконтроллерах MSC12XX таким вторым выводом является вывод PSEN, одно из назначений которого— управлять микросхемами внешней памяти программ. В этом случае вывод PSEN является уже не входом, а выходом, то есть он «сам» подает определенные сигналы на эти микросхемы. В этом семействе микроконтроллеров вывод PSEN соединен с внутренним подтягивающим резистором номиналом около 10 кOм, подключенным к шине питания. Поскольку PSEN — выход, нельзя ни непосредственно соединять его с шиной питания или с общим проводом, ни управлять им двухтактным сигналом (в некоторых случаях, когда двухтактный сигнал не очень мощный, то есть когда ток такого сигнала не превышает нескольких мА в состоянии лог. 0 и 1–2 мА в состоянии лог. 1, такое управление допускается). Для подачи на этот вывод уровня лог. 0 необходимо к нему подключить резистор номиналом в 1 кOм, соединенный с «землей». Для подачи уровня лог. 1 вывод PSEN можно либо просто оставить свободным (напомню, что у него есть собственный подтягивающий к шине питания резистор), либо соединить с шиной питания через высокоомный резистор. Для соблюдения необходимых временных соотношений (иногда с точностью до 1 мкс) при манипулировании сигналом на выводе PSEN этот высокоомный резистор не должен превышать 10–100 кOм, чтобы не затягивать длительности фронтов и спадов (например, свыше 1 мкс). В идеале резистор должен быть около 10 кOм. Для перевода микроконтроллеров семейств MSC12XX в режим ISP вывод PSEN должен находиться в состоянии лог. 0. В штатном режиме работы PSEN должен оставаться в лог. 1.

В микроконтроллерах семейства P89LPC9XX вторым выводом, предназначенным для перевода микроконтроллера в режим программирования, является вывод питания Vdd. В связи с тем, что потребление тока у этих микроконтроллеров достаточно низкое (не более 3 мА), этим выводом можно легко манипулировать обычным двухтактным сигналом, либо оставлять свободным или соединять непосредственно с общим проводом (выключать), либо подключать к шине питания (включать). Необходимо только помнить, что подключение к шине питания должно осуществляться при помощи электронного компонента с достаточно низким сопротивлением (несколько Ом), чтобы напряжение питания оставалось в норме (около 3 В). Для таких целей идеально подходят обычные маломощные KMOП-транзисторы (например, BS250 или 2N7000, о которых было упомянуто ранее). Можно также использовать коммутатор DG419.

Теперь несколько слов об управляющих сигналах в интерфейсе RS-232 компьютера. Напомню, что порт RS-232 (например, COM1) компьютера имеет только две выходных линии (DTR и RTS), состояниями сигналов на которых можно управлять программно, записывая необходимые биты в порт управления с адресом 3FCh. Причем 0-й бит управляет состоянием сигнала на линии DTR, а 1-й бит — на линии RTS. Если, например, значение регистра управления 3FCh равно 0, то линии DTR и RTS сброшены, то есть находятся в состоянии лог. 0 и имеют потенциал –10 В. Записав в порт 3FCh, например, единицу, получим: DTR = +10 В, RTS = –10 В.

Начальные состояния линий DTR и RТS—сброшенные, то есть при включении компьютера и загрузки в него той или иной операционной системы DTR = RTS = –10 В.

Для управления выводами RST и PSEN семейств микроконтроллеров MSC12XX и выводами RST и Vdd семейств микроконтроллеров P89LPC9XX можно (и нужно) использовать сигналы линий DTR и RTS. Причем, при составлении схемы сопряжения необходимо подобрать ее таким образом, чтобы при включении компьютера все (из рассматриваемых) микроконтроллеры находились в состоянии сброса, вывод PSEN у семейств MSC12XX находился бы в состоянии лог. 1 (штатный режим работы), а питание (вывод Vdd) у семейств P89LPC9XX было бы включено (также штатный режим).

Для управления выводом RST лучше всего использовать сигнал DTR (так как для управления им используется самый младший бит регистра управления), а для PSEN или Vdd— сигнал RTS.

Тогда, например, для запуска микроконтроллеров достаточно записать в регистр 3FCh единицу. И вообще, для манипулирования выводами RST, PSEN или Vdd достаточно записывать в регистр управления ту или иную комбинацию из нулей и единиц (а их, понятно, четыре: в двоичном виде— 00, 01, 10 и 11, в шестнадцатиричном: 0, 1, 2, 3).

Итак, подытожим все сказанное по поводу управления состояниями микроконтроллеров с помощью интерфейса RS-232 компьютера.

  1. В начальном состоянии интерфейса RS232 (линии DTR и RТS сброшены, т. е. находятся под потенциалами в –10 В) микроконтроллеры должны находиться в сброшенном состоянии (RST микроконтроллеров семейств MSC12XX должен быть в состоянии лог. 1, т. е. под потенциалом в 3±5 В, а RST семейств микроконтроллеров P89LPC9XX — в состоянии лог. 0, т. е. под потенциалом в 0 В).

Кроме того, вывод PSEN микроконтроллеров семейств MSC12XX должен быть в состоянии лог. 1, и (например) подключаться к шине питания через резистор номиналом в 10 кОм, а питание (вывод Vdd) семейств микроконтроллеров P89LPC9XX должно быть включено. Такое состояние микроконтроллеров является состоянием сброса. Оно должно предшествовать запуску микроконтроллеров в работу.

  1. Для запуска микроконтроллеров в штатный режим работы линию DTR необходимо установить в состояние лог. 1 (+10 В). При этом вывод RST микроконтроллеров семейств MSC12XX должен установиться в состояние лог. 0 (0 В), а вывод RST микроконтроллеров семейств P89LPC9XX—в состояние лог. 1 (+3 В). Кроме того, вывод PSEN микроконтроллеров семейств MSC12XX должен оставаться в состоянии лог. 1— быть подключенным к шине питания через резистор 10 кОм, а питание микроконтроллеров семейств P89LPC9XX должно оставаться включенным (Vdd = +3 В).
  2. Для остановки микроконтроллеров их состояние, а также состояние линий DTR и RTS должно соответствовать п. 1 (состояние сброса).
  3. Переключение микроконтроллеров в состояние программирования должно осуществляться путем манипулирования сигналами DTR и RTS. Эти сигналы, в свою очередь, должны управлять сигналами на выводах RST, PSEN и Vdd соответствующих микроконтроллеров согласно их спецификации программирования в режиме ISP, то есть устанавливать на выводах микроконтроллеров соответствующие потенциалы согласно приведенным в описаниях на микроконтроллеры временным диаграммам.

Перевод микроконтроллеров в режим ISP должен осуществляться из состояния сброса (п. 1).

Таким образом, схемы формирования соответствующих сигналов на выводах микроконтроллеров при помощи линий управления DTR и RTS и сами схемы сопряжения микроконтроллеров с компьютером должны быть составлены так, чтобы выполнялись условия всех п.п. 1–4.

1.3.3. Схемы формирования сигналов RST и PSEN для микроконтроллеров семейств MSC12XX

Свойства приведенных ранее КМОП-транзисторов и микросхемы DG419 являться приемниками RS-232 могут быть использованы в практических применениях для формирования сигналов запуска и остановки микроконтроллеров, а также для программирования микроконтроллеров в режиме ISP.

На рис. 5 приведены две альтернативные схемы управления сигналом на выводе RST, а на рис. 6— две альтернативные схемы управления сигналом PSEN микроконтроллеров семейств MSC12XX. Принципы их функционирования достаточно просты и в комментариях не нуждаются, а достоинства и недостатки сводятся к следующему.

Рис. 5. Схемы формирования сигнала RST
Рис. 5. Схемы формирования сигнала RST

На рис. 5а показана одна из альтернативных схем управления сигналом RST с помощью сигнала DTR. Из схемы видно, что для формирования сигнала RST в соответствии с п.п. 1–4 (см. 1.3.2) достаточно сигнал DTR «пропустить» через стандартный приемник RS-232, обладающий инвертирующими свойствами и имеющий двухтактный выход. Эта схема наиболее проста, не содержит ни одного дополнительного компонента и рекомендуется к применению.

Схема на рис. 5б может быть использована, если приемник RS-232 либо занят другими функциями, либо отсутствует вовсе.

Рис. 6. Схемы формирования сигнала PSEN
Рис. 6. Схемы формирования сигнала PSEN

На рис. 6 показаны две альтернативные схемы формирования сигнала PSEN. Схема рис. 6а более предпочтительна, так как сигнал PSEN, сформированный ей, больше защищен от помех; кроме того, эта схема имеет более высокое быстродействие. Оба эти свойства определяются тем, что, с одной стороны, сигнал PSEN (в одном из состояний) соединен с резистором номиналом в 10 кOм, с другой — высоким быстродействием коммутатора DG419. Схема рис. 6б дешевле, но она имеет невысокое быстродействие, поскольку резистор 100 кOм несколько затягивает время спада сигнала. Обе схемы удовлетворяют условиям п.п. 1–4 (1.3.2).

1.3.4. Схемы формирования сигналов RST и Vdd для микроконтроллеров семейств P89LPC9XX

На рис. 7 приведены две альтернативные схемы управления сигналом на выводе RST (для P89LPC9XX), а на рис. 8 — две альтернативные схемы управления сигналом Vdd микроконтроллеров семейств P89LPC9XX. Принципы их функционирования достаточно просты, а достоинства и недостатки описываются ниже.

Рис. 7. Схемы формирования сигнала RST
Рис. 7. Схемы формирования сигнала RST

Две схемы, показанные на рис. 7а (на базе КМОП-транзисторов обратной и прямой проводимости— 2N7000 и BS250 соответственно) имеют достаточное быстродействие, очень просты, дешевы, но потребляют ток около 3 мА (который проходит через резистор R1 при включении транзистора). Эти схемы могут быть рекомендованы, если нет ограничений по энергопотреблению.

Рис. 8. Схемы формирования сигнала Vdd
Рис. 8. Схемы формирования сигнала Vdd

Схема рис. 7б имеет более высокое быстродействие, практически не потребляет энергии, поскольку выходной сигнал (RST) является двухтактным, но несколько громоздка и дорога.

Схема, показанная на рис. 8а, обладает достаточным быстродействием, очень проста и дешева, отличается низким сопротивлением при включении питания (менее 10 Ом), но имеет повышенное потребление энергии, так как резистор R2 параллелен нагрузке (а это вход Vdd микроконтроллера) и через него проходит дополнительный ток в 3 мА. При необходимости резистор R2 можно удалить; в этом случае нагрузкой схемы будет сам микроконтроллер, ток потребления которого в активном режиме составляет не менее 3 мА. Однако если микроконтроллер будет переведен в «спящий» режим, его ток потребления намного снизится; это приведет к соответствующему увеличению внутреннего сопротивления (которое в этом случае может составить десятки килоом), что, в свою очередь, может привести к значительному затягиванию времени включения и выключения транзистора Т1.

Все же схема рис. 8а может быть рекомендована к применению, так как манипуляция с включением и выключением питания микроконтроллера (Vdd) в основном используется для его программирования (в режиме ISP). В штатном же режиме работы микроконтроллера его питание Vdd должно быть всегда включено (независимо от того, в каком состоянии находится вывод RST).

Схема, показанная на рис. 8б, имеет высокое быстродействие, низкое потребление энергии и не зависит от потребления тока микроконтроллером. Эта схема более дорогая и громоздкая. Сопротивление в открытом состоянии коммутатора (20 Ом) в два раза выше, чем у транзистора на схеме рис. 8а. Эта схема может быть рекомендована к применению, если есть ограничение на потребляемую энергию.

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

Продолжение следует.

Литература

  1. Кузьминов А. Ю. Интерфейс RS-232. Связь между компьютером и микроконтроллером. М.: Радио и связь. 2004.
  2. Кузьминов А. Ю. Интерфейс RS-232. Связь между компьютером и микроконтроллером. От DOS к Windows 98/XP. М.: ДМК Пресс. 2006.
  3. Кузьминов А. Ю. Универсальная система сбора и обработки данных АСИР-3. // Мир ПК. 1996. № 6.
  4. Кузьминов А. Ю.Удаленные системы сбора информации с датчиков на базе однокристальных микро ЭВМ // Автоматизация и производство. 1996. № 3.
  5. Кузьминов А. Ю. Однокристальные микроЭВМ — основа удаленных систем сбора и обработки сигналов, поступающих с датчиков // Электроника и компоненты. 1998. № 2.
  6. Кузьминов А. Ю. Новые MCS51-совместимые микроконтроллеры и их применение в системах сбора информации с датчиков // Контрольно-измерительные приборы и системы. 1997. № 6. 1998. № 7.
  7. www.analog.com
  8. www.atmel.com
  9. www.maxim-ic.com
  10. www.semiconductor-philips.com
  11. www.silabs.com
  12. www.ti.com
  13. www.msdn.microsoft.com/library
  14. www.gapdev.com

Скачать статью в формате PDF  Скачать статью Компоненты и технологии PDF

 


Другие статьи по данной теме:

Сообщить об ошибке