Raspberry Pi:Библиотеки/WiringPi/Контакты
Содержание | Введение | Продукты | Операционная система | Настройка | Основы Linux | Аппаратные средства | Неисправности | Типовые проблемы | Часто возникающие вопросы | Библиотеки | Примеры |
Черновик |
Контакты[1]
Распиновка GPIO-портов на BCM2835 всегда была очень запутанной. В самом начале (еще до того, как выпустили самую первую Pi) доступные для использования GPIO-контакты назывались просто GPIO0, GPIO1 и т.д. до GPIO7. Кроме того, на Pi были контакты для других целей: интерфейсы SPI, I2C и последовательная коммуникация (Serial).
Итак, начав работать над WiringPi, я выбрал ту же схему контактов, пронумеровав их с «0» и дальше. Это работает примерно по тому же принципу, что и в Arduino: к примеру, «контакт 13» на Arduino – это порт B, бит 5. То есть базовый понятийный аппарат как бы спрятан под обозначениями, более понятными для простого пользователя. К примеру, в схеме, которую использует WiringPi, 0-ой контакт обозначает 17-ый контакт в схеме BCM_GPIO.
Более подробно и в картинках читайте на этой странице.
Тем не менее, многим моя схема показалась «неправильной», но я к ней привык (поскольку многие продолжают пользоваться WiringPi), и она уже доказала свою эффективность – в разных версиях Pi некоторые контакты имеют разное назначение, но в WiringPi уже встроен код, который эту разность сводит на нет. В результате пользователю уже не приходится иметь дело со всей этой путаницей. К примеру, у вас есть программа, которую вы раньше использовали для Pi версии 1, но теперь хотите проапдейтить до Pi версии 2. Если в коде используется схема WiringPi, то 2-ой контакт будет иметь одинаковые функции и на Pi версии 1, и на Pi версии 2. Однако если в коде используется схема BCM_GPIO, то 21-ый контакт (версия 1) нужно будет поменять на 27-ой контакт (версия 2).
Таким образом, WiringPi использует сразу несколько схем для обозначения контактов (распиновок) – помимо собственной, схему BCM_GPIO и схему с «физическими» номерами (только для коннектора P1). Впрочем, я бы все же посоветовал придерживаться схемы WiringPi. Благодаря этому ваши программы можно будет портировать между разными версиями Pi, не внося в них никаких изменений.
Таблицы ниже показывают, как контакты GPIO-коннектора Pi соотносятся со схемой WiringPi и схемой номеров, обозначающих «физическое» положение контактов на коннекторе. Это репрезентация GPIO-коннектора, как если бы вы смотрели на плату сверху. GPIO-коннектор находится в правой верхней части платы, а сокеты для Ethernet и USB – внизу.
Примечание: Обратите внимание на отличия между Pi в версиях 1 и 2. Внешне 2-ая версия Pi отличается наличием двух крепежных отверстий.
Коннектор P5 устроен таким образом, чтобы к нему (с обратной стороны платы) можно было припаять гребешок. Контакт 1 можно определить по квадратной припаечной площадке. Таким образом, если вы припаяете гребешок на лицевую сторону платы, то имейте в виду, что порядок контактов будет инвертированным.
PDF-версии этих таблиц (для печати) можно найти тут.
Новую Pi оснастили новым 40-контактным GPIO-коннектором, и в продаже, кроме того, есть вычислительные модули. Самый лучший способ узнать о назначении GPIO-контактов независимо от платы, которую вы используете – это воспользоваться командой gpio:
gpio readall
Это даст вам полную картину GPIO-коннекторов на Pi со всеми имеющимися схемами (распиновками).
Специальные функции контактов[2]
Библиотека WiringPi использует 17 контактов (на Pi версии 2 – 21 контакт), но некоторые из них (и функции, которые можно через них использовать) могут конфликтовать с другими элементами Linux-системы Raspberry Pi.
- Контакты 0, 1, 2, 3, 4, 5 и 6. На схеме BCM_GPIO – контакты 17, 18, 21, 22, 23, 24 и 25 (Pi версии 1) или контакты 21, 22, 23, 24, 25, 26 и 27 (Pi версии 2). Эти контакты максимально универсальны. Их можно задать и входными, и выходными. Им можно включить и подтягивающие, и стягивающие резисторы.
- Контакт 7. На схеме BCM_GPIO – контакт 4. Как правило, проблем с его использованием не возникает, но он также используется драйвером ядра для шины 1-Wire и опционально может быть подключен к тактовому генератору GPIO.
- ШИМ. Вы можете поменять функцию контакта 1 (на схеме BCM_GPIO – контакт 18), сделав его выходным контактом, осуществляющим выдачу ШИМ. Но если вы в данный момент проигрываете музыку или используете аудиосистему (через 3,5-миллиметровый разъем), то можете обнаружить, что один звуковой ШИМ-канал идет как раз через этот контакт! Впрочем, если вы никакого аудио не используете (или если аудио идет через кабель HDMI), то этот контакт можно совершенно спокойно использовать в режиме ШИМ.
- Контакты 8 и 9. На схеме BCM_GPIO – 0 и 1 (Pi версии 1) или 2 и 3 (Pi версии 2). Это контакты для шины I2C. Если вы не используете драйверов для I2C, которые используют эти контакты, их можно использовать для ввода/вывода цифровых данных. Но учтите, что они оснащены резисторами на 1,8 кОм, которые притягивают сигнал к 3,3 вольтам. Благодаря этому их удобно использовать в качестве входных контактов, подключенных к переключателям, где переключатель просто замыкает контакт на «земле», и вам не нужно включать встроенные подтягивающие резисторы.
- Контакты 10, 11, 12, 13 и 14. На схеме BCM_GPIO – контакты 8, 7, 10, 9 и 11. Это контакты для интерфейса SPI. Если вы не используете драйверов для SPI, которые используют эти контакты, их можно использовать для ввода/вывода цифровых данных. Но учтите, что они оснащены резисторами на 1,8 кОм, которые притягивают сигнал к 3,3 вольтам. Благодаря этому их удобно использовать в качестве входных контактов, подключенных к переключателям, где переключатель просто замыкает контакт на «земле», и вам не нужно включать встроенные подтягивающие резисторы.
- Контакты 15 и 16. На схеме BCM_GPIO – 14 и 15. Это контакты для UART: для линий, соответственно, TX и RX. Если вы хотите использовать их в качестве GPIO-контактов, вам нужно убедиться, что вы перезагрузили Pi с выключенной последовательной консолью. Далее смотрите файл «/boot/cmdline.txt» и отредактируйте его надлежащим образом.
- Контакты 17, 18, 19 и 20. На схеме BCM_GPIO – 28, 29, 30 и 31. Это дополнительные GPIO-контакты, появившиеся на Pi версии 2.
Внимание! Raspberry Pi – это девайс, работающий на 3,3 вольтовой логике! Попытка подключить его напрямую к 5 вольтам, скорее всего, закончится плачевно...