на главную
Карта сайта
English version
Вы читаете:

Схема преобразователя USB-COM-LPT на микроконтроллере

Разное
16 лет назад

Преобразователь USB-COM-LPT на микроконтроллере

10

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

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

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

   На рисунке изображена схема преобразователя. Информация, передаваемая через разъем Х1 по интерфейсу USB, преобразуется с помощью микросхемы CP2103-GM [1] в формат последовательного интерфейса 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) и чтения RD_LPT регистров порта LPT и ячеек энергонезависимой памяти (WR_EEPROM и RD_EEPROM).

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

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

   Для обеспечения работы с преобразователем необходимо установить в компьютере программный драйвер виртуального СОМ-порта, обеспечивающий обмен информацией с микросхемой СР2103. Этот драйвер свободно доступен на сайте производителя этих микросхем по адресу http:// www.silabs.com/public/documents/software_doc/drivers/Microcontrollers /lnterface/en/CP210x_VCP_Win2K_XP _S2K3.exe.

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

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

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

   Полный комплект файлов проекта программы микроконтроллера можно скачать здесь

   ЛИТЕРАТУРА

  1. СР2103 - Single-Chip USB to UART Bridge. - http://www.silabs.com:80/public/documents/tpub_doc/ dsheet/Microcontrollers/Interface/en/cp2103.pdf
  2. ATmega8515, ATmega8515L - 8-bit Microcontroller with 8K Bytes In-System Programmable Flash. - http://www.atmel.com/dyn/resources/prod/documents/doc2512.pdf

   Автор: О.Вальпа, г. Миасс Челябинской обл.


Рекомендуем к данному материалу ...

Мнения читателей
  • Валерий/13.04.2015 - 16:41

    Здравствуйте. Программирую МК через LPT настольного ПК. Надо из ноутбука через USB. Будет ли ваша схема работать?мой мейл: valery.sahno@yandex.ru

  • Bellringer/16.12.2013 - 19:31

    Собрал, прошил memprog...а fuse автор не указал...Не пашет!

  • Игорь/15.02.2013 - 08:43

    В даном устройстве можно применить PL2303 или нет?

  • Александр/13.07.2012 - 15:39

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

  • info/21.10.2010 - 09:38

    Кварц не 17,3728мГц, а 7,3728мГц!!!

  • mitay-spb/09.07.2010 - 20:00

    Собрал донное устройство только на ATmega8535. При подключении к принтеру МК нагревается. Без подключения светодиоды имитируют работоспособность. Вопрос, походит ли данная программа прошивки ко всем АТ8 или только к АТ8515, можно ли без каких либо изменений применить вместо кварца 17,3728мГц кварц 14,32мГц и требуются ли какие буферные каскады для подключения принтера?

  • Александр/20.02.2010 - 14:05

    Прошу простить не совсем по теме Надо получить архивы с прибора. Подключаюсь через мою термин. программу и получаю с СОМ порта следующее: ---/000166616==;83< 2:000000003; Это ответ прибора на запрос из программы (здесь данные о температуре, расходе, давлении, перепаде).Как эту последовательность преобразовать в читабельный формат. С уважением Александр.Мой адрес. UR4IBS@UKR.NET

  • Димка/16.12.2009 - 21:19

    А как выглядит схема преобразователя rs-232 в lpt поделитесь или дайте ссылку

  • iopa/17.07.2009 - 12:15

    Как связаться с автором, есть конкретные вопросы.190862@list.ru

  • iopa/17.07.2009 - 11:51

    Практический пример связи Компьтера и Микроконтроллера через USB-интерфейс - очень полезная штука.Хочу перевести устройство на ATmega8535 связанное с компьтером через COM-порт на USB-канал, без существенной переделки программы.Поскольку используются TTL-уровни передачи нет необходимости в продаваемых переходниках.Есть вопросы по схеме. Оставить в комментариях или можно связаться по email?190862@list.ru