基于 SPI 的 HID 传输的体系结构和概述
本文介绍支持通过 SPI 传输的 HID 的设备驱动程序堆栈。
体系结构和概述
HID SPI 驱动程序堆栈由Microsoft提供的现有和新组件以及 SPI 硅制造商提供的组件组成。 下图描述了堆栈和这些组件。
Windows 提供一个接口,用于低功率、简单的总线,以便与操作系统有效通信。 此接口称为简单的外围总线(SPB),它支持总线,如集成电路(I2C)和串行外围接口(SPI)。 有关 SPB 的其他详细信息,请参阅 简单外围总线 (SPB) 主题。
Windows 提供基于 KMDF 的 HID 微型端口驱动程序,用于实现基于 SPI 的 HID 协议规范版本 1.0。 此驱动程序HIDSPI.sys命名。 Windows 基于兼容的 ID 匹配(由高级配置和电源接口(ACPI)公开)加载此驱动程序。 系统集成商可以使用扩展 INF 根据外围设备的硬件 ID 加载此驱动程序。 驱动程序确保对利用 HID IOCTL 和 API 集的软件使用 HID IOCTLs 应用程序级别兼容性的应用。 向驱动程序提供 GPIO 连接,这样设备就可以在需要注意或具有数据时断言中断。
注意
HIDSPI.sys设备驱动程序仅支持 SPI 总线。 它不支持 Windows 中的 I2C、SMBUS 或其他低功率总线。
SPI 控制器驱动程序
SPI 控制器驱动程序公开串行外围总线 (SPB) IOCTL 接口以执行读写操作。 此驱动程序提供实际的控制器内部函数(例如 SPI)。 SPB 类扩展代表控制器驱动程序处理与资源中心的所有交互,并实现必要的队列来管理同时的目标。
注意
HID SPI 驱动程序在没有与 SPB 平台兼容的 SPI 总线的系统上不起作用。 请联系系统制造商,以确定设备系统上的 SPI 总线是否与 SPB 平台兼容。
GPIO 控制器驱动程序
常规用途输入/输出(GPIO)控制器通过 GPIO 从设备传递中断。 这通常是一个简单的从属组件,它使用 GPIO 引脚来向 Windows 发出新数据或其他事件的信号。 GPIO 还可以通过 SPI 通道以外的方法控制设备。
资源中心
SoC 平台上的连接通常不可发现,因为 SoC 上使用的总线上没有设备枚举的标准。 因此,必须在高级配置和电源接口(ACPI)中静态定义这些设备。 此外,组件通常具有跨越多个总线的多个依赖项,而不是严格的分支树结构。
资源中心是管理所有设备和总线控制器之间的连接的代理。 HIDSPI 驱动程序使用资源中心将设备打开的请求重新路由到相应的控制器驱动程序。 有关资源中心的详细信息,请参阅 SPB 连接设备 的连接 ID 主题。
HIDSPI 类扩展 (HIDSPICx)
对于需要更高性能或集成的实现,系统制造商可以开发用于处理 HIDSPI 事务的自定义硅。 为此,HIDSPICx 类扩展随 Windows 一起提供。 HIDSPICx 允许在不使用 SpbCx 的情况下开发自定义 HIDSPI HWA 控制器驱动程序。
对于 HWA 设备,供应商提供一个客户端驱动程序,负责实现类扩展定义的接口,并与类扩展通信。