Krótka odpowiedź
Nie, ty (prawie) nie. W rzeczywistości jest na odwrót - musisz skonfigurować je tak, aby nie były GPIO, ale aby spełniały swoje specjalne zadanie. Jedynym wyjątkiem są piny UART. Także i szpilki I²C są w jakiś sposób wyjątkowe.
Piny UART
Piny UART są używane przez jądro konsoli. Będziesz musiał skonfigurować system, aby ich nie używał, jeśli chcesz, aby były dostępne do użytku:
Teraz szpilki nie powinny być używane przez system i możesz ich używać
Piny I²C
Piny I²C mają zainstalowane rezystory podciągające 1,8k. Nie można ich wyłączyć. Ogranicza to użycie pinów w niektórych sytuacjach (ale może być przydatne w innych).
Dodatkowe rozwiązania
Jeśli brakuje pinów GPIO, czasem możesz łatwo zwiększyć jego liczbę, używając dodatkowego (ale prostego) sprzętu. Na przykład, możesz użyć shift registerslub I²C I/O expanders(zwanego także ekspanderem magistrali I²C), które można łatwo kupić i użyć. Przykład jego użycia można znaleźć tutaj .
PFC8574(lub podobne z tej rodziny) są tak popularne, że istnieje gotowy do użycia moduł jądra, który obsługuje całą komunikację za Ciebie ( nie jest włączony w oficjalnym jądrze RaspberryPi, musisz skompilować własne jądro, aby z niego korzystać ). Moduł jest wywoływany gpio_pcf857x, pod warunkiem, że załadowałeś go modprobe(wraz ze sterownikami I²C) i że masz układ podłączony do I²Cmagistrali, możesz go aktywować w następujący sposób:
echo pcf8574 0x27 > /sys/class/i2c-adapter/i2c-0/new_device
gdzie pcf8574jest twoja rzeczywista nazwa układu (ten moduł może obsłużyć kilka różnych układów takich jak pca967xi max732x) i 0x27jego adres jest włączony I²C(możesz skonfigurować adres układu podczas jego okablowania).
Spowoduje to utworzenie wpisów w /sys/class/gpio/katalogu, które umożliwią korzystanie z nich w taki sam sposób, jak innych portów GPIO w RaspberryPi, pod warunkiem, że korzystasz z sysinterfejsu (na przykład wiringPiSetupSys()w wiringPi). Niestety RPi.GPIOmoduł Pythona nie obsługuje tego trybu, więc nie będzie mógł używać tych pinów z tą biblioteką. Piny będą miały pewne wysokie liczby, takie jak 248-255 lub podobne.
Uwaga: PCF8574 jest sinking current- może dać odchylenie napędu (akceptacja w stanie niskim) aż do 20 mA, ale może uzyskać tylko 0,1 mA w stanie wysokim. Oznacza to, że zwykle będziesz używać go w odwrotnej logice, tj +3.3V -> LED -> RESISTOR -> PCF8574_PIN.