基于 SPI 的 HID 传输的体系结构和概述

本部分介绍支持通过 SPI 传输的 HID 的设备驱动程序堆栈。

体系结构和概述

HID SPI 驱动程序堆栈由 Microsoft 提供的现有组件和新组件以及 SPI 芯片制造商提供的组件组成。 下图描绘了堆栈和这些组件。

基于 SPI 的 HID 驱动程序堆栈。

Windows 为低功率的简单总线提供了一个接口,以便与操作系统有效通信。 此接口称为简单外围总线 (SPB) ,它支持 Inter-Integrated Circuit (I2C) 和串行外设接口 (SPI) 等总线。 有关 SPB 的其他详细信息,请参阅 简单外围总线 (SPB) 主题。

Windows 提供基于 KMDF 的 HID 微型端口驱动程序,该驱动程序实现基于 SPI 的 HID 协议规范的 1.0 版。 此驱动程序名为 HIDSPI.sys。 Windows 基于兼容的 ID 匹配项加载此驱动程序,该匹配项由高级配置和电源接口 (ACPI) 公开。 系统集成商可以使用扩展 INF 基于其外围设备的硬件 ID 加载此驱动程序。 该驱动程序确保使用 HID IOCTL 的应用与利用 HID IOCTL 和 API 集的软件的应用程序级别兼容性。 向驱动程序提供 GPIO 连接,使设备能够在需要注意或具有数据时断言中断。

注意

HIDSPI.sys 设备驱动程序仅支持 SPI 总线。 它在 Windows 中不支持 I2C、SMBUS 或其他低功率总线。

SPI 控制器驱动程序

SPI 控制器驱动程序公开串行外设总线 (SPB) IOCTL 接口以执行读取和写入操作。 此驱动程序提供实际的控制器内部函数 (,例如 SPI) 。 SPB 类扩展代表控制器驱动程序处理与资源中心的所有交互,并实现管理同时目标所需的队列。

注意

在没有与 SPB 平台兼容的 SPI 总线的系统上,HID SPI 驱动程序将无法正常工作。 请联系系统制造商,确定设备系统上的 SPI 总线是否与 SPB 平台兼容。

GPIO 控制器驱动程序

常规用途输入/输出 (GPIO) 控制器通过 GPIO 从设备传送中断。 这通常是一个简单的从属组件,它使用 GPIO 引脚向 Windows 发出新数据或其他事件的信号。 GPIO 还可以通过 SPI 通道以外的方法控制设备。

资源中心

SoC 平台上的连接通常是不可发现的,因为 SoC 上使用的总线上的设备枚举没有标准。 因此,必须在高级配置和电源接口 (ACPI) 中静态定义这些设备。 此外,组件通常具有跨越多个总线的多个依赖项,而不是严格的分支树结构。

资源中心是管理所有设备和总线控制器之间的连接的代理。 HIDSPI 驱动程序使用资源中心将设备打开的请求重新路由到相应的控制器驱动程序。 有关资源中心的详细信息,请参阅 SPB 连接设备的连接 ID 主题。

HIDSPI 类扩展 (HIDSPICx)

对于需要更高性能或集成的实现,系统制造商可以开发用于处理 HIDSPI 事务的自定义芯片。 为此,WINDOWS 随附了 HIDSPICx 类扩展。 HIDSPICx 允许在不使用 SpbCx 的情况下开发自定义 HIDSPI HWA 控制器驱动程序。

对于 HWA 设备,供应商提供一个客户端驱动程序,负责实现类扩展定义的接口,并与类扩展通信。

HIDSPICx 和 HWA 驱动程序堆栈。