""

Использование usb-otg как виртуальный com-порт

STM32 – организация виртуального COM-порта

Раз у камня есть аппаратный USB, то грех им не пользоваться. Один из способов плюнуть байтом в компьютер и чтобы он при этом не очень обиделся — это организация виртуального COM-порта.
Все в железе пробовалось на камне STM32F103ZE, на аналогах тоже должно взлететь.

Забиваем.

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

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

Не забываем дрова виртуального ком-порта. У меня вообще-то оно само все нашлось, но я много чего ставил от STM, может там в комплекте и пришлись.

Также нам пригодятся следующие стандарты
USB 2.0 Specification
USB CDC

В составе библиотеки есть пример как раз организации виртуального COM-порта. Правда там он сделан как мост USART-USB, но мы же не боимся трудностей?

Цель этой статьи — разобрать приложение, делающее следующее:

Поджигаем

Собираем проект из нужных нам библиотек: CMSIS, SPD, USB. Дерево проекта прилагаю.

Как обычно, самое интересное в папочке /src. Вот её-то и будем разбирать.

Неторопливо курим

Начнем с раскуривания библиотеки от STM

Эта библиотека предназначена и для connectivity-line устройств (это STM32F105/107), у них не просто USB FS, а USB OTG. Поскольку камней с OTG у меня пока нет, сконцентрируемся на простом USB FS.
В примере, который мы взяли за основу, есть куча дефайнов, как раз на случай отличить connectivity-line от других демоплат. Я эти дефайны повырезал, чтобы глаза не мозолили.

Cо всей картинки нас интересует High Layer — синенькие квадратики, которые и составляют, собственно, пользовательскую часть библиотеки. Их мы меняем под свои нужды, все остальное остается неизменным. Если заглянуть в папочку /src, то видно, что все эти файлики там и собраны.

Первая затяжка — usb_conf.h

Самые общие настройки библиотеки.
Указано сколько у нас будет endpoints (а нам их надо 4 штуки — нулевой для начального конфигурирования устройства, один для команд, один для приема и один для передачи).
Также расписаны, какие нам будут нужны коллбэки. Все взаимодействие библиотеки и пользовательской программы построено на обратных вызовах: в случае возникновения какого-либо события вызывается функция с заданным названием. А уже содержание этой функции — проблема разработчика.
Нам будет нужен SOF_CALLBACK – сигнал начала фрейма (Start Of Frame). По нему будем выплевывать то, что накопилось в буфере передачи.
Также резервируем еще два коллбэка — на прием и передачу. По приему символа будем мигать светодиодами, чтобы уж как-нибудь задействовать канал приема.

Упс, кончился файл. Короткая получилась затяжка.

Файл берем из примера, ничего не меняем.

Вторая затяжка — usb_desc.h / usb_desc.c

В этих файлах находятся дескрипторы устройства и эндпоинтов.
Информация по стандартным дескрипторам есть в стандарте USB, в разделе 9.6 Standard USB Descriptor Definitions
Специфические дескрипторы описаны в USB CDC, раздел 5 (так и называется Descriptors),

Эти все тонны текста в стандартах для того, чтобы USB стала действительно Universal. Поэтому тщательно выведена классификация устройств и интерфейсов — чтобы глянув на дескриптор хост сразу понял, что с этим делать.

Особо подробно разбирать смысла не вижу — это не характерно для STM32, это общая боль разработчиков USB устройств.

Файл берем из примеров, ничего не меняем.

Продолжение дескрипторов — usb_prop.h / usb_prop.c

В этих файлах описана таблица реакции на запросы. Все запросы к устройству пронумерованы и стандартизованы. В этих файлах определяется массивы функций Device_Property, User_Standard_Requests и просто массивы String_Descriptor, например. Это все используется ядром. Когда в устройство приходит определенный запрос, например «Выдай мне дескриптор устройства», то ядро посмотрит в таблице, какая функция обрабатывает этот запрос, вызовет эту функцию, а оно уже отработает:

Опять же, берем файл из примеров.

Прерываемся — usb_istr.h / usb_istr.c

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

Прерывание будет настраиваться в файле hw_config.c, обработчик выглядит очень просто:

void USB_LP_CAN1_RX0_IRQHandler(void)
<
USB_Istr();
>

его можно разместить в файлах stm32f10x_it.*, а в данном проекте, чтобы не растекаться мысью по древу, я его включил в файл main.c

И тут особо ничего не меняем, все как в примере.

Питание — usb_pwr.h / usb_pwr.c

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

Ничего не меняем, файл из примеров.

Коллбэки — usb_endp.c

Этот файл я переписал, поскольку у нас не будет работы с USART, как это было в примере. Приведу код с комментариями:

Работа с железом — hw_config.h / hw_config.c

В этом файле собраны функции инициализации периферии, прерываний, функции управления светодиодами и работы с буфером отправки.

USB-порт и подтяжки на моей плате сделаны по такой схеме:

И USB_EN заведен на пин PF11. Значит надо не забыть его проинициализировать и дернуть вовремя.

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

По приему символов ‘A’, ‘B’, ‘C’, ‘D’ – зажигаются соответствующие светодиоды, ‘a’, ‘b’, ‘c’, ‘d’ – гасятся.
‘1’ и ‘0’ — соответственно зажигают и гасят все светодиоды.

Ну и все, что будет передано функции USB_Send_Data() попадает в буфер, а затем и через USB – в комп.

Уфф. С USB вроде закончили.

Теперь в головной программе можно просто вызывать USB_Send_Data() и посимвольно передавать данные в комп.

Если мы на этом остановимся, то размер кода будет порядка 11 кБ:

Более двух килобайт bss – это буферы приема и передачи. Понятное дело, их можно уменьшить.

Выдыхаем — printf()

Но мы же хотим, чтобы вывод функции printf() перенаправлялся в наш свежесозданный COM-порт. Подключаем и офигеваем от количества ошибок линковки:

А тут все просто — стандартная библиотека ввода-вывода подразумевает работу с файлами, но в больших системах есть ОС, которая собственно и занимается организацией файлов для программ пользователя. А поскольку у нас нет никакой ОС, то библиотека вполне справедливо недоумевает «А что же мне делать-то?»

Вот, чтобы это обойти, в проект включается файл newlib_stubs.c
В нем находятся функции-заглушки ко всем вышеперечисленным ошибкам. Но и кроме этого, есть одна функция, которую нам и надо переписать, чтобы весь вывод шел в USB:

Видим, что как раз и вызывается наша функция USB_Send_Data()

Все, компилим, собираем, запускаем.

Архив с проектом прилагаю — это на случай, если кто не заметит маленькие буковки внизу 🙂

STM Урок 33. HAL. USB. Virtual Com Port

Урок 33

HAL. USB. Virtual Com Port

Отладочную плату ипользуем ту же: STM32F4-DISCOVERY.

Проект создаём из проекта I2CLCD80. Назовем его USB_OTG_CDC. Запустим проект в Cube, включим USB_OTG_FS в режим Device_Only

В USB_DEVICE в разделе Class For FS IP выберем пункт Communication Device Class (Virtual Port Com).

Лапки портов PD4-PD7, PB8, PB9 отключим, это пережиток прошлых занятий

В Clock Configuration выберем следующие делители (нажмите на картинку для увеличения изображения)

В Configuration ничего не трогаем, т.к. прерывания там выставились сами.

Сгенерируем и запустим проект, подключим lcd.c и настроим программатор на автоперезагрузку.

Соберем проект. Прошьём контроллер. У нас появится неизвестное устройство, скачаем драйвер на наше виртуальное устройство usb. Для этого зайдем на сайт st.com, в строке поиска там вводим virtual com port, скачиваем и устанавливаем драйвер. Затем желательно зайти в папку с установленным драйвером, выбрать папку, соответствующую разрядности нашей операционной системы, и запускаем также установку и оттуда.

У нас скорей всего устройство установится с ошибкой (код 10)

Есть несколько типов решений, мне понравился именно этот, т.к. более простой: в файле usbd_cdc.h заменим размер пакета, вместо 512 напишем 256 в данной строке:

#define CDC_DATA_HS_MAX_PACKET_SIZE 256 /* Endpoint IN & OUT Packet size */

Соберём, прошьём и увидим, что ошибка исчезла.

Начнём писать код.

Сначала попытаемся передать данные на ПК.

Для этого мы сначала откроем файл usbd_cdc_if.c и исправим там в 2х строчках 4 на 64

/* It’s up to user to redefine and/or remove those define */

#define APP_RX_DATA_SIZE 64

#define APP_TX_DATA_SIZE 64

В файле main.c закомментируем весь пользовательский код кроме инициализации и очистки дисплея

/* USER CODE BEGIN 2 */

/* USER CODE END 2 */

Также в main.c подключим файл usbd_cdc_if.h для видимости функций приема и передачи

/* USER CODE BEGIN Includes */

Немного изменим в главной функции строковую переменную, убавив в ней размер и добавив префикс tx

/* USER CODE BEGIN 1 */

/* USER CODE END 1 */

В файле usbd_cdc_if.c добавим прототип функции передачи, скопировав объявление из реализации данной функции в том же файле

/* USER CODE BEGIN PRIVATE_FUNCTIONS_DECLARATION */

uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len);

/* USER CODE END PRIVATE_FUNCTIONS_DECLARATION */

В main() внесём данные в строку

/* USER CODE END 2 */

В бесконечном цикле попробуем эти данные отправить в порт USB, используя функцию, прототип которой мы добавили

CDC_Transmit_FS((unsigned char*)str_tx, strlen(str_tx));

/* USER CODE END WHILE */

Соберём код, прошьём контроллер и посмотрим результат в терминальной программе.

Вроде передать нам что-то удалось. Теперь попробуем что-нибудь принять. Здесь чуть посложнее, т.к. для этого используется уже обработчик прерывания, коим является в файле usbd_cdc_if.c функция CDC_Receive_FS.

Добавим ещё одну строковую глобальную переменную в main()

/* USER CODE BEGIN PV */

/* USER CODE END PV */

Объявим её также и в файле usbd_cdc_if.c

/* USER CODE BEGIN PRIVATE_VARIABLES */

extern char str_rx[21];

/* USER CODE END PRIVATE_VARIABLES */

В функцию CDC_Receive_FS в этом же файле добавим некоторый код и кое-что закомментируем

static int8_t CDC_Receive_FS (uint8_t* Buf, uint32_t *Len)

/* USER CODE BEGIN 6 */

Добавим переменную в main()

/* USER CODE BEGIN 1 */

Занесенные в наш буфер данные попробуем вывести на дисплей, для этого в бесконечном цикле в функции main() добавим определённый код

CDC_Transmit_FS((unsigned char*)str_tx, strlen(str_tx));

Соберём проект. Прошьём код и посмотрим результат, вводя в терминальной программе и отправляя в порт USB какие-нибудь строки.

18 комментариев на “ STM Урок 33. HAL. USB. Virtual Com Port ”

“Есть несколько типов решений, мне понравился именно этот, т.к. более простой: в файле usbd_cdc.h заменим размер пакета, вместо 512 напишем 256 в данной строке….”

Просто измените размер кучи (Minimum Heap Size) в настройка CubeMX. Вместо значения 0x200 задайте 0x400.

И комп увидит устройство без ошибок.

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

Пардон, очепятка вышла. Не компилятору, а функции malloc.

Читайте также:  Светодиодный драйвер lt3955 с внутренним шим генератором

Спасибо, так действительно проще.

Спасибо огромное за ваши материалы по STM32 , подключил TFT 320×240 – все отлично работает . Вернулся к материалу для подключения флешки . Все отладочные средства у меня находятся на VirtualBox ( W7 ) . Скачал по вашей инструкции и поставил драйвер Virtual com port . Он поставился , но в диспетчере задач ничего не появилось ни в разделе com портов , ни в других . Может вы сталкивались с подобной проблемой ? Если нет – в любом случае еще раз спасибо за проделанную работу .

Сначала не смог реализовать данный пример на SystemWorkbench в части приёма данных и передачи их из функции приёма в main посредством массива str_rx с модификатором extern – компилятор ругается на использование неопределённых переменных, а если задать ему какие-нибудь значения, то только эти заданные значения и будут передаваться. Вышел из положения объявив массив обмена str_rx в заголовочном файле usbd_cdc_if.h

Спасибо.Я сделал так.В хидер usbd_cdc_if.h добавил две строчки
extern uint8_t UserRxBufferFS[1000];
uint8_t receiveBufLen;
В метод CDC_Receive_FS добавил перед return receiveBufLen = *Len;
И в main ловил данные просто одним условием
if(receiveBufLen > 0)// если получены данные от ПК
<
HAL_Delay(250);
CDC_Transmit_FS((uint8_t*) UserRxBufferFS,receiveBufLen);
// эхо для наглядности
receiveBufLen = 0;// сброс получения
>
Всё просто,а UserRxBufferFS чистить не нужно от мусора,он сам чистится.

Здравствуйте! Спасибо огромное за ваши уроки, тут пожалуй лучший ресурс с уроками по стм32!
Хочу спросить, а как использовать CDC_Receive_FS в main.c? Я проделал в usbd_cdc_if.c “эхо”, но мне нужно принимать из него и гнать дальше. Наверное вопрос больше в целом по си чем по контроллеру, а то иначе мне получается надо много всего переносить в usbd_cdc_if.c.

Думаю, что следует добавить в main.c функцию, а в файле usbd_cdc_if.c – на неё прототип и вызвать её в CDC_Receive_FS, И весь свой пользовательский код затем писать в файле main.c.
Это именно СИ. Так что обязательно подтяните свои знания по языку.

Ох, видимо сперва надо читать коментарии, прочитал тот что выше.

При переходе на USB cтолкнулся с такой проблемой. Скажем, конструкция, приведённая в примере, а именно
sprintf(str_tx,”USB Transmitrn”);
CDC_Transmit_FS((unsigned char*)str_tx, strlen(str_tx));
работает без проблем. Но, если я делаю так
sprintf(str_tx,”USB Transmit”);
CDC_Transmit_FS((unsigned char*)str_tx, strlen(str_tx));
CDC_Transmit_FS((unsigned char*)”rn”, 2);
то CDC_Transmit_FS((unsigned char*)”rn”, 2); не срабатывает (не успевает) и данные летят без переноса строки. Если ставить задержку, то работает как надо. По неопытности, может, это я и принял бы как должное, если бы перед этим не работал бы с UART где такая же конструкция работает без проблем. Для работы с UART уже написана довольно хорошая часть программы и менять её структуру очень не хочется, тем более, что данные передаются не в текстовом формате а в посылке имеется несколько меток. Что можно сделать, чтобы посылки могли идти подряд без задержки?

Скорей всего придется делать конкатенацию передаваемых строк с помощью strcat. Была аналогичная проблема при использовании CDC. Автор применял этот метод в одном из уроков.

Здравствуйте
А если я хочу передавать данные с микроконтроллера на компьютер?

Константин:
А мы их туда и передали.

Установил различные драйвера VCP от STM, но при этом плата не определяется при подключении её к компьютеру. только виден STLink Virtual COM Port. Кто уже сталкивался с такой проблемой.

Оказалась, что проблема с дровами. Надо их полностью сносить и устанавливать заново.

Hello, I’m new to STM32. How do I send int32_t value via usb CDC from ADC input ? or How to convert int32_t to char?

You can use(for example):

sprintf(str_tx,”ADC:%d rn”,ADC_Data);
CDC_Transmit_FS((unsigned char*)str_tx, strlen(str_tx));

where ADC_Data is your ADC value.

Спасибо за примеры. С USB в базовой библиотеке что-то не так. При первом подключении ком порт работает, но при передергивании USB – становится неизвестным устройством, иногда не сразу а через 5-10 секунд после повторного подключения…
Сейчас копаю в сторону функций вызываемых на отключение и подключение USB. Первое что кажется подозрительным, то что на подключение вызывается инициализация а на отключение USBD_LL_Suspend, затем на подключение снова инициализация, хотя есть USBD_LL_Resume. Пока дальнейших идей нет. Может что-то подскажете?

Использование usb-otg как виртуальный com-порт

СмартПульс – держите руку на пульсе высоких технологий! То, что доктор прописал!
Характеристики, тесты, обзоры смартфонов, планшетов, электронных книг, плееров и другой мобильной техники. Разборка, ремонт, решение проблем.

Главная -> Информация к размышлению (статьи) -> Лекция по анатомии мобильных устройств. Что такое USB OTG в смартфоне и планшете?

Лекция по анатомии мобильных устройств. Чт о такое USB OTG в смартфоне и планшете?

Многие читатели портала СмартПульс.Ру, встречая в обзорах фразу «USB OTG работает» или наоборот, «USB OTG не работает», интересуются, что такое USB OTG, как им пользоваться и какая вообще от него польза?

Спецификация USB OTG была создана с целью соединения электронных устройств между собой для передачи данных через порт USB, минуя компьютер. OTG расшифровывается как “On-the-Go” («На ходу»).

Эта спецификация имеет свой логотип:

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

В этих устройствах (кроме смартфонов и планшетов) порт – «однонаправленный», то есть порт в устройстве выступает только для подключения пассивных USB-накопителей. А для соединения с компьютером используется другой USB порт (если он есть; но его может и не быть, если устройство – сетевое или вообще не предназначено для соединения с компьютером).

В то же время в смартфонах и планшетах с портом USB OTG этот порт – «двунаправленный», то есть может использоваться как для подключения пассивных устройств, так и для соединения с компьютером (в этом случае смартфон или планшет сами выступают в роли пассивного устройства).

В соответствии с принятой терминологией, активное USB устройство именуется USB-хостом. И именно таковыми становятся смартфоны и планшеты, когда к ним через USB OTG подключаются “флешки” и другие устройства.

Теперь следующий вопрос: каким образом при соединении с каким-то другим устройством через USB OTG смартфон (планшет) «догадается», как ему работать – как USB-хост или как пассивное устройство?

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

Рассмотрим переключение в режим хоста на примере стандартного кабеля-переходника USB OTG для разъема micro-USB. Кстати, из-за наличия дополнительного контакта этот USB-разъём имеет не 4, а 5 контактов. Посмотрите на схему этого переходника:

На схеме в верхнем разъеме ( micro-USB) за режим OTG отвечает контакт номер 4.
При соединении контактов 4 и 5 в смартфоне (планшете) активизируется режим хоста, и он может управлять подключенными устройствами. Одновременно смартфон (планшет) подает на контакт 1 питание +5 Вольт, которым запитывается подключаемое устройство (если оно не имеет собственного источника питания). Соответственно, подключение устройства повышает нагрузку на систему питания смартфона; и это повышение может быть значительным, если подключается, например, портативный внешний жесткий диск.

Это соединение контактов 4 и 5 осуществлено “жестко” в кабеле-переходнике USB OTG – они просто “намертво” спаяны между собой.

В «древности» народные умельцы «потрошили» кабели и удлинители с разъемами USB, и путем пайки превращали их в переходники для USB OTG:


(фотография взята отсюда: http://r-nedo.livejournal.com/6598.html )

Но теперь в таком “шаманстве” нет необходимости: кабели-переходники USB OTG можно найти во многих магазинах и стоят они не дорого.

Выглядит типовой кабель-переходник USB OTG для разъема micro-USB вот так:


(кликнуть для увеличения)

Но в последнее время стали появляться смартфоны и планшеты не с разъемом micro-USB, а с разъемом USB Type-C. Для таких разъемов тоже существуют кабели-переходники USB OTG, но по причине новизны найти их в магазинах намного сложнее.

А выглядят они так:


(кликнуть для увеличения)

Теперь, когда мы разобрались с теорией, перейдем к практике.

Все ли смартфоны и планшеты поддерживают USB OTG?

Нет, не все. Как правило, дорогие устройства поддерживают USB OTG, а дешевые (бюджетные) – могут поддерживать, а могут и не поддерживать. Обычно это указывается в технических характеристиках устройства, но не всегда. В таком случае помогает чтение форумов и обзоров; на крайний случай – собственноручная проверка. Внимание! Во всех обзорах на портале SmartPuls.ru тестируемые устройства проверяются на функционирование USB OTG!

Особняком стоят планшеты на полноценной операционной системе Windows. Как правило, в них имеется не порт USB OTG, а настоящий полноценный и полноразмерный порт USB 2.0 или 3.0; а то и несколько таких портов. В этом случае необходимости в USB OTG просто нет.

Бывают и в Windows-планшетах особенности, когда все-таки в них нет полноразмерных USB-портов. Тогда в них обязательно должен быть порт micro-USB или USB Type-C. И вот в этих случаях даже для Windows-планшета может потребоваться кабель-переходник USB OTG!

Какие устройства можно подключать к смартфонам и планшетам через USB OTG?

Начнем с простого случая: Windows-планшет. К нему можно подключать всё, на что существуют драйвера, включая принтеры, веб-камеры и десятки других типов устройств. Только следите, чтобы планшет по питанию не перегрузился.

Теперь – к более сложному: смартфонам и планшетам на Android.

Если порт USB OTG на устройстве функционирует, то гарантированно он будет работать только с тремя видами устройств: мышкой, клавиатурой и «флешками» объемом до 32 Гб включительно. Поддержка других устройств определяется особенностями прошивки смартфона/планшета (т.е. добросовестностью производителя).

После подключения флешки к смартфону (планшету) она появляется как “Съемный накопитель” в разделе “Хранилище и USB- накопители” (в Android 6) или в разделе “Память” (более ранние версии):


(кликнуть для увеличения)

Соответственно, открывается доступ и через файловые менеджеры.

Продолжаем рассматривать далее возможности подключения разных устройств к USB OTG.

Наиболее вероятно (но уже не на 100%), что будут работать «флешки» на 64 Гб и более, карт-ридеры и портативные плееры.

Далее (по степени уменьшения вероятности) идут фотоаппараты.

Затем – портативные жесткие диски. С ними ситуация усугубляется тем, что от смартфона (планшета) требуются “двойные усилия”: надо одновременно и «осилить» его по питанию; и к тому же распознать его файловую систему (чаще всего – NTFS).

И, наконец, самые бесперспективные случаи – сканеры, принтеры, и даже свои «собратья» – другие смартфоны и планшеты на Andro >USB OTG очень не любят.

Еще интересный вопрос: существуют ли устройства, которые можно подключить к смартфону/планшету напрямую, без кабеля-переходника?

Да, существуют в природе «флешки» с двухстандартными соединителями: «обычный» USB в качестве первого и micro-USB или USB Type-C в качестве второго. Выглядят они примерно так:

Но распространены «двухстандартные» флешки довольно мало, и лучше на них не ориентироваться.

Сфера применения USB OTG.

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

Наибольшее распространение получил порт USB OTG для подключения внешних накопителей с теми файлами, которые не обязательно должны постоянно присутствовать в смартфоне (планшете). Если, например, файлы с оффлайн-картами местности должны постоянно находиться в смартфоне (во внутренней памяти или на micro-SD карте); то коллекция фильмов или фотоальбомов может храниться на флешке и подключаться по мере необходимости.

Читайте также:  Microchip представила новый высокоскоростной сертифицированный контроллер usb3-концентратора

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

Еще одно, в некоторой степени “нестандартное” применение мобильных устройств c USB OTG – подзарядка других устройств (использование в качестве Power Bank).
Как уже отмечалось выше, при активации порта USB OTG в кабель-переходник подается напряжение +5 Вольт.
Соответственно, если к переходнику подключить другое устройство, то оно будет заряжать свой аккумулятор от “основного” смартфона (планшета)!
Но надо помнить о разумных ограничениях при использовании такой возможности. Главное правило состоит в том, что устройство с “большим” аккумулятором должно подпитывать устройство с “маленьким”; а не наоборот. Иначе Вы легко можете “посадить” устройство с “маленьким” аккумулятором, толком не зарядив устройство с “большим”.

Ваш Доктор.
14.01.2017

Другие статьи цикла “Как устроен смартфон”:

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

The Best Guide

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

Тема сегодняшней статьи — USB-host (USB-хост). Это весьма примечательная функция, которой оснащается достаточно большое количество устройств (в основном, правда, довольно дорогих), и рассказать о ней определенно стоит. Также я расскажу и о функции USB OTG — фактически, более современной разновидности USB-хоста.

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

Устройство с функцией USB-хоста обладает полноценным портом USB и специальным программным обеспечением (в частности, драйверами), которое позволяет осуществлять работу с подключаемыми устройствами: передавать на них файлы, копировать файлы с них, использовать подключенное устройство в качестве клавиатуры и так далее.

Что интересно, к устройству с USB-хостом можно подключать также USB-хабы — устройства, которые подобны сетевым тройникам. Например, на планшетах обычно имеется только один порт USB. Подключив к нему USB-хаб (а стоит он недорого), вы получите уже два или даже четыре порта, что весьма удобно — например, к одному можно подсоединить клавиатуру, а к другому подключать флэшки.

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

Весьма приятна возможность перенести снимки с фотоаппарата на планшет или плеер с жестким диском, и тем самым освободить память фотоаппарата, сделать еще больше снимков. Подключение клавиатуры к планшету — тоже очень приятная возможность. Удобны и принтеры с наличием USB-хоста: к ним можно напрямую подключать фотоаппараты, телефоны, флэшки и печатать снимки или документы прямо с них; компьютер для этого совершенно необязателен.

При этом стоит отметить, что само наличие функции USB-хоста еще не гарантирует его нормальную работу. В частности, процесс обмена файлами через USB может осуществляться достаточно сложным и неудобным образом — в качестве примера можно привести PocketBook 302 (это, кстати, единственный ридер, оснащенный USB-хостом). Какие-то устройства могут просто не подключиться ввиду отсутствия драйверов или неких недоработок программистов, писавших программное обеспечение для USB-хоста.

Именно поэтому я советую перед покупкой того или иного устройства проверить, насколько качественно реализована в нем опция USB-host. Попробуйте подключить флэшку, посмотреть, насколько легко и удобно можно скопировать файлы с нее и на нее. Если у вас есть usb-клавиатура, которую вы планируете использовать вместе с покупаемым устройством, не лишним будет проверить корректность ее работы. Если же вы соберетесь купить такую клавиатуру уже после покупки самого устройства, то возьмите с собой в магазин это устройство и проверьте, насколько корректно будут с ним работать представленные в магазины клавиатуры.

Стоит отметить, что сейчас имеются в продаже устройства и с поддержкой так называемого USB OTG. Я бы сказал даже, что USB OTG сейчас встречается в устройствах довольно часто, чаще, чем классический USB-хост. В чем основное отличие USB OTG? В том, что USB OTG не предполагает наличие отдельного классического полноразмерного порта USB. Для подключения периферийных устройств используется порт microUSB или miniUSB, который, вообще говоря, служит главным образом для связи устройства с компьютером. На устройстве с USB OTG этот порт фактически совмещает в себе функции USB-host (подключение периферии) и USB-device (подключение к компьютеру).

Чтобы к miniUSB/microUSB порту с поддержкой OTG подключить флэшку или, скажем, клавиатуру, необходимо приобрести специальный переходник, который стоит порядка 500 рублей (при желании его можно найти по более низкой цене или же вовсе сделать самому — в интернете есть инструкции). Затем нужно вставить этот переходник в порт miniUSB/microUSB, а к соответствующему выходу переходника подключить нужное вам периферийное устройство.

И тут опять же стоит отметить, что не на всех устройствах USB OTG реализовано хорошо. Где-то поддержка USB OTG может быть заявлена, но ввиду отсутствия необходимого программного обеспечения она не работает. Пример — ридеры Onyx Boox. Также стоит отметить, что внешние жесткие диски по протоколу USB OTG подключить вряд ли удастся: они потребляют слишком много энергии; планшет «прокормить» их просто не в состоянии.

Так мы плавно переходим к основному недостатку USB-хоста (как классического, так и USB OTG): его активное использование способствует быстрой разрядке устройства. Конечно, клавиатура много энергии пожирать не будет, а вот постоянно подключенная и использующаяся флэшка — будет.

Под конец стоит ответить на вопрос: почему USB OTG сейчас популярнее, чем обычный USB-host? Ответ, на самом деле, довольно прост: USB OTG позволяет уменьшить толщину и вес устройства. В случае с классическим USB-host’ом в устройство надо встроить полноразмерный USB-порт (соответственно, увеличивается толщина) и обычный mini/micro-USB порт — для подключения к компьютеру (увеличивается и итоговый вес). В случае с USB OTG надо установить только один mini/microUSB-порт, просто многофункциональный — работающий и на вход, и на выход. Более того, USB OTG отличается более низким энергопотреблением, хотя и не позволяет поэтому подключать такие прожорливые устройства, как внешние жесткие диски.

Но USB OTG не лишен и недостатков, главным из которых является необходимость покупки переходника и постоянной его переноски с собой.

Посмотреть, поддерживает ли интересующее вас устройство опцию USB-host или USB OTG, можно на странице описания устройства в разделе «Технические характеристики» («Спецификации»). Описание, разумеется, можно найти на сайте производителя устройства, а также на сайтах многих магазинов.

17 thoughts on “ Что такое USB-host и USB OTG ”

Кстати: может сделать небольшой обзор- справочник по кабелям? Что такое AM-AF, AM-BM и прочие абревиатуры. Для чего они нужны, полезны и т.д
Можно сюда и HDMI добавить. Сейчас в продаже как минимум три разновидности(модификации) этих кабелей. Последняя, самая дорогая позволяет использовать этот кабель для всего- вплоть до передачи интернета. Т.е из него пытаются сделать универсальный стандарт.

Увы, я совершенно не разбираюсь кабелях, во всех этих AM-AF, AM-BM и тому подобных разновидностях.

Самое оригинальное применение AM-AF : если пользуетесь модемом от сотового оператора, то при плохом приеме удлинить соединение с помощью этого кабеля и подвесить модем к потолку или выкинуть в форточку.

. Но USB OTG не лишен и недостатков — невозможность подключения USB-хаба (разветвителя).
А как же это видео?
http://samsung-galaxy.mobi/samsung-galaxy-s3-i-dzhoystik-posredstvom-usb-otg/

Спасибо за информацию и ссылку! Сейчас сам удивляюсь, с чего взял, что нельзя подключить юсб-хаб к устройству с OTG:)
Убрал соответствующее предложение.

Hi All!
К моему Samsung Galaxy Tab 7.7 через USB-OTG кабель непосредственно подключаются маломощные (до 500мА потребляемого тока) USB-устройсва, как-то USB Flash, USB Card Readers, etc., а также мощные USB устройства типа EBook, Ext USB HDD с подключенным собственным питанием. Через внешний USB-hab со своим источником питания поключаются внешние USB HDD, не имеющие собственного источника питания — проверено на Jet HDD 0.5TB, который получает питание только через USB. Причем, в отличе от многих китайских недопланшетов, видится несколько поключенных к хабу устойств, а не «одно из…» То же самое могу сказать про Samsung Galaxy S3. Про другие врать не буду, пока лично не проверю!
Yours sincerely, Dmitry aka wcat

А в программном отношении USB OTG это просто USB или нет?

Насколько я знаю, нет. Нужны специальные драйвера. Бывает, что устройство оснащено USB OTG аппаратно, но программно возможность «общения» с внешними устройствами не поддерживается.

Зачем вообще эта глупость на планшетах? Обычный порт вполне бы подошёл как на нетбуках. Как и для usb типа В, так и для типа А есть варианты и мини, и микро. Через тип А нельзя подключать устройство к компу, но зачем вообще это надо? Мы же не подключаем нетбуки к компу через USB и не паримся по этому поводу. USB otg больше нужен телефонам, но планшет всё же ближе к нетбуку, чем к телефону.

Добрый день. при подключении планшета через USB OTG к ПК насколько свободно можно оперировать фалами на планшете?

USB-OTG — это всё извращение на самом деле, полезное, если только, для смартфонов на тот случай, когда понадобится к смартфону флешку подключить, но при этом сохранить возможность подключать смартфон к компу. Это, кстати, также является пережитком прошлого, из тех времён, когда не было флешек и приходилось покупать специальные кабеля для подключения телефонов к компьютерам. Ну, может быть остался в этом какой-то смысл, всё-таки не все компьютеры оснащены картридером для microSD-флешек. Вот это тот единственный случай, когда от USB-OTG есть реальная польза.

Использование же USB-OTG на планшетах — это реальный маразм, поскольку планшет подключать к компу смысла нет никакого, ибо есть встроенный wifi, нормального размера дисплей, короче говоря, есть возможность по-человечески работать в сети. А раз нет необходимости подключаться к компу, то, спрашивается, ЗАЧЕМ ВООБЩЕ НА ПЛАНШЕТЕ УСТАНАВЛИВАТЬ USB-ПОРТ ТИПА B? Это и есть главный вопрос, но такое впечатление, что производители воспринимают планшет как устройство более близкое к телефону, нежели чем к ноутбуку, по-другому эту глупость в виде установки USB портов типа B не объяснишь. Вполне себе замечательно можно было бы установить порт microUSB типа A и подключать к планшету не только флешки, но и принтеры, например: драйвера есть и для Windows, и для Android (ибо на Linux’e это дело собрано).

Салют,Колян! Ну вот я тоже пользовался флешками для передачи данных с телефона на планшет(и обратно).
Пока телефон перестал запускаться с флешкой.Теперь собрал один кабель,соединив по цветам два конца(папа-папа) с микроЮСБ,так как в продаже оного нет:-(.Не пойму,почему планшет на видит телефон,не появляется даже значок ЮСБ соединения.Может,что не правильно делаю?

Где можно приобрести нужные драйвера для отг?

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

Читайте также:  Повышающий преобразователь с mppt контролером заряда для солнечных батарей

А хде реклама? хотел отблагодарить за инфу, а рекламы нету..

Что такое USB OTG? 5 интересных способов его использования вместе с Andro > 16.11.2015 Category: Android Author: Администратор

USB-накопители очень удобны, не так ли? Но вы не можете подключать их к своему телефону. Если, конечно, не являетесь владельцем устройства под управлением Android и не знаете что такое USB OTG.

Технология USB On-The-Go (OTG) — это стандартизованная спецификация для USB подключений, позволяющая устройству считывать данные через USB без использования настольного компьютера. Фактически, устройство превращается в «USB хоста». А такой возможностью обладают далеко не все гаджеты.

Какие этому можно найти применения? Самые разнообразные! Подробнее мы их рассмотрим ниже. К примеру, если вы хотите подключить USB-накопитель к своему телефону или старый контроллер от Xbox 360 к планшету на Android, USB OTG поможет это сделать.

USB OTG не является эксклюзивной особенностью Android, но чаще всего используется именно с этой операционной системой, поэтому на ней мы и остановимся. Некоторые принтеры уже поддерживают эту технологию. Microsoft собирается интегрировать USB OTG в Windows Phone 10, а Apple пока хранит молчание. Ещё одна причина приобрести телефон на базе Android вместо iPhone.

Проверьте, поддерживает ли ваш Android USB OTG

Самый простой и надёжный способ проверить, поддерживает ли ваш телефон или планшет USB OTG — осмотреть коробку, в которую устройство было упаковано или зайти на сайт производителя. Вы увидите логотип, как на картинке выше, или найдёте упоминание USB OTG в спецификациях устройства.

Если вы никак не можете найти эту информацию, попробуйте поискать своё устройство на GSMArena.com. Прокручивайте список характеристик, пока не найдёте раздел «USB». Если там есть фраза «USB хост», значит всё нормально.

Ещё один метод заключается в загрузке утилиты USB OTG Checker из магазина Play Store. Это бесплатное приложение, которое даст вам быстрый ответ, поддерживает ли Android данную функцию.

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

Что необходимо для использования USB OTG

Ваше устройство под управлением Android оборудовано стандартным портом micro-USB. Однако большинству USB устройств требуется полноценный USB порт. Как решить эту проблему? С помощью переходника micro-USB-to-USB, конечно.

Вам нужно найти кабель с выходом micro-USB и входом большого USB. Будем надеяться, что в будущем, когда стандарт USB Type C станет достаточно широко распространён, на это можно будет не обращать внимания. А пока, множество таких адаптеров можно найти на Amazon, например, популярный UGreen OTG Adapter.

Кроме этого, сейчас в продаже появились флеш-накопители как с micro USB, так и со стандартным USB портом. К примеру, Kingston Micro Duo. Такие флешки стоят не дороже обычных USB-накопителей, поэтому будут полезным приобретением.

Что можно делать с помощью USB OTG

После подготовки USB OTG для Android, перед вами открывается просто море возможностей. На Reddit есть целая тема, посвящённая способам применения USB OTG. В этой статье мы перечислим лишь самые популярные их них.

Подключайте флеш-накопители и внешние жёсткие диски

Конечно, внешние хранилища данных находятся на вершине нашего списка. Просто подключите их и работайте. Проще всего это провернуть с USB-накопителями, тогда как с внешними жёсткими дисками всё не так радужно. Портативные диски, питающиеся от Android, будут работать не всегда, а вот с внешними дисками, снабжёнными собственными источниками питания, у вас проблем не возникнет.

Эти диски должны быть отформатированы в файловой системе FAT32, так как NTFS не всегда работает идеально. Чтобы быстро подключать и отключать флеш-накопители, загрузите приложение StickMount из магазина Play Store.

Если у вас ещё остались какие-то вопросы, ознакомьтесь с полноценным руководством от Кристиана, посвящённым расширению памяти Android с помощью флеш-накопителей.

Играйте в видеоигры с помощью контроллера

Контроллер Xbox 360 идеально работает с устройствами Android через USB OTG. Вам просто нужно подключить его и запустить игру. Конечно, для этого потребуются игры, поддерживающие управление через контроллер, такие как Asphalt 8: Airborne или Modern Combat 5. Последняя относится к категории платных, но это не помешает вам получить её, не заплатив ни гроша.

Если у вас есть полный доступ к своему устройству на базе Android, то вы сможете подключить и контроллер PlayStation 3.

Один из пользователей Reddit даже переложил подключить старый контроллер от PS2 и превратить свой Android в консоль для ретро-игр!

Работайте в Android с клавиатурой и мышью

Открытость Android позволяет подключить к этой системе почти всё что угодно. Если вы хотите использовать свой планшет как ноутбук, вам обязательно потребуется клавиатура и мышь. К счастью, Android отлично работает с большинством проводных и беспроводных клавиатур и мышей.

Я бы рекомендовал приобрести набор из беспроводной клавиатуры и мыши с единым приёмником, ведь у вас будет только одно USB подключение. Я пока не сталкивался с USB хабами, способными работать через USB OTG. Но убедитесь, что покупаете стандартное оборудование.

Это значит, что вам стоит выбрать стандартный беспроводной набор, совместимый со всеми платформами. Не покупайте вещи, требующие установки дополнительно программного обеспечение, такие как Logitech T400, которому необходима утилита SetPoint.

Как отмечает Эрез, стандартной раскладкой системы является QWERTY. Если вы пользуетесь другими раскладками, вам потребуется специальная утилита под названием External Keyboard Helper Pro (119,99 рублей).

Печатайте напрямую с принтера

Как и клавиатуры, принтеры, оснащённые стандартными USB портами, отлично работают с устройствами на базе Android. Так что вам не обязательно передавать файлы на компьютер или создавать беспроводное подключение, чтобы приступать к печати.

Как ни странно, режим «Устройства хранения» для меня не сработал, но у вас всё может быть по-другому. Если вы хотите печатать фотографии и документы, переключите своё USB подключение в режим PTP.

Управляйте своей DSLR камерой

Фотографам эта возможность очень понравится. Устройство под управлением Android можно подключить к DSLR камере и превратить в гигантский экран способный делать снимки, а также, снабжённый средствами для настройки параметров, вроде скорости, управления тряской, фокусировки и так далее. Это одно из самых творческих применений планшета на Android.

Вам потребуется приложение DSLR Controller и, в идеале, камера от Canon. Утилита работает и с некоторыми камерами Nikon и Sony, но официально они не поддерживаются. Вдобавок, утилита стоит целых 243 рубля, так что прочитайте инструкции на официальном сайте, прежде чем её приобретать.

А ваш телефон поддерживает USB OTG?

Имеется ли у вас телефон с поддержкой USB OTG? Расскажите нам о модели своего устройства и о том, каким образом вы воспользовались возможностями USB OTG!

Как подключить флешку к планшету (смартфону) на Andro > Автор: Alexandr , 13.03.2018 Рубрики: Android (смартфоны, планшеты), Флешки, SD-карты

Здравствуйте.

Меня всегда удивляло, почему на планшетах нет полноценного USB порта? Ясно, что на “маленький” телефон его не засунуть, но на планшет-то?

Собственно, думаю и у вас не раз бывали такие ситуации, когда была необходимость подключить флешку к планшету или смартфону, чтобы быстро скопировать (прочитать) данные. Но так просто это не сделаешь и приходится прибегать к помощи различных “переходников” и адаптеров (а значит, будут и “темные” и не ясные моменты, лишние проблемы с совместимостью, ошибками и пр.) . Об этом и будет сегодняшняя статья.

Вообще, хочу сразу сказать, что подключить USB флешку можно не к каждому планшету (телефону): он не должен быть очень уж старым, с версией ОС Andro >USB OTG ), а значит не увидят вашу флешку.

Подключение флешки по USB OTG

На подавляющем числе планшетов и телефонов имеется универсальный MicroUSB порт. К нему можно подключить и зарядник, и флешку, и прочие устройства.

Для подключения флешки — понадобится специальный переходник с MicroUSB на обычный USB порт. Такие переходники называют USB OTG адаптерами . Сейчас в продаже можно найти самые различные варианты: с гибким эластичным проводом, просто как небольшой переходник (который можно легко потерять ) и пр. варианты.

Варианты USB OTG адаптеров

Кстати, очень дешевые OTG адаптеры можно найти в различных китайских интернет-магазинах. Если поискать, то подобные товары можно найти за 30-50 руб.! О самых дешевых китайских магазинах я рассказывал в этой статье: https://ocomp.info/kitayskie-internet-magazinyi.html

Собственно, взяв такой адаптер, подключаете к нему флешку и вставляете в MicroUSB порт планшета (или телефона). Пример ниже.

Обратите внимание, что светодиод на флешке должен начать моргать (т.е. значит, что на нее пошло питание – хороший сигнал ).

Флешка подключена к планшету через USB OTG адаптер

Далее необходимо открыть обычный проводник (в большинстве случаев его хватает с лихвой для копирования/чтения данных с флешки).

Собственно, в разделе “Файлы” в проводнике на Android видны два “каталога”:

  1. память телефона (здесь лежат все ваши фотографии, мелодии звонка и пр.);
  2. внешний USB-накопитель — это и есть наша флешка.

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

Кстати, сейчас в продаже стали появляться универсальные флешки с двумя портами: классическим USB и MicroUSB. Имя такую флешку, вам не нужны никакие переходники! Ее можно подключать как к обычному ПК/ноутбуку, так и к планшету. Удобное средство для передачи данных с одного устройства на другое!

Сейчас в продаже есть флешки, которые можно напрямую подсоединять к ПК или планшету

Кстати, в качестве теста подключил такую флешку к телефону: проводник на Android без проблем видит данный накопитель и позволяет с ним полноценно работать.

Возможные проблемы при подключении флешки через OTG адаптер

1) В проводнике ничего нет, никак не получается найти флешку.

Да, видимо зависит от версии Android – если более старая, то проводник не всегда показывает флешку, даже если она видима планшетом.

Но проводнику есть альтернатива, речь о приложении ES Проводник (ссылка на 4PDA). Установив это приложение, вы должны увидеть USB Storage в разделе “Локальное хранилище” (это и есть флешка). В принципе, работа с ES Проводником ничем не отличается от работы с классическим (разве только возможностей побольше).

ES Проводник – USB Storage – это подключенная флешка

2) Ни в проводнике, ни в ES проводнике флешку невидно, но светодиод на ней моргает. Планшет предлагает отформатировать флешку.

Такое часто бывает, если ваша флешка отформатирована в файловую систему NTFS. Многие планшеты/телефоны воспринимают только FAT 32, и поэтому не могут прочитать флешку, и предлагают в лучшем случае отформатировать ее.

Здесь можно поступить так:

  1. использовать программу Paragon NTFS – она позволит монтировать накопители, отформатированные в NTFS и HFS+ (также очень пригодиться пользователям Apple);
  2. просто отформатировать флешку в FAT 32.

Кстати, подобное также иногда происходит с USB 3.0 флешками (поэтому, если у вас есть USB 2.0 флешка – попробуйте подключить ее).

3) Если вы подключили внешний жесткий диск.

Вполне возможно, что питания планшета просто недостаточно, чтобы обеспечить работу внешнего диска. Также такое может быть и с некоторыми флешками (кстати, могут быть проблемы со слишком объемными накопителями – планшет их просто может не распознать).

Если вы хотите подключить внешний жесткий диск к планшету – попробуйте использовать специальный USB адаптер (разветвитель) с блоком питания (пример представлен на фото ниже).

Рейтинг
( Пока оценок нет )
Загрузка ...
×
×
Adblock
detector