Краткий ответ
Нет, ты (почти) нет. На самом деле все наоборот - их нужно настраивать не для GPIO, а для выполнения их специальных задач. Единственным исключением являются контакты UART. Также и I²C контакты как-то особенные.
Контакты UART
Выводы UART используются ядром для консоли. Вам нужно будет настроить систему так, чтобы они не использовались, если вы хотите, чтобы они были доступны для вашего использования:
- редактировать
/boot/cmdline.txt
и удалять console=ttyAMA0,115200
и kgdboc=ttyAMA0,115200
параметры
отредактируйте /etc/inittab
и закомментируйте (поставьте #
перед ним символ) строку:
T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
перезагрузите свой RaspberryPi
Теперь контакты не должны использоваться системой, и вы можете использовать их
I²C контакты
На выводы I²C установлены встроенные нагрузочные резисторы 1,8 кОм. Они не могут быть отключены. Это ограничивает использование этих выводов в некоторых ситуациях (но может быть удобно в других).
Дополнительные решения
Если у вас мало контактов GPIO, иногда вы можете легко увеличить его число, используя дополнительное (но простое) оборудование. Например, для вывода можно использовать shift registers
или I²C I/O expanders
(также называемый расширителем шины I²C), который легко купить и использовать. Вы можете найти пример его использования здесь .
PFC8574
(или аналогичные из этого семейства) настолько популярны, что есть готовый модуль ядра, который обрабатывает все коммуникации для вас ( он не включен в официальном ядре RaspberryPi, вам нужно будет скомпилировать собственное ядро, чтобы использовать его ). Модуль называется gpio_pcf857x
, при условии, что вы загрузили его modprobe
(вместе с драйверами I²C) и что у вас есть чип, подключенный к I²C
шине, вы можете активировать его следующим образом:
echo pcf8574 0x27 > /sys/class/i2c-adapter/i2c-0/new_device
где pcf8574
- ваше реальное имя чипа (этот модуль может обрабатывать несколько различных чипов, таких как pca967x
и max732x
) и 0x27
его адрес I²C
(вы можете настроить адрес чипа при его подключении).
Это создаст записи в /sys/class/gpio/
каталоге, которые позволят вам использовать их так же, как и другие порты GPIO в RaspberryPi, при условии, что вы используете sys
интерфейс (например, wiringPiSetupSys()
в wiringPi). К сожалению, RPi.GPIO
модуль Python не поддерживает этот режим, поэтому он не сможет использовать эти контакты с этой библиотекой. Контакты будут иметь несколько больших чисел, таких как 248-255 или аналогичные.
Примечание: PCF8574
is sinking current
- он может дать потребителю накопитель (принять в низком состоянии) до 20 мА, но он может выдавать только 0,1 мА в высоком состоянии. Это означает , что вы обычно собираетесь использовать его в обратном логике, то есть +3.3V -> LED -> RESISTOR -> PCF8574_PIN
.