다음을 통해 공유


USB 충전기를 지원하기 위한 USB 필터 드라이버

함수 컨트롤러가 기본 제공 Synopsys 및 ChipIdea 드라이버를 사용하는 경우 충전기 감지를 지원하는 필터 드라이버를 작성합니다. 독점 함수 컨트롤러용 클라이언트 드라이버를 작성하는 경우 충전기/연결 검색은 EVT_UFX_DEVICE_PROPRIETARY_CHARGER_SET_PROPERTY, EVT_UFX_DEVICE_PROPRIETARY_CHARGER_RESETEVT_UFX_DEVICE_DETECT_PROPRIETARY_CHARGER 구현하여 클라이언트 드라이버에 통합됩니다.

USB 함수 스택을 사용하면 BC(USB 배터리 충전) 1.2 사양에 정의된 대로 호스트 및 USB 충전기에 연결할 때 휴대폰 또는 태블릿과 같은 디바이스를 충전할 수 있습니다.

  • 디바이스가 충전에 사용할 수 있는 포트에는 두 가지 유형이 있습니다. 디바이스는 디바이스와 함께 제공된 충전기의 DCP(전용 충전 포트)에서 충전할 수 있습니다. 또는 디바이스가 PC에 연결되어 있을 때 표준 다운스트림 포트에서 또는 다운스트림 포트를 충전할 수 있습니다. 두 경우 모두 USB BC 1.2 사양을 준수합니다.

  • 특정 충전기는 사양을 따르지 않습니다. USB 함수 스택을 사용하면 디바이스가 해당 전용 USB 충전기에서 충전할 수 있습니다.

사양 규격 및 독점 충전기를 지원하려면 이러한 작업이 필요합니다.

  • 디바이스는 USB 호스트 또는 충전기가 연결되거나 분리된 시기를 감지할 수 있습니다.
  • 디바이스는 BC 1.2 사양에 정의된 다양한 USB 충전 포트를 검색할 수 있습니다.
  • BC 1.2 사양으로 정의된 USB 충전기의 경우 BC 1.2 사양에서 허용되는 최대 전류 양으로 디바이스 요금이 청구됩니다.
  • 디바이스는 독점 USB 충전기를 감지할 수 있습니다.
  • 독점 USB 충전기의 경우 디바이스에서 그릴 수 있는 전류의 최대 양을 결정합니다.
  • 연결된 USB 포트 유형에 대해 운영 체제에 알립니다.
  • USB 호스트가 연결되어 있고 디바이스가 호스트를 사용하여 자체 구성한 경우에도 디바이스가 OS의 USB를 통해 전류를 끌어당기는 것을 방지합니다.

이러한 작업은 USB 함수 디바이스 스택에서 하위 필터로 로드되는 USB UFX(함수 클래스 확장)/클라이언트 드라이버 쌍 및 필터 드라이버에 의해 처리됩니다. 드라이버는 USB 포트 감지부터 충전을 시작할 수 있을 때 배터리 스택에 알리기까지 USB 충전을 관리하고 장치가 그릴 수 있는 최대 전류 양을 관리합니다.

디바이스 스택의 아키텍처 표현은 다음과 같습니다.

USB 충전.

USB 포트가 디바이스에 연결되면 클라이언트 드라이버는 하위 필터 드라이버 또는 인터럽트에서 알림을 받습니다. 이때 클라이언트 드라이버는 USB 하드웨어와 통신하여 포트 검색을 수행하고 포트 유형을 UFX에 보고합니다. 또는 필터 드라이버를 요청할 수 있습니다. 이 경우 필터 드라이버는 USB 하드웨어와 조정하여 USB 포트 검색을 수행하고 검색된 포트 유형을 클라이언트 드라이버에 반환하고 클라이언트 드라이버는 이를 UFX에 전달합니다.

포트 유형에 따라 UFX는 디바이스가 그릴 수 있는 최대 전류 양을 결정하고 해당 정보를 CAD(충전 집계 드라이버)로 보냅니다. CAD는 정보의 유효성을 검사합니다. 현재 가 유효한 경우 CAD는 배터리 클래스 드라이버에 요청을 보내 지정된 최대 전류까지 충전을 시작합니다. 배터리 클래스 드라이버는 처리를 위해 배터리 미니클래스 드라이버에 충전 요청을 전달합니다. 충전 요청에서 독점 충전기가 연결되어 있고 배터리 미니클래스가 독점 충전기를 처리하는 경우 미니클래스 드라이버는 적절한 것으로 판단되는 최대 전류로 충전을 시도할 수 있습니다. 그렇지 않으면 배터리 미니클래스는 CAD로 지정된 최대 전류까지만 충전할 수 있습니다.