버스 공급자

Windows에는 GPIO, SPI 또는 I2C 버스에 직접 액세스할 수 있는 기본 제공 UWP API가 있습니다. 이렇게 하면 상위 수준 API에서 이 하드웨어에 매우 쉽게 액세스할 수 있습니다. 그러나 디바이스 제조업체가 Off-SoC 컨트롤러를 사용하여 버스에 액세스하려고 하는 경우가 많습니다. 16개의 GPIO 핀을 추가하는 저렴한 칩처럼 간단하거나 GPIO, SPI 및 I2C 핀을 추가할 뿐만 아니라 PWM 및 ADC를 지원하는 전체 MCU만큼 풍부할 수 있습니다. "버스 공급자" 모델을 사용하면 개발자에게 격차를 해소하는 사용자 모드 공급자를 사용하여 기본 제공 API를 사용하여 이러한 오프-SoC 버스에 액세스할 수 있는 기능을 제공합니다.

공급자를 빌드하는 사람은 UWP 클래스 라이브러리에 인터페이스 집합을 구현한 다음, 해당 하드웨어와 통신하려는 개발자는 구성 요소를 포함하고 해당 구성 요소에 대해 기본 제공 API에 알릴 뿐입니다. 원격 공급자의 샘플 코드를 살펴보면 공급자를 구성하는 것이 얼마나 쉬운지 확인할 수 있으며, 해당 앱의 기본 공급자로 설정되면 클라이언트 앱의 나머지 코드는 On-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를 사용하여 시뮬레이션됨

실제 하드웨어에 대한 액세스 권한을 제공하는 공급자 외에도 무한 지원 공급자인 것처럼 작동하며 애플리케이션을 먼저 작업 디바이스에 배포하지 않고도 애플리케이션을 작성하고 디버그할 수 있도록 설계된 시뮬레이션된 공급자를 빌드했습니다. 더 풍부한 환경을 위해 실제 하드웨어를 시뮬레이션하도록 사용자 지정할 수 있습니다. 예를 들어 지정된 보조 주소가 있는 디바이스에서 온도 판독 명령을 보낼 때 결과 "75"를 반환하도록 I2c 공급자를 업데이트합니다.

추가 리소스

I2C, SPI, GPIO, MinComm/UART에 대한 추가 버스 도구, 샘플 코드 및 빌드 및 테스트는 여기에서 찾을 수 있습니다.

WinRT(Windows 런타임) API를 참조하세요. Win32 애플리케이션에서 API를 활용하는 방법은 다음과 같습니다.

Windows Bus 공급자 검토