Kann Header Pin 11 als GPIO17 in Windows 10 IoT verwendet werden?

7

Ich habe eine Energenie RF-Sender-Zusatzkarte, die auf den Raspberry Pi-Header passt (weitere Informationen finden Sie unter https://energenie4u.co.uk/res/pdfs/ENER314%20UM.pdf ). Mit dieser Karte kann der Raspberry Pi bis zu 4 Energenie-Funksteckdosen steuern. Ich habe es erfolgreich auf einem Raspberry Pi B zum Laufen gebracht, auf dem Raspbian ausgeführt wird, mit einem einfachen Python-Skript, um die verwendeten 6x GPIO-Pins zu drehen. Die verwendeten GPIO-Pins sind:

  • GPIO17 (Header Pin 11)
  • GPIO27 (Header Pin 13)
  • GPIO22 (Header Pin 15)
  • GPIO23 (Header Pin 16)
  • GPIO24 (Header Pin 18)
  • GPIO25 (Header Pin 22)

Ich habe Windows 10 IoT auf Raspberry Pi 2 ausprobiert und es erfolgreich geschafft, eine grundlegende blinkende LED mit GPIO5 (Header-Pin 29) auszuführen, was beweist, dass GPIO funktioniert, und bestätigt, dass die Windows GPIO-API anstelle der logischen GPIO-Nummerierung verwendet physikalische Pin-Nummerierung.

Ich versuche jetzt, das Energenie-Board mit Windows 10 IoT zu verwenden und habe ein Problem mit GPIO17 (Header-Pin 11). Ich benutze den folgenden Code, um einen Pin zu öffnen:

private GpioPin openPinForOutput(GpioController gpioController, int pinNumber)
{
    if (gpioController == null)
    {
        Debug.WriteLine("GPIO Controller is null");
        return null;
    }

    GpioPin pin = null;
    GpioOpenStatus status = GpioOpenStatus.PinOpened;

    bool success = gpioController.TryOpenPin(pinNumber, GpioSharingMode.Exclusive, out pin, out status);

    Debug.WriteLine("GPIO pin {0} status: {1}", pinNumber, status);

    return pin;
}

Wenn ich diese Methode für die erforderlichen GPIO-Pins aufrufe, erhalte ich die folgende Ausgabe:

GPIO pin 17 status: PinUnavailable
GPIO pin 22 status: PinOpened
GPIO pin 23 status: PinOpened
GPIO pin 27 status: PinOpened
GPIO pin 24 status: PinOpened
GPIO pin 25 status: PinOpened

Ich habe mir dann GPIO17 (physischer Pin 11) genauer angesehen und festgestellt, dass laut https://ms-iot.github.io/content/en-US/win10/samples/PinMappingsRPi2.htm der physische Pin 11 laut SPI1 CS0 ist .

https://ms-iot.github.io/content/images/PinMappings/RP2_Pinout.png

Gibt es eine Möglichkeit, den physischen Pin 11 als GPIO17 in Windows 10 IoT zurückzugewinnen, oder stecken wir nur fest, dass er permanent für SPI1 CS0 konfiguriert ist?

Swampie
quelle
Das Diagramm ist nicht Windows-spezifisch. GPIO 17 ist SPI1 CS0, unabhängig davon, ob Sie Raspbian oder Windows IoT verwenden. Selbst in Raspbian verhindern Konfigurationsänderungen, z. B. die Verwendung von 1 Draht, dass einige Pins als Allzweck-E / A funktionieren. Möglicherweise können Sie das Verhalten des Pins ändern, indem Sie eine Konfigurationsänderung wie in Raspbian vornehmen.
Panagiotis Kanavos
PS. Fand das in Raspbian heraus, als ich eine LED an einen Pin anschloss, den ich zuvor für 1-Wire
Panagiotis Kanavos
Windows oder eine der aktiven Aufgaben hat SPI1 bereits geöffnet. Ich versuche immer noch herauszufinden, wer und warum. Es steht mir auch im Weg.
Ron
Als ich nachgesehen habe, habe ich Folgendes gefunden: developer.microsoft.com/en-us/windows/iot/docs/pinmappingsrpi
David C.
Und Ihr Link leitet mich einfach zu meinem Link weiter.
David C.

Antworten:

0

Es scheint, dass Microsoft jetzt Pin Muxing-Unterstützung hinzugefügt hat. Wie von David C hervorgehoben - mein Link oben wurde mit folgendem aktualisiert:

"Einige GPIO-Pins können mehrere Funktionen ausführen. Standardmäßig sind Pins als GPIO-Eingänge konfiguriert. Wenn Sie eine alternative Funktion durch Aufrufen von I2cDevice.FromIdAsync () oder SpiDevice.FromIdAsync () öffnen, werden die für die Funktion erforderlichen Pins automatisch umgeschaltet (" muxed ”) auf die richtige Funktion. Wenn das Gerät durch Aufrufen von I2cDevice.Dispose () oder SpiDevice.Dispose () geschlossen wird, kehren die Pins zu ihrer Standardfunktion zurück."

Ich stelle auch fest, dass GPIO17 (Pin 11) jetzt standardmäßig auf GPIO eingestellt ist. Es sieht also so aus, als ob mein ursprüngliches Problem jetzt behoben wurde.

Swampie
quelle