Поставщики шины

Windows имеет встроенные API UWP, которые предоставляют прямой доступ к шинам GPIO, SPI или I2C. Это обеспечивает очень простой доступ к этому оборудованию из высокоуровневого API. Однако бывают случаи, когда производитель устройств хочет использовать контроллер вне SoC для доступа к шине. Это может быть так же просто, как дешевый чип, который добавляет 16 контактов GPIO, или как богатый, как полный MCU, который не только добавляет GPIO, SPI и I2C контакты, но и поддерживает PWM и ADC. С помощью модели "Поставщик шины" мы предоставляем разработчикам возможность доступа к этим шинам вне SoC с помощью встроенных API с помощью поставщика пользовательского режима, который устраняет разрыв.

Кто-то создает поставщик, реализует набор интерфейсов в библиотеке классов 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
  • ШИМ

    • PCA9685
    • Имитация с помощью Gpio

Помимо поставщиков, которые предоставляют вам доступ к реальному оборудованию, мы создали имитированный поставщик , который будет действовать так, как если бы он был поставщиком с неограниченными возможностями и предназначен для написания и отладки приложений без необходимости предварительно развертывать их на работающем устройстве. Для более широких возможностей вы можете настроить его для имитации фактического оборудования. Например: обновление поставщика I2c для возврата результата "75" при отправке ему команды для измерения температуры на устройстве с назначенным вторичным адресом.

Дополнительные ресурсы

Дополнительные средства шины, примеры кодов, сборка и тестирование на I2C, SPI, GPIO, MinComm/UART можно найти здесь.

Ознакомьтесь с среда выполнения Windows API (WinRT) и вот как использовать API из приложений Win32.

Проверка поставщиков шины Windows