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

Всем привет, мы снова встретились, я ваш друг Цюаньчжаньцзюнь.


Оглавление


противсотовый телефонОбщайтесь с внешними устройствами,Можно использовать только USB и аудиоинтерфейсы.,ипотому чтоiOSсотовый телефон не поддерживает функцию OTG. Поэтому данная статья в основном посвящена Android Сотовый. Телефон представлен для связи с периферийными устройствами через интерфейс USB. Информацию об аудиоинтерфейсе см. в документе http://blog.csdn.net/howiexue/article/details/79145048. 。


0 фона

– Благодаря быстрому развитию технологий мобильного Интернета на рынке доминируют два основных интеллектуальных мобильных устройства: iOS и Android. Помимо основных функций звонков и развлечений, эти мобильные устройства стали важными узлами информационного терминального оборудования в новую эпоху. – Универсальная последовательная шина (USB) в настоящее время стала наиболее стандартным интерфейсом, используемым для обеспечения надежного и недорогого цифрового соединения систем. Теперь она используется за пределами компьютеров и широко используется в промышленности, медицине, бытовой электронике и связи. сети и т. д. – Интерфейс RS232 уже давно широко используется в различных областях применения. Благодаря большому количеству мобильных телефонов и планшетов Android на рынке также возникла потребность в приложениях для подключения периферийных устройств через интерфейс USB к RS232 в системе Android. стать сильнее.

Примеры связи между USB-интерфейсами мобильного телефона и периферийными устройствами, представленными в настоящее время на рынке:

Рисунок 1. USB-накопитель мобильного телефона.

Рис. 2 USB-камера мобильного телефона


1. Характеристики связи USB-интерфейса мобильного телефона

1.1 Простота использования

Plug and play, возможность горячей замены и возможность автоматической настройки. Пользователи могут автоматически идентифицировать и настраивать USB-устройства, просто подключая периферийные устройства к своим телефонам.

1.2 Высокая универсальность

В настоящее время все телефоны и планшеты Android оснащены интерфейсами USB, которые являются гибкими в подключении и легко расширяются.

1.3 Быстро

  • USB2.0: теоретическая скорость составляет 480 Мбит/с (около 60 МБ в секунду).
  • USB3.0: теоретическая скорость может достигать 5 Гбит/с (приблизительно 625 МБ в секунду).

1.4 Возможно использование источника питания по шине

Шина USB2.0 обеспечивает максимальное напряжение 5 В и ток 500 м А, а USB3.0 может достигать 1 А. Большинству периферийных устройств USB не требуется отдельная система питания.

Благодаря многочисленным характеристикам USB он заменил большинство традиционных интерфейсов периферийных устройств ПК. Однако в интеллектуальных приборах и счетчиках также широко используется интерфейс RS-232C. Поскольку интеллектуальные системы управления приборами становятся все более сложными, а объем собираемых данных увеличивается, существует острая необходимость найти более быструю, безопасную и удобную форму связи. Характеристики интерфейса USB как раз соответствуют требованиям этого приложения. USB-продукты неизбежно войдут в сферу интеллектуального приборостроения и промышленного управления.


2. Принцип связи USB-интерфейса мобильного телефона.

Протокол связи USB очень сложен, поэтому я не буду здесь вдаваться в подробности, а лишь кратко представлю базовые знания.

2.1 Распространенные USB-интерфейсы мобильных телефонов

Рисунок 3 Общая схема интерфейса USB Как показано выше, включая общий стандарт Тип-A, Тип-B, Micro и другие интерфейсы Среди них Микро Интерфейс USB-это USB. Портативная версия стандарта 2.0 с поддержкой OTG. В настоящее время, за исключением продукции Apple, практически все мобильные устройства на продвинутом рынке используют интерфейсы Micro-USB.

Рисунок 4 Micro Схема USB-интерфейса

Рисунок 5 Каждый USB Сравнение скорости передачи данных и выходного тока версий

2.2 Процесс связи USB

Рисунок 5 Процесс USB-коммуникации Общий USB-хост и устройство следуют принципу связи «главный-подчиненный», и каждая передача данных инициируется хостом. Если хост хочет вывести данные, он сначала отправляет пакет подтверждения, чтобы уведомить устройство. Затем данные отправляются, и после того, как устройство получит данные, оно отправляет пакет подтверждения. Если хост хочет ввести данные, он также сначала отправляет пакет подтверждения для уведомления устройства. Затем устройство отправляет подготовленные данные на хост. Хост отправляет устройству еще один пакет подтверждения.

2.3 Архитектура системы

По физической структуре система USB представляет собой звездообразную структуру. Он включает в себя три типа аппаратных устройств: USB HOST, USB DEVICE и USB HUB. Физическое соединение на шине USB представляет собой иерархическую звездообразную топологию. В центре каждой звездообразной топологии находится концентратор HUB. Между хостом и HUB, между HUB и HUB, а также между HUB. ХАБ и устройство.

Рис. 6. Общая архитектура USB

USB HOSTверноUSBУправление системой、Генерация одного кадра данных каждую миллисекунду、Отправьте запрос конфигурации для настройки USB-устройства.、Управление и восстановление после ошибок на шине. USB HUBДля подключений расширения устройства,ВсеUSB УСТРОЙСТВО подключено к USB на порту HUB. USB DEVICEперениматьUSBв автобусевсепакет,Используйте поле адреса пакета данных, чтобы определить, отправлен ли вам пакет данных: если адрес не совпадает,затем просто отбросьте пакет, если адреса совпадают;,затем отвечает через USB Пакет данных HOST и USB HOST выполняет передачу данных.

С точки зрения логической структуры каждое логическое устройство USB напрямую подключено к порту USB. HOST выполняет передачу данных.Реализуйте рукопожатие с традиционным интерфейсом аппаратными средствами.методдругой,USBИспользование интерфейса“мягкое рукопожатие”метод。

Механизм мягкого подтверждения USB реализуется посредством трех уровней драйверов. Ключевую роль среди них играет драйвер устройства, который устанавливает как минимум один конвейер между хостом и устройством. Существует два типа каналов: потоковые каналы и каналы сообщений. Одним из наиболее важных каналов сообщений является «канал управления по умолчанию». Этот канал существует сразу после включения устройства. Он предоставляет такую ​​​​информацию, как конфигурация и состояние устройства. Связь между хостом и устройством осуществляется через каналы сообщений.

2.4 Уровень программного обеспечения

Рисунок 7 Структура программного обеспечения USB

Основная функция драйвера стека протоколов USB — подключение устройства к соответствующему драйверу устройства. Поскольку USB поддерживает множество устройств,Каждому конкретному устройству соответствует свой драйвер устройства. Для конкретного устройства,Какой драйвер использовать для управления,Драйверу стека протоколов необходимо прочитатьдескриптор устройстваСделайте выбор。После выбора драйвера,Драйвер стека протоколов также назначает адреса USB-устройствам.

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


3. USB-интерфейс мобильного телефона и решение для периферийной связи.

3.1 USB(сотовый телефон)<–>USB(периферийные устройства)

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

Рисунок 8 Структурная схема решения USB-USB Учитывая, что основным периферийным модулем управления является микроконтроллер, выбранный микроконтроллер должен иметь возможность управления USB. Связь между ними основана на стандартном протоколе связи USB.

3.1.1 Краткое описание USB-хоста

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

Режим USB-аксессуара означает, что устройство Android можно использовать как USB-клавиатуру, мышь или U-диск, вставленный в хост-компьютер. Эти два режима поддерживаются только на уровне Android API 12 или выше, то есть Android 3.1 и выше. Версия . поддерживает оба режима.

3.2 USB(сотовый телефон)<–>UART(периферийные устройства)

То есть адаптер USB-UART используется между мобильным телефоном и периферийным устройством для реализации последовательной связи между мобильным телефоном и периферийным устройством. Преобразователь USB-UART представляет собой устройство преобразования протоколов (протокол USB-протокол последовательной связи), которое реализует взаимную связь между USB и RS-232/RS-485/RS-422 и другими последовательными устройствами. Двунаправленная передача данных может быть достигнута между коммуникационным хостом (USB) и последовательным устройством RS-232/RS-485/RS-422.

Рисунок 9. Структурная схема решения USB-UART. Для этого решения требуется только периферийный микроконтроллер для программирования последовательного порта, а затем для программирования используется Android USB Host. Программирование последовательного порта обычно знакомо при разработке микроконтроллеров. Здесь мы в основном представляем разработку USB-хоста.

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

3.2.1 Телефон Android осуществляет последовательную связь через интерфейс USB.

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

Эти шаги обычно включают в себя:Обнаружение устройств->Подключайте устройства->Передача данных в обоих направлениях->Выключите устройство。

Принцип вызова основан на архитектуре программного обеспечения Android. Android SDK не реализует библиотеку классов, которая инкапсулирует связь через последовательный порт на уровне Framework, но Android основан на ядре Linux 2.6, поэтому мы можем использовать последовательный порт так же, как и в случае с ядром Linux 2.6. Система Линукс. Поскольку уровень Framework не инкапсулирует библиотеку классов для связи через последовательный порт, нам нужно использовать Android NDK для открытия, чтения и записи последовательного порта, а затем предоставить интерфейс для локального вызова Java.

4. Существующие решения:

4.1 Решение FTDI (без драйверов)

Рис. 10. Общее решение FTDI

4.1.1 Последовательное устройство <–>FT312Xхозяин(Host)<–> Андроид-ведомый

Хост будет питать Android, внешний источник питания не требуется. В этом решении используется протокол Android Open Accessory Mode, открытый Google. Это решение поддерживает мобильные телефоны и планшеты с Android 3.1 и выше. Однако, если система не является родной для Google, она может не поддерживаться, и обычно возникают проблемы. Это какие-то отечественные подражатели.

  1. /com.android.future.usb.accessory.jar
  2. /android.hardware.usb.accessory.xml

Если что-то из вышеперечисленного отсутствует, устройство Android не будет поддерживать последовательный порт Android.

4.1.2 Последовательное устройство <–>FT231Xот(Slave)<–> Android-хост (хост)

С ростом популярности портативных устройств стало очень важно, чтобы планшеты, мобильные телефоны и устройства бытовой электроники были оснащены поддержкой хоста, способного подключаться к USB. В этом решении чип FT311D специально разработан для хоста Android, поддерживает Android 3.1 или более позднюю версию и доступен в 32-контактных корпусах QFN или LQFP.

Устройству не нужно загружать какие-либо драйверы на платформе Android, но для использования этого решения телефон Android должен поддерживать OTG. Функция,и иметьandroid.hardware.usb.host.xml

Кроме того, соответствующие решения должны быть сопоставлены с соответствующим программным обеспечением. Например, для решения 4.1.1 требуется APK-файл Passion AOA HyperTerminal. Для решения 4.1.2 требуется APK-файл Android HyperTerminal. Эти два помощника по отладке последовательного порта на Android — бесплатное программное обеспечение, разработанное Passion Technologies Limited.

4.2 Решение серии PL2303/CH34X:

Основной принцип тот же, что и у FTDI, но чип другой. Мобильное приложение предоставлено производителем PL2303/Ch34x с исходным кодом и SDK: http://www.prolific.com.tw/US/ShowProduct.aspx?p_id=230&pcid=41

Рисунок 11. Общее решение PL2303.

Для чипа PL2303 HXD требуется система Android. Версия ОС Android (планшет или мобильный телефон) должна быть 3.2 или выше. Его преимущества заключаются в следующем:

• Можно использовать без root-прав • Нет необходимости перекомпилировать ядро, решение без драйверов • Использование USB на Android порт питания или используйте USBHub И периферийные источники питания ##4.3 Проект с открытым исходным кодом: usb-serial-for-android Github: https://github.com/mik3y/usb-serial-for-android (LGPL licence) Предоставляет код драйвера оборудования Android для последовательных портов USB Arduino и других устройств на базе Android. Хост и версия Android должны быть выше версии 3.1. 。 Доступно для справки ##4.4 Другие (будут добавлены, но принципы основаны на 3.1 и 3.2)

4.3 Проект с открытым исходным кодом: usb-serial-for-android

Github: https://github.com/mik3y/usb-serial-for-android (LGPL licence) Предоставляет код драйвера оборудования Android для последовательных портов USB Arduino и других устройств на базе Android. Хост и версия Android должны быть выше версии 3.1. 。 Доступно для справки


5. Сравнение и выбор чипов USB-UART для Android-приложений

  • 1、FT311/312чипненужныйАндроидсотовый телефони поддержка планшетовOTG или USB-хостФункция,Он может завершить функцию преобразования USB в RS232.,Хорошая совместимость,Требуется внешний источник питания,Это делает его очень неудобным в некоторых сценариях применения. Но FT311/312 по-прежнему остается USB-ХОСТОМ, который, как известно, в настоящее время полезен.
  • 2、FT231,PL2303ненужный внешний блок питания,но нужно Андроидсотовый поддержка телефонов и планшетов OTG или USB-хости т. д. ограничения。потому чтосотовый Разнообразие систем Android на телефонах и планшетах, не существует определенного стандарта для знания определенного сотового устройства. Поддерживает ли телефон-планшет OTG и USB? ХОСТ, и даже сотовый Если телефон-планшет поддерживает функцию OTG, неродная система Android может по-прежнему не поддерживать функцию USB-RS232. Так что его совместимость немного хуже.
  • 3. Для промышленного применения можно рассмотреть модуль промышленного класса FSTU2232FT. Поэтому для гражданского оборудования после всестороннего рассмотрения лучшим решением будет использование в качестве конверсионных микросхем FT311D и PL2303HXD. Преимущества заключаются в следующем:

• FT311D не требует поддержки OTG и имеет хорошую совместимость. Он требует внешнего источника питания и относительно дорог. • PL2303HXD требует поддержки OTG, не требует внешнего источника питания, имеет проблемы совместимости и дешевле. • Дополнительным преимуществом использования модуля PL2303 является то, что он поддерживает платформы Android и WINDOWS, которые можно использовать на мобильных телефонах, планшетах, а также обычных настольных компьютерах и ноутбуках.


6. Анализ дела (заполняется и проверяется)

  • 1. Драйвер USB для последовательного порта. драйверы/usb/serial/pl2303.c драйверы/usb/serial/pl2303.h Если драйвер загружен успешно, узел устройства /dev/ttyUSB* будет создан при вставке периферийного устройства.
  • 2. Приложение верхнего уровня, то есть чтение и запись последовательных портов, настройки скорости передачи данных и т. д. Загрузка исходного кодаhttp://www.prolific.com.tw/US/ShowProduct.aspx?p_id=230&pcid=41 Принципиальная схема:

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

  • 1. Проблемы поддержки OTG: большая часть нового сотового, вышедшего за последние годы телефон уже поддерживает OTG. Как правило, версии системы Android выше 4.0 также поддерживают его, но сотовый. Слишком много марок и моделей телефонов, одни сотовые бюджетные. Телефоны и домашние телефоны-подражатели могут не поддерживать эту функцию.
  • 2. Различные производители сотовых телефонов могут адаптировать стек протоколов USB, что может накладывать ограничения на разработчиков.
  • 3. Проблемы с питанием USB, совместимостью устройств и другие проблемы.
  • 4. Если используется решение USB-UART, необходимо учитывать такие вопросы, как единство и эффективность преобразовательного чипа, и все они должны быть проверены.
  • 5. Большинство текущих терминальных программ последовательного порта в системе Android предоставляются бесплатно производителями микросхем. Их функции относительно просты и не могут отправлять китайский контент или сохранять коммуникационный контент в файлы.

8. Ссылки

[1] Чжао Чуньтинг, Левая маленькая пятая. Исследование USB-последовательного порта на базе системы Android[J]. промышленный управляющий компьютер, 2014, 27(1):83-84. Справочные ссылки: http://blog.csdn.net/ever_gz/article/details/49669729 https://github.com/mik3y/usb-serial-for-android http://blog.csdn.net/lindonghai/article/details/50717218 http://download.csdn.net/detail/u011130391/6638743 http://gqdy365.iteye.com/blog/2188906 http://blog.csdn.net/tangcheng_ok/article/details/7021470 http://www.jb51.net/article/110827.htm http://www.prolific.com.tw/US/ShowProduct.aspx?p_id=230&pcid=41

Издатель: Лидер стека программистов полного стека, укажите источник для перепечатки: https://javaforall.cn/149880.html Исходная ссылка: https://javaforall.cn

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose