Compartilhar via


Arquitetura e visão geral do HID sobre o transporte SPI

Esta seção descreve a pilha de driver para dispositivos que dão suporte a HID por meio do transporte SPI.

Arquitetura e visão geral

A pilha de driver SPI hid consiste em componentes novos e existentes fornecidos pela Microsoft, bem como componentes fornecidos pelo fabricante de silício SPI. A ilustração a seguir ilustra a pilha e esses componentes.

A pilha de driver HID sobre SPI.

O Windows fornece uma interface para barramentos simples e de baixa potência se comunicarem efetivamente com o sistema operacional. Essa interface é conhecida como SPB (barramento periférico simples) e dá suporte a barramentos como Inter-Integrated Circuit (I2C) e SPI (Serial Peripheral Interface). Para obter detalhes adicionais sobre o SPB, consulte o tópico SPB (barramento periférico simples).

O Windows fornece um driver de miniporto HID baseado em KMDF que implementa a versão 1.0 da especificação de protocolo para HID sobre SPI. Esse driver é chamado HIDSPI.sys. O Windows carrega esse driver com base em uma correspondência de ID compatível, que é exposta pela ACPI (Advanced Configuration and Power Interface). Os integradores do sistema podem usar uma extensão INF para carregar esse driver com base na ID de hardware de seu periférico. O driver garante que os aplicativos que usam a compatibilidade de nível de aplicativo IOCTLs HID para software que aproveitam os IOCTLs hid e o conjunto de APIs. Uma conexão GPIO é fornecida ao driver, o que permite que o dispositivo afirme uma interrupção quando requer atenção ou tem dados.

Observação

O driver de dispositivo HIDSPI.sys dá suporte apenas ao barramento SPI. Ele não dá suporte a I2C, SMBUS ou outros barramentos de baixa potência no Windows.

O driver do controlador SPI

O driver do controlador SPI expõe uma interface IOCTL do Barramento Periférico Serial (SPB) para executar operações de leitura e gravação. Esse driver fornece os intrínsecos reais do controlador (por exemplo, SPI). A Extensão de Classe SPB, em nome do driver do controlador, manipula toda a interação com o hub de recursos e implementa as filas necessárias para gerenciar destinos simultâneos.

Observação

O driver SPI hid não funcionará em sistemas que não têm um barramento SPI compatível com a plataforma SPB. Entre em contato com o fabricante do sistema para determinar se o barramento SPI em seu sistema de dispositivos é compatível com a plataforma SPB.

O driver do controlador GPIO

O controlador gpio (entrada/saída) de Uso Geral entrega interrupções do dispositivo por GPIO. Geralmente, esse é um componente subordinado simples que usa pinos GPIO para sinalizar o Windows de novos dados ou outros eventos. O GPIO também pode controlar o dispositivo por abordagens diferentes do canal SPI.

O hub de recursos

As conexões em uma plataforma SoC normalmente não são detectáveis, pois não há padrões para enumeração de dispositivos nos ônibus usados no SoC. Como resultado, esses dispositivos devem ser definidos estaticamente na ACPI (Advanced Configuration and Power Interface). Além disso, os componentes geralmente têm várias dependências que abrangem vários barramentos, em vez de uma estrutura de árvore de ramificação estrita.

O hub de recursos é um proxy que gerencia as conexões entre todos os dispositivos e controladores de barramento. O driver HIDSPI usa o hub de recursos para redirecionar solicitações de abertura de dispositivo para o driver do controlador apropriado. Para obter mais informações sobre o hub de recursos, consulte o tópico IDs de conexão para dispositivos conectados SPB .

Extensão de classe HIDSPI (HIDSPICx)

Para implementações que exigem maior desempenho ou integração, é possível que os fabricantes do sistema desenvolvam silício personalizado para processar transações HIDSPI. Para isso, a extensão de classe HIDSPICx é fornecida com o Windows. HIDSPICx permite o desenvolvimento de um driver de controlador HIDSPI HWA personalizado sem usar SpbCx.

Para dispositivos HWA, o fornecedor fornece um driver de cliente responsável por implementar a interface definida pela extensão de classe e se comunicar com a extensão de classe.

A pilha de driver HIDSPICx e HWA.