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 .
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?
quelle
Antworten:
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.
quelle