USB-Filtertreiber zur Unterstützung von USB-Ladegeräten

Schreiben Sie einen Filtertreiber, der die Erkennung von Ladegeräten unterstützt, wenn der Funktionscontroller die im Lieferumfang enthaltenen Synopsys- und ChipIdea-Treiber verwendet. Wenn Sie einen Clienttreiber für einen proprietären Funktionscontroller schreiben, wird die Lade-/Anfügenerkennung in den Clienttreiber integriert, indem EVT_UFX_DEVICE_PROPRIETARY_CHARGER_SET_PROPERTY, EVT_UFX_DEVICE_PROPRIETARY_CHARGER_RESET und EVT_UFX_DEVICE_DETECT_PROPRIETARY_CHARGER implementiert wird.

Mit dem USB-Funktionsstapel kann das Gerät, z. B. ein Smartphone oder Tablet, aufladen, wenn es an einen Host und ein USB-Ladegerät angeschlossen ist, wie in der Spezifikation USB Battery Charging (BC) 1.2 definiert.

  • Es gibt zwei Arten von Ports, die das Gerät zum Aufladen verwenden kann. Das Gerät kann über einen dedizierten Ladeanschluss (DCP) an einem Ladegerät geladen werden, das im Lieferumfang des Geräts enthalten ist. Alternativ kann das Gerät über Standard-Downstreamports oder Nachgeschaltete Ports aufladen, wenn das Gerät an einen PC angeschlossen ist. Beide Fälle entsprechen der USB BC 1.2-Spezifikation.

  • Bestimmte Ladegeräte entsprechen nicht der Spezifikation. Mit dem USB-Funktionsstapel kann das Gerät über diese proprietären USB-Ladegeräte aufgeladen werden.

Um spezifikationskonforme und proprietäre Ladegeräte zu unterstützen, sind diese Vorgänge erforderlich.

  • Das Gerät kann erkennen, wann ein USB-Host oder ein Usb-Ladegerät angeschlossen oder getrennt ist.
  • Das Gerät ist in der Lage, die verschiedenen USB-Ladeanschlüsse gemäß der BC 1.2-Spezifikation zu erkennen.
  • Für USB-Ladegeräte, die durch die BC 1.2-Spezifikation definiert werden, wird das Gerät mit der maximalen Strommenge berechnet, die durch die BC 1.2-Spezifikation zulässig ist.
  • Das Gerät kann proprietäre USB-Ladegeräte erkennen.
  • Bestimmen Sie bei proprietären USB-Ladegeräten die maximale Strommenge, die das Gerät zeichnen kann.
  • Benachrichtigen Sie das Betriebssystem über den angeschlossenen USB-Anschlusstyp.
  • Verhindern Sie, dass das Gerät den Strom über USB im Betriebssystem abruft, auch wenn ein USB-Host angeschlossen ist und sich das Gerät mit dem Host konfiguriert hat.

Diese Vorgänge werden vom UFX-/Clienttreiberpaar (USB Function Class Extension) und einem Filtertreiber verarbeitet, der als niedrigerer Filter in den USB-Funktionsgerätestapel geladen wird. Der Treiber verwaltet das USB-Aufladen von der USB-Porterkennung bis hin zur Benachrichtigung des Akkustapels, wenn er mit dem Aufladen beginnen kann und die maximale Strommenge, die das Gerät ziehen kann.

Hier sehen Sie eine Architekturdarstellung der Gerätestapel.

USB-Aufladung.

Wenn ein USB-Anschluss an das Gerät angeschlossen ist, erhält der Clienttreiber entweder vom unteren Filtertreiber oder einem Interrupt eine Benachrichtigung. Zu diesem Zeitpunkt führt der Clienttreiber die Porterkennung durch Kommunikation mit der USB-Hardware aus und meldet den Porttyp an UFX. Alternativ kann sie den Filtertreiber anfordern. In diesem Fall koordiniert sich der Filtertreiber mit der USB-Hardware, um die USB-Porterkennung durchzuführen, und gibt den erkannten Porttyp an den Clienttreiber zurück, und der Clienttreiber übergibt ihn an UFX.

Basierend auf dem Porttyp bestimmt UFX die maximale Strommenge, die das Gerät zeichnen kann, und sendet diese Informationen an den Ladeaggregationstreiber (CAD). CAD überprüft die Informationen. Wenn der Aktuelle gültig ist, sendet CAD eine Anforderung an den Akkuklassentreiber, um mit dem Aufladen auf den angegebenen maximalen Strom zu starten. Der Akkuklassentreiber leitet die Ladeanforderung zur Verarbeitung an den Akku-Miniklassentreiber weiter. Wenn die Ladeanforderung angegeben hat, dass ein proprietäres Ladegerät angeschlossen wurde und die Akku-Miniklasse proprietäre Ladegeräte verarbeitet, kann der Miniklassentreiber versuchen, mit einem maximalen Strom aufzuladen, den er für angemessen erachtet. Andernfalls kann die Akku-Miniklasse nur bis zum maximalen Strom geladen werden, der von CAD angegeben wird.