0

We have graduated from our prototype on Raspberry Pi3 to a custom designed board using the Raspberry Pi Compute Module 3 Lite (CM3L).

Now that the GPIO and peripheral devices have been verified with Raspbian when we run Windows IoT Core I cannot access any of the GPIO in the second bank (bank 1) GPIO28-45.

The runtime correctly identifies 54 GPIO pins from the device, but I cannot open any of the pins after 27. Is there some kind of driver specific to the compute module or are there registry keys that need to be defined to enable user access to these GPIO?

The following C# code tries to connect to and enumerate the GPIO pins:

var gpio = Windows.Devices.Gpio.GpioController.GetDefault();
System.Diagnostics.Trace.WriteLine(String.Format("GPIO Pins: {0}", gpio.PinCount));
for(int pin = 0; pin < gpio.PinCount; pin ++)
{
    if(gpio.TryOpenPin(pin, GpioSharingMode.Exclusive, out GpioPin gpioPin, out GpioOpenStatus openStatus))
        System.Diagnostics.Trace.WriteLine(
            String.Format("GPIO {0}: Open - {1}", pin, openStatus));
    else if (gpio.TryOpenPin(pin, GpioSharingMode.SharedReadOnly, out gpioPin, out openStatus))
        System.Diagnostics.Trace.WriteLine(
            String.Format("GPIO {0}: Shared - {1}", pin, openStatus));
    else
        System.Diagnostics.Trace.WriteLine(
            String.Format("GPIO {0}: Closed - {1}", pin, openStatus));
}

But all I can open are GPIO2-13, 16-27 pins from the first bank in the compute module, that matches the GPIO from the Raspberry Pi 3.

GPIO Pins: 54
GPIO 0: Closed - PinUnavailable
GPIO 1: Closed - PinUnavailable
GPIO 2: Open - PinOpened
GPIO 3: Open - PinOpened
GPIO 4: Open - PinOpened
GPIO 5: Open - PinOpened
GPIO 6: Open - PinOpened
GPIO 7: Open - PinOpened
GPIO 8: Open - PinOpened
GPIO 9: Open - PinOpened
GPIO 10: Open - PinOpened
GPIO 11: Open - PinOpened
GPIO 12: Open - PinOpened
GPIO 13: Open - PinOpened
GPIO 14: Closed - PinUnavailable
GPIO 15: Closed - PinUnavailable
GPIO 16: Open - PinOpened
GPIO 17: Open - PinOpened
GPIO 18: Open - PinOpened
GPIO 19: Open - PinOpened
GPIO 20: Open - PinOpened
GPIO 21: Open - PinOpened
GPIO 22: Open - PinOpened
GPIO 23: Open - PinOpened
GPIO 24: Open - PinOpened
GPIO 25: Open - PinOpened
GPIO 26: Open - PinOpened
GPIO 27: Open - PinOpened
GPIO 28: Closed - PinUnavailable
GPIO 29: Closed - PinUnavailable
GPIO 30: Closed - PinUnavailable
GPIO 31: Closed - PinUnavailable
GPIO 32: Closed - PinUnavailable
GPIO 33: Closed - PinUnavailable
GPIO 34: Closed - PinUnavailable
GPIO 35: Closed - PinUnavailable
GPIO 36: Closed - PinUnavailable
GPIO 37: Closed - PinUnavailable
GPIO 38: Closed - PinUnavailable
GPIO 39: Closed - PinUnavailable
GPIO 40: Closed - PinUnavailable
GPIO 41: Closed - PinUnavailable
GPIO 42: Closed - PinUnavailable
GPIO 43: Closed - PinUnavailable
GPIO 44: Closed - PinUnavailable
GPIO 45: Closed - PinUnavailable
GPIO 46: Closed - PinUnavailable
GPIO 47: Closed - PinUnavailable
GPIO 48: Closed - PinUnavailable
GPIO 49: Closed - PinUnavailable
GPIO 50: Closed - PinUnavailable
GPIO 51: Closed - PinUnavailable
GPIO 52: Closed - PinUnavailable
GPIO 53: Closed - PinUnavailable

UPDATE

I have been referred to the IoT Core Board Support Package but I'm not sure that is going to help, the GPIO driver seems to be operating correctly, but it's like there is a config file somewhere that tells it which pins are available that I need to update.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.