Главная » Статьи » Схемы » Периферия

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

• Первый не подошел из-за того, что его уже нигде и нет.
• СОМ порт заинтересовал. Мало таких людей, которые не знают микросхемку MAX232. Да и схем много видел.
• Интерфейс USB поначалу показался ооочень сложным. Еще бы, меня понесло в самые дебри: я рассматривал пакеты сигналов, сигналы готовности и неготовности, даже разобрался в NRZI кодировке) В дальнейшем, я нашел возможно не самое красивое, но решение данного вопроса. О нем будет написано далее.

Аппаратная реализация.

Вариант 1

Начнем с СОМ порта. Он же интерфейс RS-232 - самый простой способ связать ПК и МК. RS-232 по сути и есть UART (как в микроконтроллерах). Только там 10-12 Вольт вместо нужных нам 5В. Надо согласовать. Для этого как раз и применяется MAX232. В этой микросхеме есть две линии для данных, которые повышают с 5В до 10В и две понижающие линии.
Для передачи данных в микроконтроллере используется две линии rx (прием) и tx (соответственно, передача). Согласовав уровни, надо подключить приемник контроллера к передатчику порта, а передатчик контроллера к приемнику порта. Примерно так, как это сделано на рисунке.

Вариант 2 (Использование USB)

Идея та же. Используем UART. Только связь пойдет не через MAX232, а через UART-USB мост. Такую функцию выполняют такие микросхемы, как CP2101, CP2102, FT232 (сам предпочитаю CP2102). Подробно приводить схемы включения не буду. Исчерпывающую информацию на этот счет можно найти в даташитах. Все аналогично MAX232: также используются линии rx/tx у контроллера и RXD/TXD у микросхемы. Опять же, на первом этапе, чтобы разобраться, используйте 2 линии.
С микросхемами CP210x работать сложно (очень трудно припаять без паяльной станции, и статики боятся), но их можно найти уже припаянными в data-кабелях для мобильных телефонов. Причем, схема включения в большинстве случаев, один в один как в даташите.
Следует заметить, что при установке драйверов для этих микросхем (ищется в инете на сайте производителя) в системе пропишется виртуальный COM порт. Именно его и надо будет указать далее в программах на ПК.

Программная реализация

Как я уже говорил, нам потребуется UART. На мой взгляд, проще всего запустить его через CodeWizardAVR.
Для этого:
• В CodeVisionAVR создаем новый проект. File->new File type : project
• Соглашаемся использовать CodeWizardAVR. Далее по вкладкам.
• Вкладка chip: выбираем контроллер и частоту кварца. Я использовал ATmega8 на 16 МГц.
• Вкладка USART: включаем Receiver и Transmitter, устанавливаем скорость работы в графе Baud Rate (на первый раз хватит 56000) . Больше ничего менять не надо. На первый раз просто запустить, а там поэкспериментируете =)
• На вкладке Ports конфигурируете нужные линии.
• В меню файл выбираете пункт Generate, Save and Exit

Получился большой текстовый файл, в котором все уже настроено (Не пугайтесь, практически половина всего, что там написано, это комменты). Теперь для вывода информации «из контроллера» будет использоваться UART. То есть, будут работать такие функции как printf(), scanf(), getchar(), putchar() и другие подобные, связанные со стандартным вводом/выводом в С (не путать с С++, cin или cout не пойдут!!!). Причем выводить они будут именно на линию UART. Осталось только найти в программе фрагмент:

while (1) {
// place your code here

}

и поместить туда свою программку. Например,

getchar();
printf("Hello World!”);

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

Осталось разобраться, как будет «разговаривать» компьютер. Для этого нам потребуется любая терминальная программа. К примеру, в том же CodeVision есть терминал. Его надо настроить на нужный порт и на ту скорость, которую вы запрограммировали. У меня стоят такие настройки:


При неверной настройке Handshaking будут проблемы с приемом. Поскольку мы пока используем только rx/tx, надо поставить именно так. При задействовании еще и других линий, соответственно, по-другому будет.

Открываем окно терминала в CV AVR. Нажимаем кнопочку Connect и в поле для текста нажимаем любой символ. В ответ на это будет написано "Hello, World!”

Также можно использовать такую программу как HyperTerminal (стандартная). В своих проектах я использую библиотеку SerialGate с сайта www.pcports.ru для работы с последовательными портами. Выражаю благодарность создателям этой библиотеки! Кстати, на сайте можно найти примеры использования SerialGate

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

Удачи! DeepBlack.

Категория: Периферия | Добавил: MysterySt (27.12.2010) | Автор: MysterySt E
Просмотров: 2719 | Теги: связь пк и мк, rs-232, com-порт, связи с пк
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]