Всегда верное решение!
ГАММА-САНКТ-ПЕТЕРБУРГ
Поставки электронных компонентов и модулей на рынки
России, стран СНГ и Прибалтики
Russian English
(812) 493-51-15
197101, Санкт-Петербург, Певческий пер., 12
(ст.м. "Горьковская"), БЦ "LIGHTHOUSE"

посмотреть на карте

(812) 493-51-15

Наверное, самый дешевый мост USB-UART

Компания Microchip выпускает множество микроконтроллеров с USB интерфейсами. Самые дешевые из них это серия PIC16F14хх, которые имеют корпуса 14 и 20 выводов, интерфейсы USB 2.0 (Full Speed, FS), UART, I2C и SPI, что позволяет применять эти микроконтроллеры как преобразователи интерфейсов.

Все контроллеры этого семейства имеют модуль ШИМ/Захвата/Сравнения, а "старшие" PIC16F1455 и PIC16F1459 дополнительно имеют 10-и разрядный АЦП, два аналоговых компаратора и ЦАП.

Flash, Кб RAM, Кб Порты В/В Число выводов АЦП Компараторы ЦАП EUART MSSP (I2C, SPI)
PIC16F1454
PIC16LF1454
8 1 11 14 - - - 1 1
PIC16F1455
PIC16LF1455
8 1 11 14 5 2 1 1 1
PIC16F1459
PIC16LF1459
8 1 17 20 9 2 1 1 1

Отличительной особенностью контроллеров является возможность точной подстройки внутреннего RC генератора для тактирования ядра, USB и остальной периферии. За счет этого контроллеры можно использовать без внешнего кварца при этом обеспечивая требуемые тайминги во всем температурном диапазоне (-40 ... +85 для промышленного температурного диапазона и -40 ... +125 для расширенного).

Преобразователь USB - UART

Microchip предоставляет библиотеку (Microchip Library for Applications, www.microchip.com/MLA), которая содержит USB фреймворк.

Библиотека содержит несколько примеров реализаций USB Device CDC, MSD, HID, аудио, составных USB устройств и драйвера USB. Один из примеров "USB Device - CDC - Serial Emulator" реализует следующие функции:

  • CDC класс USB (Communication Device Class) – виртуальный COM-порт
  • установка скорости UART по выставленной скорости виртуального COM порта со стороны компьютера (при открытии USB соединения)
  • возможность аппаратного управления потоком (DTS, DTR, RTS, CTS)
  • управление светодиодами для отображения статуса (инициализация, установка драйвера и пр.)

Установка скорости виртуального COM порта обычно не имеет смысла, если связь осуществляется между USB и микроконтроллером, но в данном примере реализуется мост между USB и UART и параметр скорости используется для конфигурирования микроконтроллером своего UART модуля, т.е. задания скорости на стороне UART соединения.

Простейшая схема

Для реализации моста USB - UART нужно только 3 компонента: микроконтроллер и 2 конденсатора.

Если нужно управлять светодиодами, то добавляются еще 2 светодиода и резистора.

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

Рис. 1. Схема подключения микроконтроллера PIC16F1455.

Рис. 2. Макетка.

Среда разработки MPLAB X позволяет иметь несколько конфигураций в пределах одного проекта, что используется в примере "USB Device - CDC - Serial Emulator". Рассматриваемый проект сделан под несколько типов контроллеров и демонстрационных плат. Для нашей схемы и выбранного контроллера PIC16F1455 наиболее близкий вариант это конфигурация "LPC_USB_Development_Board_PIC16F1459".

Для удобства лучше создать новую конфигурацию, например "my_USB_test_Board_PIC16F1455"

Для этого откроем конфигурирование проекта, дублируем конфигурацию LPC_USB_Development_Board_PIC16F1459 (кнопка Duplicate), переименуем (Rename)

Затем делаем новую конфигурацию активной (кнопка Set Active)

Для новой конфигурации в свойствах выбираем используемый микроконтроллер

Для запуска примера на нашей плате нужно сделать одно изменение – выбрать режим работы без кварца. Для этого нужно убрать комментарии со строки #define USE_INTERNAL_OSC в файле "HardwareProfile - LPC USB Development Kit - PIC16F1459.h"

Чтобы было совсем красиво, можно сделать копию файла "HardwareProfile - LPC USB Development Kit - PIC16F1459.h" и переименовать в "HardwareProfile - my USB board - PIC16F1455.h", а в файле «HardwareProfile.h» добавить две строчки:

#if defined(_PIC14E)
#if defined (_16F1459)
#include "HardwareProfile - LPC USB Development Kit - PIC16F1459.h"
#elif defined(__16F1455)
#include "HardwareProfile - my USB board - PIC16F1455.h"
#endif
#endif

Теперь можно скомпилировать проект и прошить микроконтроллер.

При подключении USB компьютер должен обнаружить новое устройство. Драйвера для виртуального COM-порта находятся c:\microchip_solutions_v_xxx\USB\Device - CDC - Serial Emulator\inf\ (где _xxx это дата релиза установленной библиотеки Microchip).

Для проверки откроем гипертерминал (windows XP) или тератерм и выберем виртуальный COM - порт. Для проверки связи на стороне UART я буду использовать UART tool программатора PICkit 2 (см. http://pickit2.ru/doku.php/pickit2), а читатель может взять имеющийся преобразователь UART - RS-232, осциллограф, логический анализатор или просто замкнуть сигнал TX с RX для отправки обратно принятых данных.

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

Теперь переданные данные с USB будут получены в UART и наоборот.

Выводы

  • простая схема и минимальное количество элементов
  • готовый законченный пример и наличие драйверов, в том числе под Windows 7 и Windows 8
  • возможность перепрограммирования микроконтроллера под другие задачи и классы USB устройств (HID джойстик, клавиатура, составное USB устройство и т.п.)
  • наличие свободных выводов для контроля, управления, опроса датчиков и пр.
Регистрация e-mail на получение новостей ::

Статьи для разработчиков

Новости производителей