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

Преобразование ведется в два этапа — специализированная микросхема преобразует USB в COM (RS-232), а затем микроконтроллер преобразует СОМ в LPT. Поскольку компьютер в данном случае ведет обмен информацией через виртуальный СОМ-порт, взаимодействовать через предлагаемый преобразователь с внешним LPT-устройством смогут только программы, разработанные или переделанные с учетом этой особенности. Для всех остальных потребуется подключить к операционной системе специальный программный драйвер, который только предстоит разработать.

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

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

Преобразователь USB-COM-LPT - схема

На рисунке изображена схема преобразователя. Информация, передаваемая через разъем Х1 по интерфейсу USB, преобразуется с помощью микросхемы CP2103-GM в формат последовательного интерфейса RS-232. Она же выполняет обратное преобразование. Выводы управляющих линий интерфейса RS-232 этой микросхемы соединены перемычками, соответствующими постоянной готовности к обмену информацией. Выводы TXD и RXD соединены соответственно с информационными входом и выходом встроенного UART микроконтроллера ATmega8515-8AC [2]. Разъем Х2 предназначен для внутрисхемного программирования микроконтроллера.

Работая по программе микроконтроллер обрабатывает поступающие на вход встроенного UART команды компьютера. Выполняя их, он формирует на своих выводах и подключенных к ним контактам разъема ХЗ выходные сигналы порта LPT и принимает входные сигналы этого порта. Программа написана на языке С в среде разработки CodeVision.

Согласно разработанному автором и заложенному в программу микроконтроллера протоколу обмена информацией, компьютер должен посылать в преобразователь двух- или трехбайтные команды. Младший разряд первого байта команды задает направление передачи информации: О — из компьютера в преобразователь (запись); 1 — в обратном направлении (чтение). Следующий разряд определяет адресное пространство: 0 — регистр порта LPT; 1 — энергонезависимая память данных микроконтроллера. Шесть старших разрядов первого байта пока не используются. Второй байт команды содержит адрес регистра или ячейки памяти, который может лежать в интервале 0—255. Третий байт присутствует только в командах записи и содержит код, предназначенный для занесения в регистр или ячейку памяти. В ответ на двухбайтную команду чтения преобразователь передает в компьютер один байт — содержимое запрашиваемого регистра или ячейки памяти. Инициатором пересылки информации в любом направлении всегда является компьютер.

Возможность читать из EEPROM микроконтроллера и записывать в него информацию хотя и не требуется для рассматриваемого применения, но пригодится для развития и совершенствования выполняемых преобразователем функций. Например, чтобы записать в EEPROM микроконтроллера по адресу 0x01 байт 0x5F, компьютер должен послать через виртуальный СОМ-порт последовательность из трех байтов: 0x03, 0x01, 0x5F. А для чтения данных по тому же адресу достаточно команды из двух байтов: 0x02, 0x01. В ответ на нее преобразователь передаст байт, прочитанный из указанной ячейки EEPROM.

Как известно, с точки зрения программиста, порт LPT в обычном (не ЕРР или ЕСР) режиме работы состоит из трех регистров: данных (DR), состояния (SR) и управления (CR). Адрес регистра DR совпадает с базовым адресом порта, адреса регистров SR и CR больше соответственно на одну и две единицы. Такая структура порта LPT реализована и в предлагаемом устройстве. Полностью сохранено и назначение разрядов всех регистров. Это позволяет с минимальными затратами перерабатывать созданные ранее компьютерные программы для работы с описываемым преобразователем.

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

UART микроконтроллера программа настраивает на работу в асинхронном режиме со скоростью 115200 Бод при восьми информационных (без контроля четности) и одном стоповом разряде. Аналогичным образом должен быть настроен виртуальный порт СОМ компьютера. Имеются подпрограммы приема (UART_RXD) и передачи байта (UART_TXD) через UART, а также подпрограммы для записи (WRLPT) и чтения RDLPT регистров порта LPT и ячеек энергонезависимой памяти (WREEPROM и RDEEPROM).

Для максимальной совместимости с LPT предусмотрены маски регистров MaskSR и MaskCR. При выводе информации на линии портов микроконтроллера, соединенные с разъемом ХЗ, или ее вводе с этих линий выполняется автоматическая инверсия определенных разрядов регистров SR и CR с помощью упомянутых масок и логической операции XOR (исключительное ИЛИ).
Исходный текст программы снабжен подробным комментарием, что позволяет разобраться в ней без особого труда.

Для обеспечения работы с преобразователем необходимо установить в компьютере программный драйвер виртуального СОМ-порта, обеспечивающий обмен информацией с микросхемой СР2103. Этот драйвер свободно доступен на сайте производителя этих микросхем.

Для проверки преобразователя можно использовать самые разнообразные тестовые и отладочные программы, позволяющие работать с СОМ-портом, если в них нет прямых обращений к регистрам этого порта, как это обычно делалось в DOS и Windows9X/Me. Такие обращения необходимо заменить функциями работы с портом (например, CreateFile, Get-CommConfig, SetCommConfig, Read-Corn, WriteFile), предоставляемыми операционной системой.

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

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

Источник: Радио №4, 2008 г., автор О. Вальпа, г. Миасс, Челябинской обл.


Архив для статьи "Преобразователь USB-COM-LPT"
Описание:
Размер файла: 8.2 KB Количество загрузок: 1 997 Скачать

Комментарии  

0 #1 CHERUB 03.01.2019 21:19
Для atm8515 какие фьюзы устанавливать?
Сообщить модератору
0 #2 AntonChip 05.01.2019 08:42
Цитирую CHERUB:
Для atm8515 какие фьюзы устанавливать?

Low: 0xED, High: 0xD9
Сообщить модератору