В данной статье приведена схема для организации двунаправленного обмена данными по интерфейсу RS-232 между контроллером и компьютером ( встроенный модуль USART <-> com-порт ), на примере микроконтроллера PIC16F628A.
Итак, модуль USART в PIC16F628A встроенный (реализован аппаратно), но контроллер работает с TTL уровнями (0, +5В), а интерфейс RS232 имеет уровни +5…+15В, -15…-5В, следовательно, нам нужен двунаправленный преобразователь уровней TTL <->RS232. Возьмем для этого стандартную, достаточно распространенную микросхему MAX232.
Схема:
Вот такая схемка. В общем-то, главное подключить GND, RX, TX. Это, соответственно, земля, линия приемника, линия передатчика. Как видите, приемник контроллера (RX) надо соединить с передатчиком компьютера (TxD), а передатчик контроллера (TX) с приемником компьютера (RxD).
Собственно, CTS и RTS можете, если хотите, не подключать, а можете использовать их по другому: CTS как DSR (тогда его надо будет подключить к DTR компьютера), а RTS как DTR (его надо будет подключить к DSR компьютера). Просто у MAX232 по два преобразователя в обе стороны, поэтому я решил соединить контроллер с компьютером еще по двум линиям, их можно использовать для аппаратного управления потоком. Остальные входы/выходы контроллера можете использовать по своему желанию, например, для управления светодиодами, подключения ЖКИ и т.д.
Важно: линии RX, TX следует подключать строго по схеме, так как именно на эти ноги выведен встроенный USART контроллера (на 7-ю ногу RX, на 8-ю ногу TX), а вот сигналы CTS, RTS можете подключить к любым другим входам/выходам (повторюсь, ко встроенному модулю USART они отношения не имеют, просто с ними можно потом аппаратный контроль сделать).
Детали: конденсаторы С1…С5 — 1 мкФ, конденсатор С6 — 0,1 мкФ, резистор R1 — 1 кОм.
Неиспользуемые входы контроллера следует подтягивать через резисторы к земле или питанию, либо программировать как выходы (RA2 только подтягивать — этот вывод контроллера может быть только входом) иначе контроллер будет ловить на эти входы всякие наводки.
Готовый девайс:
В даташите на MAX конденсаторы обвязки — электролиты. В устройстве на фотографии использовалась микросхема MAX232CSE с керамическими конденсаторами на 0,1 мкФ, — отлично работает (я вообще электролитов ни в одном "фабричном" устройстве на MAX232 не видел, зато видел много MAX232CWE и MAX232CSE с керамикой на 0,1 мкФ).
Иногда бывает очень удобно использовать преобразователь уровней RS232 <->TTL в виде отдельной платы (там же — более подробное исследование на тему возможных номиналов конденсаторов обвязки).
Потребляет схема не более 15 мА, так что, если у вас нет внешнего источника питания +5В, можно запитать ее прямо от разъема USB.
Пример программирования модуля USART
Скачать плату в формате Sprint-Layout 5.0. Плата разведена для SMD компонентов (кроме пика, конечно).