Архитектура: проектирование USB Type-C для системы Windows

Описывает типичную аппаратную конструкцию системы USB Type-C и драйверы, предоставляемые Корпорацией Майкрософт, которые поддерживают аппаратные компоненты. Эта статья относится к изготовителям оборудования, разрабатывая системы с разъемами USB Type-C.

  • Возможности usb с двумя ролями с помощью USB Type-C
  • Более быстрая зарядка за счет использования текущих уровней USB-Type-C и power Delivery 2.0
  • Display-Out возможности, используя альтернативные режимы и возможности проводной стыковки.

Драйверы для поддержки компонентов USB Type-C

Схема программных компонентов USB Type-C.

На предыдущем рисунке:

  • Драйверы на стороне USB-устройства

    Драйверы USB на стороне устройства обслужив функцию, устройство или периферийное устройство. Расширение класса контроллера функции USB поддерживает MTP (протокол передачи мультимедиа) и зарядку с помощью зарядных устройств BC 1.2. Корпорация Майкрософт предоставляет встроенные клиентские драйверы для контроллеров Synopsys USB 3.0 и ChipIdea USB 2.0. Вы можете написать пользовательский драйвер клиента для контроллера функций с помощью программных интерфейсов драйвера клиента контроллера функций USB. Дополнительные сведения см. в статье Разработка драйверов Windows для контроллеров функций USB.

    Поставщик SoC может предоставить драйвер нижнего фильтра функции USB для обнаружения устаревшего проприетарного зарядного устройства. Вы можете реализовать собственный драйвер фильтра, если контроллером функции являются контроллеры Synopsys USB 3.0 или ChipIdea USB 2.0

  • Драйверы USB на стороне узла

    Драйверы USB на стороне узла — это набор драйверов, которые работают с EHCI или совместимыми с XHCI контроллерами узлов USB. Драйверы загружаются, если драйвер переключения ролей перечисляет роль узла. Если контроллер узла не соответствует спецификации, можно написать пользовательский драйвер с помощью программного интерфейса расширения контроллера узла USB (UCX). Дополнительные сведения см. в разделе Разработка драйверов Windows для USB-контроллеров узлов.

    Примечание

    Не все классы USB-устройств поддерживаются в Windows 10 Mobile.

  • Драйверы ролей USB (URS)

    Системы могут быть спроектированы таким образом, чтобы для usb-порта с двойной ролью windows необходимо настроить режим узла или функции. В этих проектах потребуется использовать стек драйверов коммутатора ролей USB (URS).

    Драйвер URS управляет текущей ролью соединителя, узла или функции, а также загрузкой и выгрузки соответствующих драйверов на стороне устройства или узла на основе событий оборудования с платформы. Корпорация Майкрософт предоставляет встроенные клиентские драйверы для контроллеров Synopsys USB 3.0 и ChipIdea USB 2.0. Вы можете написать драйвер клиента для переключения ролей с помощью программного интерфейса драйвера контроллера usb для двух ролей. Чтобы активировать драйверы переключения ролей, необходимо внести изменения в таблицы ACPI. Дополнительные сведения см. в статье Архитектура стека драйвера двойной роли USB.

    В системах с разъемами MICRO-AB usb это решение принимается на основе пин-кода в соединителе. Обнаружение пин-кода выполняется драйвером клиента с помощью назначенных ему ресурсов прерываний.

    В системах с разъемами USB Type-C решение принимается на основе контактов CC. Драйвер клиента для соединителя выполняет обнаружение CC и перенаправит эти сведения в драйвер переключения ролей.

  • Диспетчер соединителей USB (UCM)

    Этот набор драйверов управляет всеми аспектами соединителя USB Type-C. Если ваша система реализует встроенный контроллер, совместимый с UCSI, через ACPI, используйте предоставленный корпорацией Майкрософт драйвер UCSI. В противном случае напишите драйвер клиента UCSI для транспортов, отличных от ACPI.

    Если ваше оборудование не совместимо с UCSI, необходимо написать драйвер соединителя USB Type-C , который является клиентом, в расширение класса UCM. Вместе они управляют соединителем USB Type-C и ожидаемым поведением драйвера соединителя.

    При написании драйвера расширение класса диспетчера usb-соединителей следует модели драйвера расширения-клиента WDF. Драйвер клиента взаимодействует с оборудованием и расширением класса для обработки таких задач, как обнаружение CC, обмен сообщениями pd, мультиплексирование и управление VBus/VConn, а также выбирает политику для доставки питания и альтернативный режим. Расширение класса передает сведения, сообщаемые драйвером клиента, операционной системе. Например, результат обнаружения CC используется для настройки драйверов переключения ролей; Сведения о энергопотреблении USB Type-C/PD используются для определения уровня зарядки системы. Драйвер клиента управляет конечными компьютерами USB Type-C и PD. Драйвер клиента может делегировать некоторые задачи другим драйверам, например, Mux может управляться другим драйвером. Чтобы написать драйвер клиента, используйте программные интерфейсы драйвера соединителя USB Type-C.

    Контроллер порта USB Type-C

    Расширение класса интерфейса контроллера портов Type-C (UcmTcpciCx.sys) — это расширение диспетчера USB-соединителей, предоставляемого корпорацией Майкрософт, которое позволяет ОС вести себя как диспетчер портов Type-C (TCPM) для соединителя, который не реализует компьютеры состояний PD. Драйвер клиента UcmTcpciCx позволяет программному протоколу TCPM управлять оборудованием и получать его состояние в режиме реального времени.

    Сведения о написании драйвера клиента см. в статье Запись драйвера контроллера порта USB Type-C.

  • Зарядка третейского водителя

    Этот драйвер предоставляется корпорацией Майкрософт для Windows 10 Mobile. Драйвер выступает в качестве арбитра для нескольких источников зарядки. Диспетчер соединителей USB передает сведения об источнике зарядки USB Type-C и PD в САПР, что делает выбор из этой информации и обнаружение зарядного устройства BC1.2, выполняемое драйверами usb-устройства (если применимо). Затем САПР сообщает подсистеме батареи наиболее подходящий источник зарядки для использования.

  • Драйверы аккумуляторов

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