Подписаться на получение новых статей на почту:

V-USB, USB OTG, хост. Cинхронизация ОС с МК AVR. Шаг №72

Всем привет. Итак, друзья, после знакомства в предыдущей статье с намеченным планом построения проекта, мы приступим к реализации изучения расписанных пунктов. А именно рассмотрим способы взаимодействия ОС Android с МК AVR.

Немного напомню, что мы уже рассматривали несколько способов передачи данных: с помощью преобразователя UART — USB на микроконтроллере ATtiny2313 (статья №8), т.е. применение отдельного узла и использование портов TXD/RXD, второй – подключение отдельного WI-FI модуля (статья №57). Сегодня же, рассмотрим совсем иной способ, а именно программную библиотеку V-USB (AVR-USB) , которая позволяет получить поддержку протокола USB на микроконтроллерах AVR (семейств Classic, Tiny и Mega компании Atmel), не имеющих аппаратной поддержки данного протокола. Авторство данной библиотеки принадлежит Objective Development. Распространяется по лицензии GNU GPL, а также коммерческой.
V-USBДанный интерфейс программный. Скорость ядра МК AVR способно реализовать лишь протокол USB 1.1 на низкой скорости (low-speed) (1,5 Мбит/с, 5 В, 500 мА). Поэтому она рассматривается для низкоскоростных устройств ввода – вывода USB HID ( Human Interface Devices — устройства человеко-машинного интерфейса). Сигналы USB (D+ и D-) обрабатываются по алгоритму (на ассемблере) и при определенных частотах ядра, для чего используются кварцевые резонаторы на 12, 15, 16, 16.5 и 20 МГц. Микроконтроллеры, которые имеют PLL (ФАПЧ, фазовую автоподстройку частоты) для генерации тактовой частоты, могут использовать внутренний RC-генератор, при условии калибровки частоты RC-генератора по сигналу SOF (Start Of Frame) протокола USB. Высокоуровневые процедуры и функции библиотеки написаны на языке C. Требования к микроконтроллеру AVR минимальны — минимум 2 кбайта flash и 128 байт RAM.

Подключение USB к AVRИз аппаратных ресурсов используется только прерывание по изменению сигнала на выводе (обычно INT0, подсоединенный к сигналу D+ шины USB). Скачать библиотеку можна по ссылке https://www.obdev.at/products/vusb/download.html. Ниже рисунок примера подключения интерфейса USB к МК.

Как видите схема простая, здесь на сигнальных линиях (D- , D+) стоят два токоограничителя по 68 Ом, от логической 1. Для падения напряжения (примерно до 3,6 В) применяется 2 диода подключенных в прямом направлении. Подтягивающий резистор 1,5 кОм для генерации напряжения на D- . И внешний кварц на 12 Мгц. Это самый простой способ для реализации данного протокола. Что б не растягивать статью, то разбор данной библиотеки на примере, мы перенесем в следующую.

Итак идем дальше. По схеме наш МК обзавелся USB – портом, то он автоматически становится USB – устройством. Здесь неважно, то ли это простой вариант передачи данных с  использование класса коммуникационных устройств USB CDC (communications device class), или USB serial-интерфейс (RS-232 TTL)  или тот же USB HID, для подключения к порту USB Android какого-нибудь устройства USB нам понадобится специальный кабель USB OTG в случае проводной передачи. Разберем что и зачем.

USB OTG

Стандарт USB OTG (On-The-Go), это — расширение USB 2.0, который используется для подключения различных USB-устройств друг с другом без применения компьютера, таких как мыши и смартфона и др. без установки каких-либо драйверов.

 

USB OTG мини ПКНапример фирма Blackview «пиарит» свою новинку 2017г., где при помощи функции OTG из смартфона можно получить своеобразный мини-ПК, подключив к USB-Hab (для подключения нескольких устройств) клавиатуру и мышь.

Что же такое OTG-адаптер – это кабель, на одном конце которого зачастую micro-USB, на другом внешний порт USB. Только устройство подключается к смартфону, он выдаст сообщение на дисплей.

Давайте немного рассмотрим что из себя представляет USB. USB ( Universal Serial Bus — «универсальная последовательная шина») — последовательный интерфейс для подключения периферийных устройств к вычислительной технике.

Слева на рисунке приведена распиновка.Распиновка USB Кабель USB содержит две пары проводов: одну для сигнальных цепей (D+ и D-) и одну пару для схемной земли (GND) и подачи питания +5 В (Vbus). Справа, ниже, вид USB A .

USB A

 

 

Типы USB

Добавим несколько слов, что USB различается по типу коннектора:

А  — Активное. Питающее устрйство. Хост.
В- пассивное, подключаемое устройство.
По «полу» коннектора:
M (male) – штекер , папа
F (female) -гнездо, мама
Размер коннектора:
— Без индекса
— mini
— micro

Для поддержки OTG разъёмы mini и micro содержат 5 контактов:
1. Красный VBUS.
2. Белый D- .
3. Зелёный D+.
4. ID — в разъёмах «B» не задействован; в разъёмах «A» замкнут с GND для поддержки функции «OTG».
5. Чёрный GND.

Распиновка USB OTGКроме прочего, в кабеле содержится (правда, не всегда) оголенный провод Shield — корпус, экран, оплётка. Этому проводу номер не присваивается.

При подключении через USB OTG ранг устройства (ведущий или ведомый) определяется наличием или, соответственно, отсутствием перемычки между контактами 4 (ID) и 5 (Ground) в штекере соединительного кабеля. . В обычном (не OTG-шном) дата — кабеле к 4-у контакту штекера micro ничего не припаяно вообще. Этот штекер называется USB-BM micro. Если добраться до четвёртого контакта и соединить его перемычкой с проводом GND. После этой переделки штекер переименовывается в USB-AM micro  Если же этой перемычки аппарат «не увидит», он сам будет выполнять роль пассивного устройства и всякие ваши флешки будет игнорировать.

В USB OTG кабеле такая перемычка устанавливается на стороне ведущего (Тип А) устройства. Ниже, справа рисунок с размерами коннектора, справа с перемычками

Т.е. как Вы понимаете кабель можна купить либо сделать самому.

Промежуточное звено мы рассмотрели. Едим дальше. Хост (от англ. host — «хозяин, принимающий гостей») — любое устройство, предоставляющее сервисы формата «клиент-сервер» в режиме сервера по каким-либо интерфейсам и уникально определённое на этих интерфейсах. В более частном случае под хостом могут понимать любой компьютер, сервер, подключённый к локальной или глобальной сети.

Android

В будущем мы планируем использовать хост для данного firmware. Хост работает на Windows, Linux, FreeBSD и Android.  На последней мы и остановимся. Передача данных в USB HID устрйство поддерживает иерархия Java классов.

В Android Поддержка устройств USB (реализация хоста USB) появилась в Android начиная с версии Android 3.1.x (API Level 12 или выше). Более старые системы не поддерживают режим хоста USB, т. е. они принципиально неспособны опознавать USB-устройства и работать с ними. Кроме того, аппаратура в Android должна поддерживать стандарт OTG (в настоящее время такая поддержка есть почти во всех современных телефонах и планшетах).

Для подключения к Android, у которых нет на корпусе коннектора Type A Female (это обычное дело, если у Вас не планшет, а телефон или смартфон Android), потребуется переходник Android OTG micro usb cable.

Для управления устройством USB в Android всегда используются классы UsbManager, UsbDevice, UsbInterface, UsbEndpoint, UsbDeviceConnection, которые хорошо документированы и просты в применении. Разбор программы на java на примере мы также перенесем в отдельную статью. На этом мы сегодня и остановимся. Всем пока.

Просмотрено 3965 раз.

Я на Google+

V-USB, USB OTG, хост. Cинхронизация ОС с МК AVR. Шаг №72: Один комментарий

  1. Удобнее использовать наборы клавиатура + мышь, которые имеют общий приёмник. В противном случае придётся искать работающий USB-хаб, чтобы одновременно подключить два устройства, а это может оказаться реальной проблемой. Подобно клавиатурам, принтеры являются периферией Plug-and-Play и работают с Android-устройствами сразу после подключения. Вы сможете распечатать документ на любом, даже стареньком принтере без Wi-Fi- модуля, не прибегая к помощи компьютера.

Добавить комментарий

Ваш e-mail не будет опубликован.

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Subscribe without commenting