Как работает юсб. Как работает USB

USB (Universal Serial Bus - универсальная последовательная шина) является промышленным стандартом расширения архитектуры PC, ориентированным на интеграцию с телефонией и устройствами бытовой электроники.

Приеимущества шины:

  • USB устройство может быть подсоединено к компьютеру в любой момент времени, даже когда включен;
  • когда компьютер обнаруживает подключенное USB устройство, он автоматически опрашивает его, чтобы узнать его возможности и требования;
  • производит загрузку драйвера, а при отключении устройства драйвер автоматически выгружается;
  • USB устройство не использует джемперов, DIP переключателей, никогда не вызывает конфликтов прерываний, DMA, памяти;
  • расширяющие USB хабы позволяют подключать к одной шине большое количество устройств (до 127 устройств);
  • низкая стоимость USB устройств.

Возникновение USB сделало возможным создание USB Flash Drive (USB-накопитель).

История создания и развития интерфейса USB

Первая версия компьютерного интерфейс USB появилась 15 января 1996 года. Инициаторами проекта был альянс 7 крупных компаний производителей Intel, DEC, IBM, Northen Telecom, Compaq.

Причиной возникновения нового стандарта для передачи информации, послужила желание упростить соединение ПК с периферийными устройствами. Основная цель стандарта, была создать для пользователей возможность пользоваться таким интерфейсом, который бы обладал максимальной простотой, универсальностью, и использовал принцип Plug&Play или горячее соединение.

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

Все эти задачи успешно были решены к концу 1996 года, а к весне 1997 года, стали появляться первые ПК, оборудованные разъёмами USB. Полная поддержка USB устройств была осуществлена только к концу 1998 года, в операционной системе Windows98, и только с этого этапа, началось особенно бурное развитие и выпуск периферийного оборудования, оснащённого этим интерфейсом.

По-настоящему массовое внедрение USB началось с широким распространением корпусов и системных плат форм-фактора ATX примерно в 1997-1998 годах. Не упустила шанс воспользоваться достижениями прогресса и компания Apple, представившая 6 мая 1998 года свой первый iMac, также оснащенный поддержкой USB.

Этот стандарт был рождён, в то время, когда уже существовал аналогичный последовательный интерфейс передачи данных, разработанный Apple Computer и имел название FireWare или IEE1394. USB - интерфейс был создан, как альтернатива IEE1394, и был призван не заменить его, а существовать параллельно уже существующему типу соединений.

Первая версия USB имела некоторые проблемы совместимости и содержала несколько ошибок в реализации. В итоге, в ноябре 1998 года вышла спецификаций USB 1.1.

Спецификация USB 2.0 была представлена в апреле 2000 года. Но до принятия ее в качестве стандарта прошло больше года. После этого началось массовое внедрение второй версии универсальной последовательной шины. Главным ее достоинством было 40-кратное увеличение скорости передачи данных. Но кроме этого были и другие нововведения. Так появились новые типы разъемов Mini-B и Micro-USB, добавилась поддержка технологии USB On-The-Go (позволяет USB-устройствам вести обмен данными между собой без участия USB-хоста), появилась возможность использования напряжения, подаваемого через USB, для зарядки подключенных устройств.

Принцип работы шины USB

USB обеспечивает обмен данными между хост-компьютером и множеством периферийных устройств (ПУ). Согласно спецификации USB, устройства (device) могут являться хабами, функциями или их комбинацией. Хаб (hub) только обеспечивает дополнительные точки подключения устройств к шине. Устройство-функция (function) USB предоставляет системе дополнительные функциональные возможности, например подключение к ISDN, цифровой джойстик, акустические колонки с цифровым интерфейсом и т. п. Комбинированное устройство (compound device), реализующее несколько функций, представляется как хаб с подключенными к нему несколькими устройствами.

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

Шина USB является хост-центрической: единственным ведущим устройством, которое управляет обменом, является хост-компьютер, а все присоединенные к ней периферийные устройства - исключительно ведомые. Физическая топология шины USB - многоярусная звезда. Ее вершиной является хост-контроллер, объединенный с корневым хабом (root hub). Хаб является устройством-разветвителем, кроме того, он может являться источником питания для подключенных к нему устройств. К каждому порту хаба может непосредственно подключаться периферийное устройство или промежуточный хаб; шина допускает до 5 уровней каскадирования хабов (не считая корневого). Каждый промежуточный хаб имеет несколько нисходящих (downstream) портов для подключения периферийных устройств (или нижележащих хабов) и один восходящий (upstream) порт для подключения к корневому хабу или нисходящему порту вышестоящего хаба.

К USB-хосту сходятся данные от подключенных устройств и он же обеспечивает взаимодействие с компьютером. Все устройства подключаются по топологии "звезда". Чтобы увеличить число активных разъемов USB можно воспользоваться USB-хабами. Таким образом получится аналог логической структуры "дерево". "Ветвей" у такого дерева может быть до 127 штук на один хост-контроллер, а уровень вложенности USB-хабов не должен превышать пяти. Кроме того, в одном USB-хосте может быть несколько хост-контроллеров, что пропорционально увеличивает максимальное число подключенных устройств.

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

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

Передача данных происходит через специальные логические каналы. Каждому USB-устройству может быть выделено до 32 каналов (16 на прием и 16 на передачу). Каждый канал подключается к условно называемой "конечной точке". Конечная точка может либо принимать данные, либо передавать их, но не способна делать это одновременно. Группа конечных точек, необходимых для работы какой-либо функции, называется интерфейсом. Исключение составляет "нулевая" конечная точка, предназначающаяся для конфигурации устройства.

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

В отличие от шин расширения (ISA/EISA, PCI, PC Card), где программа взаимодействует с устройствами путем обращений по физическим адресам ячеек памяти, портов ввода-вывода, прерываниям и каналам DMA, взаимодействие приложений с устройствами USB выполняется только через программный интерфейс. Этот интерфейс, обеспечивающий независимость обращений к устройствам, предоставляется системным ПО контроллера USB.

Для подключения периферийных устройств к шине USB используется четырёхпроводный кабель, при этом два провода (витая пара) в дифференциальном включении используются для приёма и передачи данных, а два провода - для питания периферийного устройства. Благодаря встроенным линиям питания, шина USB позволяет подключать периферийные устройства без собственного источника питания (максимальная сила тока, потребляемого устройством по линиям питания шины USB, не должна превышать 500 мА).

Кодирование данных

Для передачи данных по шине используется дифференциальный способ передачи сигналов D+ и D- по двум проводам. Все данные кодируются с помощью метода, называемого NRZI with bit stuffing (NRZI - Non Return to Zero Invert, метод возврата к нулю с инвертированием единиц).

Вместо кодирования логических уровней как уровней напряжения USB определяет логический 0 как изменение напряжения, а логическую 1 как неизменение напряжения. Этот метод представляет собой модификацию обычного потенциального метода кодирования NRZ (Non Return to Zero, невозврат к нулю), когда для представления 1 и 0 используются потенциалы двух уровней, но в методе NRZI потенциал, используемый для кодирования текущего бита, зависит от потенциала, который использовался для кодирования предыдущего бита. Если текущий бит имеет значение 0, то текущий потенциал представляет собой инверсию потенциала предыдущего бита, независимо от его значения. Если же текущий бит имеет значение 1, то текущий потенциал повторяет предыдущий. Очевидно, что если данные содержат нули, то приемнику и передатчику достаточно легко поддерживать синхронизацию - уровень сигнала будет постоянно меняться. А вот если данные содержат длинную последовательность единиц, то уровень сигнала меняться те будет, и возможна рассинхронизация. Следовательно, для надежной передачи данных нужно исключить из кодов слишком длинные последовательности единиц. Это действие называется стаффинг (Bit stuffing): после каждых шести единиц автоматически добавляется 0.

Существует только три возможных байта с шестью последовательными единицами: 00111111, 01111110, 111111100.

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

Режимы работы шины

  • Low Speed поддерживается стандартами версии 1.1 и 2.0. Пиковая скорость передачи данных - 1.5 Мбит/с (187.5 Кбайт/с). Чаще всего применяется для HID-устройств (клавиатур, мышей, джойстиков).
  • Full Speed поддерживается стандартами версии 1.1 и 2.0. Пиковая скорость передачи данных - 12 Мбит/с (1.5 Мбайт/с). До выхода USB 2.0 был наиболее быстрым режимом работы.
  • Hi-Speed поддерживается стандартом версии 2.0 и 3.0. Пиковая скорость передачи данных - 480 Мбит/с (60 Мбайт/с).
  • Super-Speed поддерживается стандартом версии 3.0. Пиковая скорость передачи данных - 4.8 Гбит/с (600 Мбайт/с).

Передача данных

Механизм передачи данных является асинхронным и блочным. Блок передаваемых данных называется USB-фреймом или USB-кадром и передается за фиксированный временной интервал. Оперирование командами и блоками данных реализуется при помощи логической абстракции, называемой каналом. Внешнее устройство также делится на логические абстракции, называемые конечными точками. Таким образом, канал является логической связкой между хост-контроллером и конечной точкой внешнего устройства. Канал можно сравнить с открытым файлом.

Для передачи команд (и данных, входящих в состав команд) используется канал по умолчанию, а для передачи данных открываются либо потоковые каналы, либо каналы сообщений.

Информация по каналу передается в виде пакетов (Packet). Каждый пакет начинается с поля синхронизации SYNC (SYNChronization), за которым следует идентификатор пакета PID (Packet IDentifier).

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

Операция обмена данными между прикладной программой и шиной USВ выполняется путем передачи буферов памяти через следующие уровни: Уровень клиентского ПО в хосте:

  • обычно представляется драйвером устройства USB;
  • обеспечивает взаимодействие пользователя с операционной системой с одной стороны и системным драйвером с другой.

Уровень системного обеспечения USB в хосте (USBD, Universal Serial Bus Driver):

  • управляет нумерацией устройств на шине;
  • управляет распределением пропускной способности шины и мощности питания;
  • обрабатывает запросы пользовательских драйверов.

Хост-контроллер интерфейса шины USB (HCD, Host Controller Driver):

  • преобразует запросы ввода/вывода в структуры данных, по которым хост-контроллер выполняет физические транзакции;
  • работает с регистрами хост-контроллера.

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

  • буфер памяти, называемый клиентским буфером;
  • пакет запроса на в/в (IRP, Input/output Request Packet), указывающий тип необходимой операции.
  • IRP содержит только сведения о запросе (адрес и длина буфера в оперативной памяти). Непосредственно обработкой запроса занимается системный драйвер USB.

Уровень системного драйвера USB необходим для управления ресурсами USB. Он отвечает за выполнение следующих действий:

  • распределение полосы пропускания шины USB;
  • назначение логических адресов устройств каждому физическому USB-устройству;
  • планирование транзакций.

Логически передача данных между конечной точкой и ПО производится с помощью выделения канала и обмена данными по этому каналу.Клиентское ПО посылает IPR-запросы уровню USBD. Драйвер USBD разбивает запросы на транзакции по следующим правилам:

  • выполнение запроса считается законченным, когда успешно завершены все транзакции, его составляющие;
  • все подробности отработки транзакций (такие как ожидание готовности, повтор транзакции при ошибке, неготовность приемника и т. д.) до клиентского ПО не доводятся;
  • ПО может только запустить запрос и ожидать или выполнения запроса или выхода по тайм-ауту;
  • устройство может сигнализировать о серьезных ошибках, что приводит к аварийному завершению запроса, о чем уведомляется источник запроса.

Драйвер контроллера хоста принимает от системного драйвера шины перечень транзакций и выполняет следующие действия:

  • планирует исполнение полученных транзакций, добавляя их к списку транзакций;
  • извлекает из списка очередную транзакцию и передает ее уровню хост-контроллера интерфейса шины USB;
  • отслеживает состояние каждой транзакции вплоть до ее завершения.

Хост-контроллер интерфейса шины USB формирует кадры. Кадры передаются последовательной передачей бит по методу NRZI.

Таким образом:

  • каждый кадр состоит из наиболее приоритетных посылок, состав которых формирует драйвер хоста;
  • каждая передача состоит из одной или нескольких транзакций;
  • каждая транзакция состоит из пакетов;
  • каждый пакет состоит из идентификатора пакета, данных (если они есть) и контрольной суммы.


Типы передачи данных

Спецификация шины определяет четыре различных типа передачи (transfer type) данных для конечных точек.

Управляющие передачи (Control Transfers) - используются хостом для конфигурирования устройства во время подключения, для управления устройством и получения статусной информации в процессе работы. Протокол обеспечивает гарантированную доставку таких посылок. Длина поля данных управляющей посылки не может превышать 64 байт на полной скорости и 8 байт на низкой. Для таких посылок хост гарантированно выделяет 10% полосы пропускания.

Передачи массивов данных (Bulk Data Transfers) - применяются при необходимости обеспечения гарантированной доставки данных от хоста к функции или от функции к хосту, но время доставки не ограничено. Taкая передача занимает всю доступную полосу пропускания шины. Пакеты имеют поле данных размером 8, 16, 32 или 64 байт. Приоритет у таких передач самый низкий, они могут приостанавливаться при большой загрузке шины. Допускаются только на полной скорости передачи. Такие посылки используются, например, принтерами или сканерами.

Передачи по прерываниям (Interrupt Transfers) - используются в том случае, когда требуется передавать одиночные пакеты данных небольшого размера. Каждый пакет требуется передать за ограниченное время. Операции передачи носят спонтанный характер и должны обслуживаться не медленнее, чем того требует устройство. Поле данных может содержать до 64 байт на полной скорости и до 8 байт на низкой. Предел времени обслуживания устанавливается в диапазоне 1-255 мс для полной скорости и 10-255 мс - для низкой. Такие передачи используются в устройствах ввода, таких как мышь и клавиатура.

Изохронные передачи (Isochronous Transfers) - применяются для обмена данными в "реальном времени", когда на каждом временном интервале требуется передавать строго определенное количество данных, но доставка информации не гарантирована (передача данных ведется без повторения при сбоях, допускается потеря пакетов). Такие передачи занимают предварительно согласованную часть пропускной способности шины и имеют заданную задержку доставки. Изохронные передачи обычно используются в мультимедийных устройствах для передачи аудио- и видеоданных, например, цифровая передача голоса. Изохронные передачи разделяются по способу синхронизации конечных точек - источников или получателей данных - с системой. Различают асинхронный, синхронный и адаптивный классы устройств, каждому из которых соответствует свой тип канала USB.

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

  • наивысший приоритет имеют изохронные передачи;
  • после отработки всех изохронных передач система переходит к обслуживанию передач прерываний;
  • в последнюю очередь обслуживаются запросы на передачу массивов данных;
  • по истечении 90% указанного интервала хост автоматически переходит к обслуживанию запросов на передачу управляющих команд независимо от того, успел ли он полностью обслужить другие три списка или нет.

Выполнение этих правил гарантирует, что управляющим передачам всегда будет выделено не менее 10% пропускной способности шины USB. Если передача всех управляющих пакетов будет завершена до истечения выделенной для них доли интервала планирования, то оставшееся время будет использовано хостом для передач массивов данных.

Версии спецификации

Разработка спецификаций на шину USB производится в рамках международной некоммерческой организации USB Implementers Forum (USB-IF), объединяющей разработчиков и производителей оборудования с шиной USB.

С середины 1996 года выпускаются PC со встроенным контроллером USB, реализуемым чипсетом системной платы.

Первая версия спецификации USB 1.0 поддерживает два режима скорости передачи данных между устройством и компьютером:

  • Low Speed (1.5 Mbits/sec) , для таких устройств как мыши, клавиатуры и джойстики;
  • Full Speed (12 Mbits/ sec) , для модемов и сканеров.

Осенью 1998 года вышла версия 1.1 - в ней были устранены обнаруженные проблемы первой редакции.

Основные технические характеристики USB 1.1:

  • Достаточно высокая максимальная скорость обмена - до 12 Мбит/с.
  • Максимальная длина кабеля для высокой скорости обмена - 4,5 м.
  • Максимальное количество подключенных устройств (включая размножители) - до 127.
  • Возможно подключение устройств с различными скоростями обмена.
  • Не требуется использование дополнительных устройств и терминаторов.
  • Подается напряжение питания для периферийных устройств - 5 В.
  • Максимальный ток потребления на одно устройство - 500 mA.

Весной 2000 года опубликована спецификация USB 2.0, в которой предусмотрено 40-кратное повышение пропускной способности шины(до 480 Мбит/с в высокоскоростном режиме). Однако устройства USB 2.0 вышли на массовый рынок в 2002 года, когда новый интерфейс, наконец, смог утвердиться.

Вторая версия спецификации USB 2.0 позволяет использовать еще один режим High Speed (480 Mbit/sec) для таких устройств, как жесткие диски, CD-ROM, цифровые камеры. Пропускная способность 480 Мбит/с достаточная и для внешних накопителей, MP3-плееров, смартфонов и цифровых камер, которым требовалась передавать большое количество данных. Также спецификация USB 2.0 полностью поддерживает устройства, разработанные для первой версии. Контроллеры и хабы автоматически определяют версию спецификации, поддерживаемую устройством. Шина позволяет соединять до 127 устройств, удаленныех от компьютера на расстоянии до 25 м (с использованием промежуточных хабов).

После своего широкого внедрения USB 2.0 удалось полностью заменить последовательный и параллельный интерфейсы.

В настоящее время широко используются устройства, выполненные в соответствии со спецификацией USB 2.0.

USB 3.0

USB 3.0 поддерживает максимальную скорость передачи 5 Гбит/с.

Коннектор USB 3.0 типа А

Основной целью интерфейса USB 3.0 является повышение доступной пропускной способности, однако новый стандарт эффективно оптимизирует энергопотребление. У USB 3.0 есть четыре состояния подключения, названные U0-U3. Состояние подключения U0 соответствует активной передаче данных, а U3 погружает устройство в "сон". Если подключение бездействует, то в состоянии U1 будут отключены возможности приёма и передачи данных. Состояние U2 идёт ещё на шаг дальше, отключая внутренние тактовые импульсы.

Коннектор USB 3.0 типа В

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

Кроме разных состояний энергопотребления стандарт USB 3.0 отличается от USB 2.0 и более высоким поддерживаемым током. Если версия USB 2.0 предусматривала порог тока 500 мА, то в случае нового стандарта ограничение было сдвинуто до планки 900 мА. Ток при инициации соединения был увеличен с уровня 100 мА у USB 2.0 до 150 мА у USB 3.0. Оба параметра весьма важны для портативных жёстких дисков, которые обычно требуют чуть большие токи. Раньше проблему удавалось решить с помощью дополнительной вилки USB, получая питание от двух портов, но используя только один для передачи данных.

Кабели и разъемы USB

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

Существует пять видов USB-разъемов :

Слева направо: micro USB, mini USB, B-type, A-type разъем, A-type коннектор

  • micro USB - используется в самых миниатюрных устройствах вроде плееров и мобильных телефонов;
  • mini USB - также часто обнаруживается на плеерах, мобильных телефонах, а заодно и на цифровых фотоаппаратах, КПК и тому подобных устройствах;
  • B-type - полноразмерный разъем, устанавливаемый в принтерах, сканерах и других устройствах, где размер не имеет очень принципиального значения;
  • A-type (приемник) - разъем, устанавливаемый в компьютерах (либо на удлинителях USB), куда подключается коннектор типа A-type;
  • A-type (вилка) - коннектор, подключаемый непосредственно к компьютеру в соответствующий разъем.

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

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

Кабель для поддержки полной скорости шины (full-speed) выполняется как витая пара, защищается экраном и может также использоваться для работы в режиме минимальной скорости (low-speed). Кабель для работы только на минимальной скорости (например, для подключения мыши) может быть любым и неэкранированным.

Литература

  1. Косцов А.,Косцов В.Железо ПК. Настольная книга пользователя. - М.: Мартин, 2006. - 480 с.

Шина USB (Universal Serial Bus - универсальная последовательная шина) появилась по компьютерным меркам довольно давно - версия первого утвержденного варианта стандарта появилась 15 января 1996 года. Разработка стандарта была инициировна весьма авторитетными фирмами - Intel, DEC, IBM, NEC, Northen Telecom и Compaq.

Основная цель стандарта, поставленная перед его разработчиками - создать реальную возможность пользователям работать в режиме Plug&Play с периферийными устройствами. Это означает, что должно быть предусмотрено подключение устройства к работающему компьютеру, автоматическое распознавание его немедленно после подключения и последующей установки соответствующих драйверов. Кроме этого, желательно питание маломощных устройств подавать с самой шины. Скорость шины должна быть достаточной для подавляющего большинства периферийных устройств. Попутно решается историческая проблема нехватки ресурсов на внутренних шинах IBM PC совместимого компьютера - контроллер USB занимает только одно прерывание независимо от количества подключенных к шине устройств.

Возможности USB следуют из ее технических характеристик:

    Высокая скорость обмена (full-speed signaling bit rate) - 12 Mb/s

    Максимальная длина кабеля для высокой скорости обмена - 5 m

    Низкая скорость обмена (low-speed signaling bit rate) - 1.5 Mb/s

    Максимальная длина кабеля для низкой скорости обмена - 3 m

    Максимальное количество подключенных устройств (включая размножители) - 127

    Возможно подключение устройств с различными скоростями обмена

    Отсутствие необходимости в установке пользователем дополнительных элементов, таких как терминаторы для SCSI

    Напряжение питания для периферийных устройств - 5 V

    Максимальный ток потребления на одно устройство - 500 mA

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

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

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

Предназначены только для подключения к периферийному устройству

Номер контакта

Назначение

Цвет провода

Здесь GND - цепь "корпуса" для питания периферийных устройств, VBus - +5V также для цепей питания. Шина D+ предназначена для передачи данных по шине, а шина D- для приема данных.

Кабель для поддержки полной скорости шины (full-speed) выполняется как витая пара, защищается экраном и может также использоваться для работы в режиме минимальной скорости (low-speed). Кабель для работы только на минимальной скорости (например, для подключения мыши) может быть любым и неэкранированным.

    Основные элементы USB . Физическая и логическая архитектура шины.

Шина USB (Universal Serial Bus, универсальная последовательная шина) появилась в начале 1996 года как попытка решения проблемы множественности интерфейсов. К тому времени персональные компьютеры (ПК) были оснащены большим количеством разнообразных внешних интерфейсов, полезных и необходимых, но обладающих одним недостатком: все они требовали своего специального разъема и, чаще всего, выделенного аппаратного прерывания (IRQ, Interrupt ReQuest).

Общая архитектура USB

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

Физическая и логическая архитектура USB

Физическая архитектура USB определяется следующими правилами:

o устройства подключаются к хосту;

o физическое соединение устройств между собой осуществляется по топологии многоярусной звезды, вершиной которой является корневой хаб;

o центром каждой звезды является хаб;

o каждый кабельный сегмент соединяет между собой две точки: хост с хабом или функцией, хаб с функцией илидругим хабом;

o к каждому порту хаба может подключаться периферийное USB-устройство или другой хаб, при этом допускаются до 5 уровней каскадирования хабов, не считая корневого.

Детали физической архитектуры скрыты от прикладных программ в системном программном обеспечении (ПО), поэтому логическая архитектура выглядит как обычная звезда, центром которой является прикладное ПО, а вершинами – набор конечных точек/ Прикладная программа ведет обмен информацией с каждой конечной точкой.

Составляющие USB

Шина USB состоит из следующих элементов:

    хост-контроллер (host controller) – это главный контроллер, который входит в состав системного блока компьютера и управляет работой всех устройств на шине USB. Для краткости мы будем писать просто хост. На шине USB допускается наличие только одного хоста. Системный блок персонального компьютера содержит один или несколько хостов, каждый из которых управляет отдельной шиной USB;

    устройство (device) может представлять собой хаб, функцию или их комбинацию (compound device);

    порт (port) – точка подключения;

    хаб (hub, другое название - концентратор ) – устройство, которое обеспечивает дополнительные порты на шине USB. Другими словами, хаб преобразует один порт (восходящий порт, upstream port) во множество портов (нисходящие порты, downstream ports). Архитектура допускает соединение нескольких хабов (не более 5). Хаб распознает подключение и отключение устройств к портам и может управлять подачей питания на порты. Каждый из портов может быть разрешен или запрещен и сконфигурирован на полную или ограниченную скорость обмена. Хаб обеспечивает изоляцию сигментов с низкой скоростью от высокоскоростных. Хаб может ограничивать ток, потребляемый каждым портом;

    корневой хаб (root hub) – это хаб, входящий в состав хоста;

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

    логическое USB-устройство (logical device) представляет собой набор конечных точек.

    Основные свойства USB -устройств и хабов.

Свойства USB-устройств

Спецификация USB достаточно жестко определяет набор свойств, которые должно поддерживать любое USB-устройство:

o адресация – устройство должно отзываться на назначенный ему уникальный адрес и только на него;

o конфигурирование – после включения или сброса устройство должно предоставлять нулевой адрес для возможности конфигурирования его портов;

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

o управление энергопотреблением – любое устройство при подключении не должно потреблять от шины ток, превышающий 100 мА. При конфигурировании устройство заявляет свои потребности тока, но не более 500 мА. Если хаб не может обеспечить устройству заявленный ток, устройство не будет использоваться;

o приостановка – USB-устройство должно поддерживать приостановку (suspended mode), при которой его потребляемый ток не превышает 500 мкА. USB-устройство должно автоматически приостанавливаться при прекращении активности шины;

o удаленное пробуждение – возможность удаленного пробуждения (remote wakeup) позволяет приостановленному USB-устройству подать сигнал хосту, который тоже может находиться в приостановленном состоянии. Возможность удаленного пробуждения описывается в конфигурации USB-устройства. При конфигурировании эта функция может быть запрещена.

    Основные принципы передачи данных по интерфейсу USB .

Принципы передачи данных

Механизм передачи данных является асинхронным и блочным. Блок передаваемых данных называется USB-фреймом или USB-кадром и передается за фиксированный временной интервал. Оперирование командами и блоками данных реализуется при помощи логической абстракции, называемой каналом. Внешнее устройство также делится на логические абстракции, называемые конечными точками. Таким образом, канал является логической связкой между хостом и конечной точкой внешнего устройства. Канал можно сравнить с открытым файлом.

Для передачи команд (и данных, входящих в состав команд) используется канал по умолчанию, а для передачи данных открываются либо потоковые каналы, либо каналы сообщений.

Все операции по передачи данных по шине USB инициируются хостом. Периферийные USB-устройства сами начать обмен данными не могут. Они могут только реагировать на команды хоста.

Механизм прерываний

Для шины USB настоящего механизма прерываний (как, например, для последовательного порта) не существует. Вместо этого хост опрашивает подключенные устройства на предмет наличия данных о прерывании. Опрос происходит в фиксированные интервалы времени, обычно каждые 1 – 32 мс. Устройству разрешается посылать до 64 байт данных.

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

Режимы передачи данных

Пропускная способность шины USB, соответствующей спецификации 1.1, составляет 12Мбит/с (т.е. 1,5 Мбит/с). Спецификация 2.0 определяет шину с пропускной способностью 400 Мбайт/с. Полоса пропускания делится между всеми устройствами, подключенными к шине.

Шина USB имеет три режима передачи данных:

o низкоскоростной (LS, Low-speed);

o полноскоростной (LF, Full-speed);

o высокоскоростной (HS, High-speed, только для USB 2.0).

Логические уровни обмена данными

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

Таким образом, операция обмена данными между прикладной программой и шиной USB выполняется путем передачи буферов памяти через следующие уровни:

o уровень клиентского ПО в хосте:

· обычно представляется драйвером USB-устройства;

· обеспечивает взаимодействие пользователя с операционной системой с одной стороны и системным драйвером с другой;

o уровень системного драйвера USB в хосте(USB, Universal Serial Bus Driver):

· управляет нумерацией устройств на шине;

· управляет распределением пропускной способности шины и мощности питания;

· обрабатывает запросы пользовательских драйверов;

o уровень хост-контроллера интерфейса шины USB (HCD, Host Controller Driver):

· преобразует запросы ввода/вывода в структуры данных, по которым выполняются физические транзакции;

· работает с регистрами хоста.

В обязанности хоста входит:

Слежение за подключением и отключением устройств

    Организация управляющих потоков между USB-устройством и хостом.

    Организация потоков данных между USB-устройством и хостом

    Контроль состояния устроств и ведение статистики активности

    Снабжение подключенных устройств электропитанием Аппаратной частью является хост контроллер - посредник между хостом и устройствами на шине

    Физический интерфейс USB

Стандарт USB определяет электрические и механические спецификации шины. Информационные сигналы и питающее напряжение 5 В передаются по четырехпроводному кабелю. Используется дифференциальный способ передачи сигналов D+ и D- по двум проводам. Уровни сигналов передатчиков в статическом режиме должны быть ниже 0,3 В (низкий уровень) или выше 2,8 В (высокий уровень). Приемники выдерживают входное напряжение в пределах - 0,5...+3,8 В. Передатчики должны уметь переходить в высокоимпедансное состояние для двунаправленной полудуплексной передачи по одной паре проводов.

Передача по двум проводам в USB не ограничивается дифференциальными сигналами. Кроме дифференциального приемника каждое устройство имеет линейные приемники сигналов D+ и D-, а передатчики этих линий управляются индивидуально. Это позволяет различать более двух состояний линии, используемых для организации аппаратного интерфейса. Состояния Diff0 и Diff1 определяются по разности потенциалов на линиях D+ и D- более 200 мВ при условии, что на одной из них потенциал выше порога срабатывания VSE. Состояние, при котором на обоих входах D+ и D- присутствует низкий уровень, называется линейным нулем (SEO - Single-Ended Zero). Интерфейс определяет следующие состояния:

* Data J State и Data К State - состояния передаваемого бита (или просто J и К), определяются через состояния Diff0 и Diff1.

* Idle State - пауза на шине.

* Resume State - сигнал "пробуждения" для вывода устройства из "спящего" режима.

* Start of Packet (SOP) - начало пакета (переход из Idle State в К).

* End of Packet (EOP) - конец пакета. * Disconnect - устройство отключено от порта. * Connect - устройство подключено к порту. * Reset - сброс устройства.

Состояния определяются сочетаниями дифференциальных и линейных сигналов; для полной и низкой скоростей состояния DiffO и Diff1 имеют противоположное назначение. В декодировании состояний Disconnect, Connect и Reset учитывается время нахождения линий (более 2,5 мс) в определенных состояниях.

Шина имеет два режима передачи. Полная скорость передачи сигналов USB составляет 12 Мбит/с, низкая - 1,5 Мбит/с. Для полной скорости используется экранированная витая пара с импедансом 90 Ом и длиной сегмента до 5 м, для низкой - невитой неэкранированньгй кабель до 3 м. Низкоскоростные кабели и устройства дешевле высокоскоростных. Одна и та же система может одновременно использовать оба режима; переключение для устройств осуществляется прозрачно. Низкая скорость предназначена для работы с небольшим количеством ПУ, не требующих высокой скорости. Скорость, используемая устройством, подключенным к конкретному порту, определяется хабом по уровням сигналов на линиях D+ и D-, смещаемых нагрузочными резисторами R2 приемопередатчиков

    Кодирование данных при передаче по шине USB .

    Питание USB -устройств. Управление энергопотреблением.

    Внутренняя организация шины USB . Логические уровни обмена данными.

    Типы передач данных, используемые в шине USB . Конечные точки и каналы USB .

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

* требуемой частотой доступа к шине и допустимыми задержками обслуживания;

* требуемой полосой пропускания канала;

* номером точки;

* требованиями к обработке ошибок;

* максимальными размерами передаваемых и принимаемых пакетов;

* типом обмена;

* направлением обмена (для сплошного и изохронного обменов).

Каждое устройство обязательно имеет конечную точку с номером 0, используемую для инициализации, общего управления и опроса его состояния. Эта точка всегда сконфигурирована при включении питания и подключении устройства к шине. Оно поддерживает передачи типа "управление" (см. далее).

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

Каналом (Pipe) в USB называется модель передачи данных между хост-контроллером и конечной точкой (Endpoint) устройства. Имеются два типа каналов: потоки (Stream) и сообщения (Message). Поток доставляет данные от одного конца канала к другому, он всегда однонаправленный. Один и тот же номер конечной точки может использоваться для двух поточных каналов - ввода и вывода. Поток может реализовывать следующие типы обмена: сплошной, изохронный и прерывания. Доставка всегда идет в порядке "первым вошел - первым вышел" (FIFO); с точки зрения USB, данные потока неструктурированы. Сообщения имеют формат, определенный спецификацией USB. Хост посылает запрос к конечной точке, после которого передается (принимается) пакет сообщения, за которым следует пакет с информацией состояния конечной точки. Последующее сообщение нормально не может быть послано до обработки предыдущего, но при отработке ошибок возможен сброс необслуженных сообщений. Двухсторонний обмен сообщениями адресуется к одной и той же конечной точке. Для доставки сообщений используется только обмен типа "управление".

С каналами связаны характеристики, соответствующие конечной точке (полоса пропускания, тип сервиса, размер буфера и т. п.). Каналы организуются при конфигурировании устройств USB. Для каждого включенного устройства существует канал сообщений (Control Pipe 0), по которому передается информация конфигурирования, управления и состояния.

5. Типы передачи данных

USB поддерживает как однонаправленные, так и двунаправленные режимы связи. Передача данных производится между ПО хоста и конечной точкой устройства. Устройство может иметь несколько конечных точек, связь с каждой из них (канал) устанавливается независимо.

Архитектура USB допускает четыре базовых типа передачи данных:

* Управляющие посылки (Control Transfers), используемые для конфигурирования во время подключения и в процессе работы для управления устройствами. Протокол обеспечивает гарантированную доставку данных. Длина поля данных управляющей посылки не превышает 64 байт на полной скорости и 8 байт на низкой.

* Сплошные передачи (Bulk Data Transfers) сравнительно больших пакетов без жестких требований ко времени доставки. Передачи занимают всю свободную полосу пропускания шины. Пакеты имеют поле данных размером 8, 16, 32 или 64 байт. Приоритет этих передач самый низкий, они могут приостанавливаться при большой загрузке шины. Допускаются только на полной скорости передачи.

* Прерывания (Interrupt) - короткие (до 64 байт на полной скорости, до 8 байт на низкой) передачи типа вводимых символов или координат. Прерывания имеют спонтанный характер и должны обслуживаться не медленнее, чем того требует устройство. Предел времени обслуживания устанавливается в диапазоне 1-255 мс для полной скорости и 10-255 мс - для низкой.

* Изохронные передачи (Isochronous Transfers) - непрерывные передачи в реальном времени, занимающие предварительно согласованную часть пропускной способности шины и имеющие заданную задержку доставки. В случае обнаружения ошибки изохронные данные передаются без повтора - недействительные пакеты игнорируются. Пример - цифровая передача голоса. Пропускная способность определяется требованиями к качеству передачи, а задержка доставки может быть критичной, например, при реализации телеконференций.

Полоса пропускания шины делится между всеми установленными каналами. Выделенная полоса закрепляется за каналом, и если установление нового канала требует такой полосы, которая не вписывается в уже существующее распределение, запрос на выделение канала отвергается.

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

Изохронные передачи классифицируются по способу синхронизации конечных точек - источников или получателей данных - с системой: различают асинхронный, синхронный и адаптивный классы устройств, каждому из которых соответствует свой тип канала USB.

    Периферийные устройства USB . Использование микросхем фирмы FTDI в качестве преобразователей в последовательный и параллельный интерфейсы.

D0…D7– двунаправленная шина данных в прямом коде (1 – высокий уровень, 0 – низкий уровень) с тремя состояниями;

RD#– вход строба читаемых данных. Когда наRD# низкий уровень данные из приёмного буфера типаFIFOдлиной 128 байт микросхемыFT8U245AMпоявляются на шинеD0…D7, если хотя бы один байт присутствует в буфере. По переходу от низкого уровня к высокому уровню данные снимаются с шины данных;

WR– вход строба записываемых данных. Данные с шиныD0…D7 попадают в буфер передачи типаFIFOдлиной 384 байта микросхемыFT8U245AMпо переходу от высокого уровня к низкому уровню на выводеWRпри условии, что этот буфер не заполнен полностью;

TXE#– выход наличия места в буфере передачи микросхемыFT8U245AM. Когда на этом выводе низкий уровень, данные могут быть переданы в буфер передачи по шинеD0…D7;

RXF# – выход наличия данных в приёмном буфере микросхемыFT8U245AM. Когда на этом выводе низкий уровень, данные могут быть прочитаны по шинеD0…D7;

Рис. 1. Временная диаграмма цикла чтения.

Рис.2. Временная диаграмма цикла записи.

    Интерфейс I 2 C . Последовательные шины на базе I 2 C . Основные технические характеристики шины I 2 C .

I 2 C – двухпроводной интерфейс, разработанный корпорацией Philips. В первоначальном техническом требовании к интерфейсу максимальная скорость передачи данных составляла 100 Кбит/с. Однако со временем появились стандарты на более скоростные режимы работы I 2 C. К одной шине I 2 C могут быть подключены устройства с различными скоростями доступа, так как скорость передачи данных определяется тактовым сигналом.

Протокол передачи данных разработан таким образом, чтобы гарантировать надежный прием передаваемых данных.

При передаче данных одно устройство является «Master», которое инициирует передачу данных и формирует сигналы синхронизации. Другое устройство «Slave» - начинает передачу только по команде, пришедшей от «Master».В микроконтроллерах PIC16CXXX аппаратно реализован режим «Slave» устройства в модуле SSP. Режим «Master» реализуется программно.Основные термины, используемые при описании работы с шиной I 2 C:

Передатчик – устройство, передающее данные по шине

Приемник – устройство, получающее данные с шины

«Master» - устройство, которое инициирует передачу и формирует тактовый сигнал

«Slave» - устройство, к которому обращается «Master»

Multi-«Master» - режим работы шины I 2 C с более чем одним «Master»

Арбитраж – процедура, гарантирующая, что только один «Master» управляет шиной

Синхронизация – процедура синхронизации тактового сигнала от двух или более устройств

Выходные каскады формирователей сигналов синхронизации (SCL) и данных (SDA) должны быть выполнены по схемам с открытым коллектором (стоком) для объединения нескольких выходов и через внешний резистор подключены к плюсу питания для того, чтобы на шине был уровень «1», когда ни одно устройство не формирует сигнал «0». Максимальная емкостная нагрузка ограничена емкостью 400 пФ.

Встроенный в микросхемы аппаратный алгоритм помехоподавления обеспечивает целостность данных в условиях помех значительной величины. Все I2C-совместимые устройства имеют интерфейс, который позволяет им связываться друг с другом по шине даже в том случае, если их напряжение питания существенно отличается. На следующем рисунке представлен принцип подключения нескольких ИМС с различными напряжениями питания к одной шине обмена.

Каждое устройство распознается по уникальному адресу и может работать как передатчик или приёмник, в зависимости от назначения устройства.

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

Исходя из спецификации работы шины, в каждый отдельный момент в шине может быть только один ведущий, а именно то устройство, которое обеспечивает формирование сигнала SCL шины. Ведущий может выступать как в роли ведущего-передатчика, так и ведущего-приемника. Тем не менее - шина позволяет иметь несколько ведущих, накладывая определенные особенности их поведения в формировании сигналов управления и контроля состояния шины. Возможность подключения более одного ведущего к шине означает, что более чем один ведущий может попытаться начать пересылку в один и тот же момент времени. Для устранения "столкновений", который может возникнуть в данном случае, разработана процедура арбитража - поведения ведущего при обнаружении "захвата" шины другим ведущим.

Процедура синхронизации двух устройств Эта процедура основана на том, что все I2C-устройства подключаются к шине по правилу монтажного И. В исходном состоянии оба сигнала SDA и SCL находятся в высоком состоянии.

    Протокол передачи данных по шине I 2 C . Назначение сигналов шины I 2 C . Временные диаграммы процедуры передачи данных.

Принцип работы

Физически шина I2C представляет собой двухпроводный интерфейс с двунаправленными линиями последова-

тельной синхронизации (SCL) и линии передачи данных (SDA). Шина I2C поддерживает несколько ведомых и ведущих устройств, но одновременно может быть активно только одно ведущееустройство. Любое устройство I2Cможно подключить к шине и осуществлять обмен данными с ведущим устройством. Все устройства распознаются по уникальному адресу и могут использоваться в качестве передатчикаили приемника, в зависимости от ихфункций. Изначально в шине I2C использовались 7-разрядные адреса,сейчас – 10-разрядные. Поддержива-

ется три скорости передачи битов: 100кбит/с (стандартный режим), 400 кбит/с(быстрый режим) и 3,4 Мбит/с (быстро-действующий режим). Максимальноеколичество подключаемых устройствопределяется максимальной емкостью400 пФ или примерно 20-30 устройств.Стандарт I2C определяет следующийформат, представленный на рис. 4:

– Start (Старт) – указывает, что управление шиной передано устройству ибудет передано сообщение

– Address (Адрес) – 7- или 10разрядный номер, соответствующийадресу устройства, с которого будут

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

– R/W Bit (Бит чтения/записи) – одинбит, указывающий, что данные будут считываться с одного устройст-

ва или записываться в другое устройство

– Ack (Подтверждение) – один бит сведомого устройства с подтверждением действия ведущего устройст-

ва. Как правило, подтверждениетребуется для каждого адреса ибайта данных, но не всегда.

– Data (Данные) – целое число байт,считываемых или записываемыхустройством.

– Stop (Стоп) – указывает на завершение сообщения, ведущее устройство освобождает шину.

В то время, когда передача данных на шине отсутствует, сигналы SCL и SDA имеют высокий уровень за счет внешнего резистора.

Сигналы START и STOP формируются «Master» для определения начала и окончания передачи данных соответственно.

Сигнал START формируется переходом сигнала SDA из высокого уровня в низкий при высоком уровне сигнала SCL. Сигнал STOP определяется как переход SDA из низкого уровня в высокий при высоком уровне SCL. Таким образом, при передаче данных сигнал SDA может изменяться только при низком уровне сигнала SCL.

Интерфейс USB (Universal Serial Bus - Универсальный Последовательный Интерфейс) предназначен для подключения периферийных устройств к персональному компьютеру. Позволяет производить обмен информацией с периферийными устройствами на трех скоростях (спецификация USB 2.0 ):

  • Низкая скорость (Low Speed - LS) - 1,5 Мбит/с;
  • Полная скорость (Full Speed - FS) - 12 Мбит/с;
  • Высокая скорость (High Speed - HS) - 480 Мбит/с.
Для подключения периферийных устройств используется 4-жильный кабель: питание +5 В, сигнальные провода D+ и D- , общий провод.
Интерфейс USB соединяет между собой хост (host ) и устройства. Хост находится внутри персонального компьютера и управляет работой всего интерфейса. Для того, чтобы к одному порту USB можно было подключать более одного устройства, применяются хабы (hub - устройство, обеспечивающее подключение к интерфейсу других устройств). Корневой хаб (root hub ) находится внутри компьютера и подключен непосредственно к хосту. В интерфейсе USB используется специальный термин "функция" - это логически законченное устройств, выполняющее какую-либо специфическую функцию. Топология интерфейса USB представляет собой набор из 7 уровней (tier ): на первом уровне находится хост и корневой хаб, а на последнем - только функции. Устройство, в состав которого входит хаб и одна или несколько функций, называется составным (compaund device ).
Порт хаба или функции, подключаемый к хабу более высокого уровня, называется восходящим портом (upstream port ), а порт хаба, подключаемый к хабу более низкого уровня или к функции называется нисходящим портом (downstream port ).
Все передачи данных по интерфейсу иницируются хостом. Данные передаются в виде пакетов. В интерфейсе USB испольуется несколько разновидностей пакетов:
  • пакет-признак (token paket ) описывает тип и направление передачи данных, адрес устройства и порядковый номер конечной точки (КТ - адресуемая часть USB-устройства); пакет-признаки бывают нескольких типов: IN , OUT , SOF , SETUP ;
  • пакет с данными (data packet ) содержит передаваемые данные;
  • пакет согласования (handshake packet ) предназначен для сообщения о результатах пересылки данных; пакеты согасования бывают нескольких типов: ACK , NAK , STALL .
Таким образом каждая транзакция состоит из трех фаз: фаза передачи пакета-признака, фаза передачи данных и фаза согласования.
В интерфейсе USB используются несколько типов пересылок информации.
  • Управляющая пересылка (control transfer ) используется для конфигурации устройства, а также для других специфических для конкретного устройства целей.
  • Потоковая пересылка (bulk transfer ) используется для передачи относительно большого объема информации.
  • Пересылка с прерыванием (iterrupt transfer ) испольуется для передачи относительно небольшого объема информации, для которого важна своевременная его пересылка. Имеет ограниченную длительность и повышенный приоритет относительно других типов пересылок.
  • Изохронная пересылка (isochronous transfer ) также называется потоковой пересылкой реального времени. Информация, передаваемая в такой пересылке, требует реального масштаба времени при ее создании, пересылке и приеме.

Потоковые пересылки характеризуются гарантированной безошибочной передачей данных между хостом и функцией посредством обнаружения ошибок при передаче и повторного запроса информации.
Когда хост становится готовым принимать данные от функции, он в фазе передачи пакета-признака посылает функции IN -пакет. В ответ на это функция в фазе передачи данных передает хосту пакет с данными или, если она не может сделать этого, передает NAK - или STALL -пакет. NAK -пакет сообщает о временной неготовности функции передавать данные, а STALL -пакет сообщает о необходимости вмешательства хоста. Если хост успешно получил данные, то он в фазе согласования посылает функции ACK
Когда хост становится готовым передавать данные, он посылает функции OUT -пакет, сопровождаемый пакетом с данными. Если функция успешно получила данные, он отсылает хосту ACK -пакет, в противном случае отсылается NAK- или STALL -пакет.
Управляющие пересылки содержат не менее двух стадий: Setup-стадия и статусная стадия . Между ними может также располагаться стадия передачи данных . Setup-стадия используется для выполнения SETUP-транзакции , в процессе которой пересылается информация в управляющую КТ функции. SETUP-транзакция содержит SETUP -пакет, пакет с данным и пакет согласования. Если пакет с данными получен функцией успешно, то она отсылает хосту ACK -пакет. В противном случае транзакция завершается.
В стадии передачи данных управляющие пересылки содержат одну или несколько IN- или OUT- транзакций, принцип передачи которых такой же, как и в потоковых пересылках. Все транзакции в стадии передачи данных должны производиться в одном направлении.
В статусной стадии производится последняя транзакция, которая использует те же принципы, что и в потоковых пересылках. Направление этой транзакции противоположно тому, которое использовалось в стадии передачи данных. Статусная стадия служит для сообщения о результате выполнения SETUP-стадии и стадии передачи данных. Статусная информация всегда передается от функции к хосту. При управляющей записи (Control Write Transfer ) статусная информация передается в фазе передачи данных статусной стадии транзакции. При управляющем чтении (Control Read Transfer ) статусная информация возвращается в фазе согласовании статусной стадии транзакции, после того как хост отправит пакет данных нулевой длины в предыдущей фазе передачи данных.
Пересылки с прерыванием могут содержать IN - или OUT -пересылки. При получении IN -пакета функция может вернуть пакет с данными, NAK -пакет или STALL -пакет. Если у функции нет информации, для которой требуется прерывание, то в фазе передачи данных функция возвращает NAK -пакет. Если работа КТ с прерыванием приостановлена, то функция возвращает STALL -пакет. При необходимости прерывания функция возвращает необходимую информацию в фазе передачи данных. Если хост успешно получил данные, то он посылает ACK -пакет. В противном случае согласующий пакет хостом не посылается.
Изохронные транзакции содержат фазу передачи признака и фазу передачи данных , но не имеют фазы согласования . Хост отсылает IN - или OUT -признак, после чего в фазе передачи данных КТ (для IN -признака) или хост (для OUT -признака) пересылает данные. Изохронные транзакции не поддерживают фазу согласования и повторные посылки данных в случае возникновения ошибок.

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

Фирма-производитель Наименование Описание

Atmel
AT43301 Контроллер LS/FS-хаба 1-4 с общим управлением питанием нисходящих портов.
AT43312A Контроллер LS/FS-хаба 1-4 с индивидуальным управлением питанием нисходящих портов.
AT43320A Микроконтроллер на ядре AVR. Имеет встроенные USB-функцию и хаб с 4 внешними нисходящими портами, работающие в LS/FS-режимах, 512 байт ОЗУ, 32х8 регистров общего назначения, 32 программируемых вывода, последовательный и SPI-интерфейсы. Функция имеет 3 КТ с буферами FIFO размером 8 байт. Для нисходящих портов хаба предусмотрено индивидуальное управление питанием.
AT43321 Контроллер клавиатуры на ядре AVR. Имеет встроенные USB-функцию и хаб с 4 внешними нисходящими портами, работающие в LS/FS-режимах, 512 байт ОЗУ, 16 кбайт ПЗУ, 32х8 регистров общего назначения, 20 программируемых вывода, последовательный и SPI-интерфейсы. Функция имеет 3 КТ. Для нисходящих портов хаба предусмотрено индивидуальное управление питанием.
AT43324

Микроконтроллер на ядре AVR. Имеет встроенные USB-функцию и хаб с 2 внешними нисходящими портами, работающие в LS/FS-режимах, 512 байт ОЗУ, 16 кбайт ПЗУ, 32х8 регистров общего назначения, 34 программируемых вывода. Клавиатурная матрица может иметь размер 18х8. Контроллер имеет 4 выхода для подключения светодиодов. Функция имеет 3 КТ. Для нисходящих портов хаба предусмотрено индивидуальное управление питанием.

AT43355 Микроконтроллер на ядре AVR. Имеет встроенные USB-функцию и хаб с 2 внешними нисходящими портами, работающие в LS/FS-режимах, 1 кбайт ОЗУ, 24 кбайт ПЗУ, 32х8 регистров общего назначения, 27 программируемых выводов, последовательный и SPI-интерфейсы, 12-канальный 10-разрядный АЦП. Функция имеет 1 управлющую КТ и 3 программируемых КТ с буферами FIFO размером 64/64/8 байт.
Fairchild Semiconductor USB100 Контроллер манипуляторов (мышь, трекбол, джойстик). Поддерживает 2D/3D-мышь, джойстик с тремя потенциометрами, манипулятор с 16 кнопками.

Intel
8x931Ax Микроконтроллер с архитектурой MSC-51. Имеет встроенную USB-функцию, работающую в LS/FS-режимах, 256 байт ОЗУ, 0/8 кбайт ПЗУ, 8х4 регистра общего назначения, 32 программируемых вывода, последовательный интерфейс, интерфейс управления клавиатурой. Функция имеет 3 КТ с буферами FIFO размером 8/16/8 байт.
8x931Hx Микроконтроллер с архитектурой MSC-51. Имеет встроенную USB-функцию и хаб с 4 внешними нисходящими портами, работающие в LS/FS-режимах, 256 байт ОЗУ, 0/8 кбайт ПЗУ, 8х4 регистра общего назначения, 32программируемых вывода, последовательный интерфейс, интерфейс управления клавиатурой. Функция имеет 3 КТ с буферами FIFO размером 8/16/8 байт.
8x930Ax Микроконтроллер с архитектурой MSC-251. Имеет встроенную USB-функцию, работающую в LS/FS-режимах, 1024 байта ОЗУ, 0/8/16 кбайт ПЗУ, 40 регистров общего назначения, 32 программируемых вывода, последовательный интерфейс. Функция имеет 4(6) КТ с буферами FIFO размером 16/1024(256)/16(32)/16(32)/(32)/(16) байт.
8x930Hx Микроконтроллер с архитектурой MSC-251. Имеет встроенную USB-функцию и хаб с 4 внешними нисходящими портами, работающие в LS/FS-режимах, 1024 байта ОЗУ, 0/8/16 кбайт ПЗУ, 40 регистров общего назначения, 32 программируемых вывода, последовательный интерфейс. Функция имеет 4 КТ с буферами FIFO размером 16/1024/16/16 байт.

Microchip
PIC16C745 Микроконтроллер с архитектурой PIC. Имеет встроенную USB-функцию, работающую в LS-режиме, 256 байт ОЗУ, 14336 байт ПЗУ, 22 программируемых вывода, последовательный интерфейс, 5-канальный 8-битный АЦП.
PIC16C765 Микроконтроллер с архитектурой PIC. Имеет встроенную USB-функцию, работающую в LS-режиме, 256 байт ОЗУ, 14336 байт ПЗУ, 33 программируемых вывода, последовательный интерфейс, 8-канальный 8-битный АЦП.
PIC18F2450 Микроконтроллер с архитектурой PIC. Имеет встроенную USB-функцию, работающую в LS/FS-режиме, 1536 байт ОЗУ, 16384 байт ПЗУ, 19 программируемых выводов, последовательный и SPI-интерфейсы, 5-канальный 10-битный АЦП. Функция имеет 8 КТ.
PIC18F2550 Микроконтроллер с архитектурой PIC. Имеет встроенную USB-функцию, работающую в LS/FS-режиме, 1536 байт ОЗУ, 32768 байт ПЗУ, 19 программируемых выводов, последовательный, CAN- и SPI-интерфейсы, 5-канальный 10-битный АЦП. Функция имеет 8 КТ.
PIC18F4450 Микроконтроллер с архитектурой PIC. Имеет встроенную USB-функцию, работающую в LS/FS-режиме, 1536 байт ОЗУ, 16384 байт ПЗУ, 34 программируемых вывода, последовательный, CAN- и SPI-интерфейсы, 8-канальный 10-битный АЦП. Функция имеет 8 КТ.
PIC18F4550 Микроконтроллер с архитектурой PIC. Имеет встроенную USB-функцию, работающую в LS/FS-режиме, 1536 байт ОЗУ, 32768 байт ПЗУ, 34 программируемых вывода, последовательный, CAN- и SPI-интерфейсы, 8-канальный 10-битный АЦП. Функция имеет 8 КТ.
Texas Instruments TUSB2036 Контроллер LS/FS-хаба 1-3 с индивидуальным управлением питанием нисходящих портов.

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

Итак, USB (universal serial bus) — универсальная последовательная шина . Большинство USB-устройств соответствуют спецификациям 1.1 и 2.0. В спецификации 1.1 определены две скорости передачи информации: LS (low speed) — низкая скорость, 1,5 Мбит/с и FS (full speed) — полная скорость, 12 Мбит/с. В редакции 2.0 к ним добавлена ещё и высокая скорость HS (high speed), 480 Мбит/с. Не так давно вышла ещё спецификация — 3.0, но устройства, поддерживающие этот стандарт, пока не очень распространены, поэтому и бог с ней.

Физические устройства на шине USB бывают трёх типов : хост-контроллер , хаб и конечное устройство .

Хост-контроллер — это главный управляющий шиной USB . Именно он обеспечивает связь устройств, подключенных к шине, с компьютером (с ОС и с клиентским ПО). Любые сеансы обмена данными может начинать только хост-контроллер, остальные устройства молчат в тряпочку, пока хост-контроллер к ним не обратится.

Контроллер взаимодействует с ОС через драйвер хост-контроллера (HCD — host controller driver) . Этот драйвер привязан к конкретной модели хост-контроллера. Только он знает какие данные, в какие регистры и в каком порядке пихать в хост-контроллер, а также откуда какие данные брать, чтобы хост-контроллер сделал то, чего от него хотят.

Со стороны ОС шиной USB управляет ещё один драйвер — USBD (universal serial bus driver) . Ему совершенно пофиг, как там конкретно реализован хост-контроллер и где у него какие регистры (для этого есть HCD), USBD решает общие (неспецифические для конкретного хост-контроллера) вопросы: взаимодействие с клиентским ПО, нумерация устройств на шине, их конфигурирование, распределение питания и пропускной способности шины и так далее. Это, можно сказать, своеобразный диспетчер, который осуществляет общий контроль над шиной и её взаимодействие с внешним миром (с клиентским ПО).

Хост-контроллер — птица гордая и пугливая, поэтому непосредственно ни с кем из подданных он не разговаривает. Для общения с подданными у него есть специальные помощники — хабы (их ещё иногда называют концентраторами).

Хабы — это устройства, которые позволяют физически подключить устройства USB к шине. Они предоставляют порты для подключения, ретранслируют трафик от хост-контроллера к конечным устройствам и обратно, отслеживают состояние и физически управляют электропитанием портов. У хабов есть один восходящий (upstream) порт, — это тот порт, который подключен по направлению к хост-контроллеру, и несколько нисходящих (downstream) портов, — это порты, к которым подключаются конечные устройства. Хабы можно каскадировать, подключая к нисходящему порту хаба ещё один хаб. Самый главный хаб, интегрированный с хост-контроллером, называется корневым хабом (он же — корневой концентратор или root hub ).

Другими словами можно сказать, что у хаба есть две основных задачи: 1) создать хост-контроллеру иллюзию, что он непосредственно разговаривает с подключенным к хабу устройством; 2) наблюдать за своим сегментом шины (за девайсами, подключенными к нисходящим портам), сообщать «наверх» обо всех изменениях и, если надо, — подключать и отключать питание портов.

Конечные устройства — это все те полезные устройства, которые мы подключаем к шине USB (флэшки, принтеры, мышки и т.д.)

Нужно сказать, что физические устройства и логические устройства — это не всегда одно и тоже . Существуют, например, такие конечные устройства (называемые составными — compound devices ), которые содержат внутри себя хаб, к которому подключено ещё несколько устройств. Несмотря на то, что в этом случае хаб и все, подключенные к нему устройства, запакованы в один корпус, с точки зрения логики шины это будут совершенно разные устройства.

Для логических конечных устройств обычно используют термин «функции» . Таким образом, с точки зрения логики шины, устройства на ней можно разделить на хабы и функции (и неважно, запакованы ли они в один корпус или нет). Каждое логическое устройство на шине имеет уникальный адрес (1-127), присваеваемый ему хостом при подключении.

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

Логическое устройство представляет собой набор так называемых конечных точек (endpoints или просто EP) . Физически, конечные точки — это просто разные буферы в логическом устройстве USB, через которые происходит обмен данными с хостом. Логичный вопрос — а зачем нам иметь несколько буферов? Ну, просто потому что удобно для разных задач иметь разные буферы. Устройство же у нас может выполнять параллельно несколько разных задач. (Минимум две — отслеживать команды управления от хоста и делать что-то полезное.) У этих разных задач могут могут быть разные степени важности, требования к надёжности, своевременности и скорости доставки данных и, наконец, источники и потребители пересылаемой информации также могут быть разные (источником и потребителем полезной инфы обычно является клиентский драйвер, в то же время всякая управляющая инфа ему обычно нафиг не нужна).

Поскольку для решения описанных выше проблем недостаточно иметь просто разные буферы для разной передаваемой информации, то в дополнение к этому придумали ещё кое-что.

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

  1. изохронные передачи (isochronous transfers). Они предназначены для передачи потоковых данных в реальном времени. Такие передачи гарантируют время доставки, но не гарантируют, что все данные будут доставлены. Если во время передачи происходит ошибка, то данные просто теряются. Кроме того, для передач такого типа должно быть предварительно согласовано, какую часть пропускной способности шины эта передача будет занимать. Изохронные передачи имеют наивысший приоритет и имеют право занять до 90% пропускной способности канала. Передачи этого типа используются, например, для видеокамер, или колонок. Никого ведь не устроит, если звук в колонках будет лагать. Лучше уж потерять часть данных, но слушать песню не рывками, а непрерывно.
  2. прерывания (interrupts). Этот тип предназначен для спонтанных небольших сообщений, но с гарантированным временем обслуживания и гарантированной доставкой. Примером может служить USB клавиатура. Мы можем нажать на кнопку в любой момент (может 3 часа не нажимали, а может так и заклацали клавой каждую секунду). Пока мы спим за компом — и передавать ничего не надо. Но как только мы всё же щелканули по кнопкам — будьте любезны, сообщите об этом куда следует и желательно побыстрее.
  3. передача массивов данных (bulk data transfers). Для этого типа нет никаких гарантий по скорости, единственное в чём можно быть уверенным — что данные дойдут в целости и сохранности (когда-нибудь, гы-гы). Такие передачи имеют самый низкий приоритет, но зато им ничего не надо согласововать, — сколько останется свободной от других типов передач ширины канала — столько они и займут. Не останется вообще — будут ждать, когда канал освободится. Такие передачи можно использовать для обмена данными с устройствами, которым некуда спешить, например, с принтерами. Представьте, что вы отправили на печать USB-принтеру фотку и одновременно слушаете музыку в USB-колонках. Согласитесь ли вы, чтобы фотка напечаталась на 3 секунды раньше, но при этом начал лагать звук в колонках? Вероятнее всего нет, так ведь. Пусть лучше данные принтеру передаются медленнее, но зато музыка играет непрерывно, без всяких дёрганий.
  4. управляющие передачи (control transfers). Это передачи типа запрос-ответ. С помощью них передаются комады управления устройствами. Тут важна не только безошибочная передача, но и получение ответа о результатах выполнения команды. Кроме того, поскольку эти передачи являются служебными, то им гарантировано 10% пропускной способности канала.

Вернёмся к нашим конечным точкам. Для того, чтобы отличить одну точку от другой, — конечные точки, должны иметь уникальный номер. Но это не всё. Кроме номера, каждая конечная точка имеет ещё и направление. IN — если точка предназначена для передачи данных хосту, OUT — если точка предназначена для приёма данных от хоста. Точки с одинаковыми номерами, но с разными направлениями передачи данных — это разные с точки зрения логики шины конечные точки.

Единственное исключение — конечная точка EP0. У неё вообще особый статус. Она является служебной и предназначена для общего управления устройством (конфигурирование, настройка и т.д.). Кроме того, эта конечная точка двунаправленная и она должна обязательно присутствовать в любом USB-устройстве.

Исходя из всего вышеописанного, для идентификации какой-то конечной точки на шине, нам нужно знать адрес устройства, к которому относится конечная точка, её номер в устройстве и направление передачи данных через эту точку.

Поскольку устройство не всегда делает абсолютно всё на что оно только способно, да и способов решения одной и той же задачи оно может иметь несколько, то обычно нет необходимости задействовать абсолютно все конечные точки. Поэтому придумали такие понятия, как интерфейс , конфигурация и альтернативные установки. Интерфейс объединяет конечные точки, предназначенные для решения какой-либо одной задачи . Наборы используемых одновременно интерфейсов называются конфигурациями . Альтернативные установки позволяют включать или отключать какие-то входящие в конфигурацию конечные точки, в зависимости от способа решения задач для которых предназначена эта конфигурация.

Самих конфигураций и альтернативных установок у каждой из этих конфигураций для одного логического устройства может существовать несколько, но в каждый момент времени только один из этих наборов может быть активен. Причём хост должен знать, какой именно набор активен и в соответствии с этим обеспечивать связь с входящими в этот набор конечными точками. Остальные конечные точки, не входящие в активный набор, не будут доступны для связи.

Поясню, что значит «обеспечивать связь с конечными точками». Для связи клиентского ПО с каждой активной конечной точкой хост создаёт коммуникационный канал (communication pipe ). Клиентское ПО, которое хочет пообщаться с конечной точкой, должно отправить к соответствующему каналу пакет запроса ввода/вывода (IRP — input/output request packet) и ждать уведомления о завершении его обработки. В IRP указывается только адрес буфера, куда надо складывать или откуда брать данные и длина передачи. Всё остальное за вас сделает хост и обслуживающие его драйвера (USBD и HCD)

К омпьютерный мир наконец-то объединился вокруг стандарта зарядки, после нескольких лет фирменных адаптеров и некрасивых стен развлетленных источников питания. Ну, вроде: Мы уже видим некоторую фрагментацию с точки зрения нового разъема USB Type-C , который в конечном итоге может заменить USB, а также то, что, к счастью, оказывается, недолгая одержимость Samsung была с множеством USB разъемов micro-B для своей линии Galaxy. Но помимо этого, и с очевидным исключением разъема Lightning от Apple, микро USB уничтожил склонность отрасли для пользовательских портов.

Десять лет назад, вы всегда должны были убедиться, что у вас правильный источник питания для каждого из ваших гаджетов. Как правило, блоки питания бывали даже не маркированы. Сегодня вы можете зарядить свой телефон в доме вашего друга (приобрести зарядку и другие аксессуары можн на сайте https://itsell.ua в Украине, подключить для чтения электронных книг в любой компьютер, и загружать фотографии с цифровой камеры непосредственно к телевизору, все благодаря стандартизированным разъемам. На его месте, хотя, есть новая проблема: питание USB. Не все зарядные устройства USB, разъемы и кабели созданы равными. Вы, наверное, заметили, что некоторые зарядные устройства мощьнее, чем другие. Иногда, один USB-разъем на ноутбуке, казалось бы, более мощным, чем другой. На некоторых настольных ПК, даже когда они выключены, вы можете зарядить свой смартфон через гнездо USB. Оказывается, есть способ решить все это безумие – но для начала мы должны объяснить, как на самом деле работает питание USB.

Есть в настоящее время четыре спецификации USB – USB 1.0, 2,0, 3,0, и 3,1 – в дополнение к новому разъему USB-C. Мы будем указать, где они существенно различаются, но по большей части, мы сосредоточимся на USB 3.0, так как это самый распространенный. В сети USB, есть один хост и одно устройство. Почти в каждом случае, ваш компьютер является хозяином, а ваш смартфон, планшет, или камера устройства. Питание всегда течет от хоста к устройству, хотя данные могут течь в обоих направлениях, например, при копировании файлов туда и обратно между вашим компьютером и телефоном.

Хорошо, теперь цифры. USB 1.0 или 2.0 разъем имеет четыре контакта, и кабель USB имеет четыре провода. Внутренние контакты передают данные (D + и D-), а внешние контакты обеспечивают 5-вольтового источника питания. Порт USB 3.0 добавляет дополнительный ряд из пяти штифтов, так что USB 3.0-совместимые кабели имеют девять проводов. С точки зрения фактической мощности (миллиампер или мА), есть три вида USB-порта продиктованных текущей спецификации: стандартный порт downstream, порт зарядки downstream, а также специальный порт зарядки. Первые два можно найти на вашем компьютере (и должны быть помечены как таковые), и третий вид относится к “неразумным” зарядным устройствам стен.

В спецификации USB 1.0 и 2.0, стандартный порт downstream способен выдавать до 500 мА (0,5А); с USB 3.0, он доходит до 900mA (0.9A). В процессе заряда и выделенные порты для зарядки обеспечивают до 1,500mA (1.5A). USB 3.1 имеют пропускную способность до 10 Гбит, что называется режим SuperSpeed +, в результате, это примерно эквивалентно с первого поколения Thunderbolt. Он также поддерживает мощность 1.5А и 3А по шине 5V.

Разъем USB Type-C

USB Type-C полностью другой разъем. Он универсальный; Вы можете поместить его в любом случае, и он будет работать, в отличие от USB или как разъем Lightning от Apple. USB-C также теоретически в два раза больше имеет пропускной способности в отличии от USB 3.0, и может выводить больше мощности. Apple, присоединился к USB Type-C с USB 3.1 на своем 12-дюймовом MacBook, и Google включил его на теперь в Chromebook Pixel . Кроме того, мы начинаем видеть его на телефонах, с первым из которых OnePlus 2 ; текущие популярные модели включают в себя Google Nexus 6P, OnePlus 3 , а также Samsung Galaxy версии 7 . Но также могут быть старшие версии с портами USB, которые поддерживают стандарт 3.1.

Спецификация USB также позволяет порту “sleep-and-charge”, в котором USB-порты на компьютере, при выключении питания остаются активными. Возможно, вы заметили это на настольном компьютере, где всегда есть какое-то питание, протекающий через материнскую плату, некоторые ноутбуки также способны sleep-and-charge.

Универсальное зарядное устройство

Теперь, это то, что диктует спецификации. Но есть много USB-зарядных устройств, которые не соответствуют этим характеристикам – в основном левого производства или мировых гигантов. IPad использует зарядное устройство от Apple, например, обеспечивает 2.1A на 5В; Amazon’s Kindle Fire использует зарядное устройство выходы 1.8A; и многие автомобильные зарядные устройства могут выводить что-либо от 1A до 2.1A.

Существует огромная разница, между обычными USB портами, рассчитанных на 500 мА, а также выделенных портов зарядки, которые варьируются вплоть до 3,000mA. Это приводит к важному вопросу: Если вы берете телефон, который поставляется вместе с зарядным устройством 900mA, и подключаете его к зарядному устройству 2,100mA IPAD, в качестве примера, может ли он взорваться ?

Короче говоря, нет: Вы можете подключить любое устройство USB в любой кабель USB и к любому порту USB, и ничто не взорвется – и на самом деле, используя более мощное зарядное устройство только должно ускорить зарядку батареи. Мы это делаем все время с нашими мобильными устройствами, и у нас никогда не было проблем.

Ответ в том, что возраст вашего устройства играет важную роль, диктуя и как быстро он может быть заряжен, и может ли он быть заряжен с помощью универсального зарядного устройства для всех. Еще в 2007 году, USB Implementers Forum выпустила Charging Specification батарей, которые стандартизированы как более быстрые способы зарядки USB – устройств, либо путем откачки больше ампера через порты USB на вашем компьютере, или с помощью настенного зарядного устройства. Вскоре после этого, USB устройства, реализованные по этой спецификации начали покупать.

Если у вас есть современное устройство USB – на самом деле, практически любой смартфон, планшет, или камеры – вы должны иметь возможность для подключения к USB-порту высокой силы тока и наслаждаться более быстрой зарядкой. Если у вас есть старый продукт, тем не менее, он, вероятно, не будет работать с USB-портами, которые используют спецификации зарядной батареи. Он может работать только со старыми, оригинал (500мА) USB 1.0 и 2.0 портами ПК. В некоторых (более старых) случаях, USB устройства можно заряжать только с помощью компьютеров с определенными драйверами, но подобным компьютерам идет уже более десяти лет.

Есть несколько других вещей, в которых надо быть в курсе. В то время как компьютеры могут иметь два вида USB-порта – стандартный downstream или зарядки – OEM downstream -производители не всегда маркируют их как таковые. В результате, вы можете иметь устройство, которое заряжает от одного порта на вашем ноутбуке, но не от другого. Это черта старых компьютеров, так как там, кажется, не причин использовать стандартные порты downstream, когда порты зарядки высокой силы тока доступны. Большинство производителей сейчас ставят маленький значок молнии над правильной зарядки портов на ноутбуках, а в некоторых случаях, эти порты могут даже остаться при закрытой крышке.

Аналогичным образом, некоторые внешние устройства – жесткие диски 3,5-дюймовые, в первую очередь – требуют больше энергии, чем обычный порт USB может обеспечить. Вот почему они включают в себя два USB-порта, Y-кабель или внешний адаптер питания переменного тока.

В противном случае, USB, безусловно, сделал зарядку наших гаджетов и периферийных устройств намного проще, чем когда бы то ни было. И если новый разъем USB-C будет популярен, все будет получить еще проще, потому что вы никогда не будете ругаться после того, в какую розетку его подключить. Удачи Вам и спасибо за внимание!