总线提供程序

Windows 具有内置的 UWP API,可提供对 GPIO、SPI 或 I2C 总线的直接访问。 这样就可以从高级别 API 轻松访问此硬件。 但是在许多情况下,设备制造商希望使用 SoC 外的控制器来访问总线。 它可以很简单,就像一个添加 16 个 GPIO 引脚的便宜芯片一样,也可以像完整 MCU 一样功能丰富,不仅添加 GPIO、SPI 和 I2C 引脚,还支持 PWM 和 ADC。 借助“总线提供程序”模型,开发人员能够使用可缩小这一差距的用户模式提供程序,通过内置 API 访问这些 SoC 外的总线。

构建提供程序的用户在 UWP 类库中实现了一组接口,然后需要与该硬件通信的任何开发人员都只需包含该组件,并将其告知内置 API 即可。 如果查看远程提供程序的示例代码,可以看到配置提供程序是多么容易,并且一旦设置为该应用的默认提供程序,客户端应用中的其余代码就会与访问 SoC 上的总线所需的代码相同。

Providers.Provider.Configuration =
    new Providers.ConnectionConfiguration("VID_2341", "PID_0043", 57600);
Windows.Devices.LowLevelDevicesController.DefaultProvider =  new Providers.Provider();

gpioController = await GpioController.GetDefaultAsync();
i2cController = await I2cController.GetDefaultAsync();
adcController = await AdcController.GetDefaultAsync();
pwmController = await PwmController.GetDefaultAsync();

GpioPin pin = gpioController.OpenPin(LED_PIN, GpioSharingMode.Exclusive);`

可用提供程序

目前,总线提供程序 GitHub 存储库上提供了许多提供程序。 除了提供程序的代码外,每个提供程序都有一个示例 VS 解决方案,它演示了客户端如何使用该提供程序。

  • ADC

    • Ads1x15
    • Mcp3008
  • PWM

    • PCA9685
    • 使用 Gpio 模拟

除了提供真实硬件访问权限的提供程序外,我们还构建了一个模拟提供程序,它将充当功能无限的提供程序,旨在让你在无需先将应用程序部署到工作设备的情况下编写和调试这些应用。 若要获得更丰富的体验,可对其进行自定义来模拟实际硬件。 例如:更新 I2c 提供程序,以便在向其发送命令,要求其在具有指定次要地址的设备上读取温度时,返回结果“75”。

其他资源

可在此处找到 I2C、SPI、GPIO、MINCOMM/UART 上的其他总线工具、示例代码以及生成和测试。

请参阅 Windows 运行时 (WinRT) API,此处介绍了如何使用 Win32 应用程序中的 API。

查看Windows 总线提供程序