GPIO
GPIO (англ. General Purpose Input/Output) — порты ввода-вывода, широко используемые в мире микроконтроллеров, особенно в области встраиваемой электроники, появившиеся в начале 1980-х годов[1]. Они размещаются на электронной схеме для связи с внешними электронными компонентами и схемами. Это могут быть датчики для сбора данных или устройства управления.
Использование
Разъём GPIO предоставляет электронной плате возможность взаимодействовать с другими электронными схемами. GPIO широко применяется в областях информатика, в первую очередь встраиваемых систем, электроники, автоматизации, числового управления и робототехники.
В 1980-е годы существовали специальные интерфейсные платы для этих портов.
В первую очередь GPIO присутствует на платах с микроконтроллерами, таких как Arduino с Atmel AVR, а также на схожих платах (PCDuino) или некоторых отладочных платах на DSP, например STM32 Nucleo от ST Microelectronics, также совместимых с Arduino[2], или на самих DSP, например TMS320C6474 от Texas Instruments[3], которые интегрируют специальные разъёмы или инструкции для GPIO. Raspberry Pi оснащён разъёмом GPIO[4] с первой версии, что позволяет использовать его как в качестве персонального компьютера, так и как контроллер для чисто электронных приложений, например, как Stellaris Launchpad[5].
Большинство одноплатных компьютеров, ориентированных на разработку, таких как Arndale Board, Banana Pi, BeagleBoard, Cubieboard, Firefly, Odroid, OLinuXino также оснащаются рядами разъёмов GPIO.
Рынок одноплатных компьютеров и микроконтроллеров постоянно пополняется новыми платформами, предлагающими различные конфигурации и возможности GPIO.
Ключевым событием 2017 года в области одноплатных компьютеров стал выпуск Raspberry Pi Zero W 28 февраля. Эта плата, являясь развитием модели Raspberry Pi Zero, сохранила её компактные размеры, но получила важное нововведение — встроенные модули Wi-Fi и Bluetooth. Наличие стандартного 40-контактного разъёма GPIO в сочетании с беспроводными интерфейсами значительно упростило и удешевило создание компактных сетевых проектов и IoT-устройств, что стало важным шагом в развитии DIY-электроники и прототипирования.
В целом, в 2017 году технология GPIO уже была зрелой и широко распространённой. Платформы Arduino (такие как Uno, Mega, Nano) оставались популярными для образовательных и любительских проектов, активно используя GPIO для взаимодействия с датчиками и исполнительными устройствами[6]. Для проектов, требующих большего количества контактов, чем предоставляли стандартные платы, активно применялись микросхемы-расширители портов, такие как MCP23017, работающие по интерфейсам I2C или SPI[7].
В 2018 году основной фокус в развитии аппаратных платформ с GPIO был сосредоточен на усовершенствовании существующих популярных линеек. 14 марта была представлена Raspberry Pi 3 Model B+, ставшая обновлением популярной Raspberry Pi 3 Model B[8]. Плата сохранила стандартный 40-контактный разъём GPIO, обеспечив совместимость с существующей периферией, но получила ряд улучшений: более быстрый процессор с тактовой частотой 1,4 ГГц, поддержку двухдиапазонного Wi-Fi, Bluetooth 4.2/BLE и более быстрый Ethernet[9]. В ноябре того же года вышла Raspberry Pi 3 Model A+, которая предложила процессор от модели 3B+ в более компактном форм-факторе, но с одним портом USB и без Ethernet-порта, сохранив при этом 40-контактный разъём GPIO[10].
Помимо аппаратных новинок, год был отмечен важным событием в мире микроконтроллеров. Компания STMicroelectronics приобрела коммерческую среду разработки Atollic TRUEStudio и сделала её полностью бесплатной[11]. Этот шаг значительно упростил и удешевил процесс разработки для инженеров и любителей, работающих с микроконтроллерами STM32, которые активно используют порты GPIO.
В то же время другие крупные игроки, такие как BeagleBone[12] и Arduino[9], не выпускали кардинально новых версий своих флагманских плат в 2018 году. Таким образом, год не принёс революционных изменений в саму технологию GPIO, но укрепил позиции Raspberry Pi на рынке и сделал разработку на базе микроконтроллеров STM32 более доступной.
2019 год был отмечен несколькими важными событиями в области одноплатных компьютеров и микроконтроллеров, связанными с использованием GPIO. Ключевыми новинками стали выпуск Raspberry Pi 4 Model B и микроконтроллера ESP32-S2.
Главным событием на рынке одноплатных компьютеров стал выпуск Raspberry Pi 4 Model B в июне 2019 года[13]. Новая модель принесла значительные аппаратные улучшения, сохранив при этом стандартный 40-контактный разъём GPIO, что обеспечило полную обратную совместимость с периферией от предыдущих моделей[14]. Существенный прирост производительности был достигнут за счёт 64-битного четырёхъядерного процессора ARM Cortex-A72 с частотой 1,5 ГГц и оперативной памяти LPDDR4 объёмом до 4 ГБ[14]. Улучшенные интерфейсы, такие как полноценный гигабитный Ethernet, два порта USB 3.0, поддержка двух 4K-мониторов, а также Bluetooth 5.0 и Wi-Fi 802.11ac, расширили возможности для создания сложных сетевых и мультимедийных проектов, управляемых через GPIO[13]. Одновременно с платой была выпущена новая версия операционной системы Raspbian Buster, основанная на Debian 10[15]. Тем не менее, после выпуска была обнаружена проблема с управлением питанием, из-за которой напряжение на контактах GPIO могло не опускаться до нуля, а «зависать» на уровне около 2,1 В[16].
В мире микроконтроллеров в 2019 году компания Espressif представила чип ESP32-S2. В отличие от двухъядерного ESP32, новая версия была построена на одном ядре, но её ключевой особенностью стало увеличенное количество контактов GPIO, что сделало её привлекательной для проектов, требующих подключения большого числа датчиков и исполнительных устройств.
В 2020 году семейство Raspberry Pi пополнилось двумя новыми платформами, основанными на Raspberry Pi 4. 19 октября был выпущен Raspberry Pi Compute Module 4 (CM4), предназначенный для промышленных и встраиваемых приложений[17]. Модуль выполнен в компактном форм-факторе и не имеет встроенных разъёмов GPIO, но предоставляет доступ к ним и другим интерфейсам (включая PCIe) через два разъёма высокой плотности на нижней стороне платы[17]. 2 ноября был представлен Raspberry Pi 400 — полноценный компьютер, интегрированный в клавиатуру. На его задней панели расположен стандартный 40-контактный разъём GPIO, что позволяет использовать его для проектов в области электроники и робототехники.
Рынок микроконтроллеров также пополнился новыми решениями. Компания Espressif представила микроконтроллер ESP32-C3, построенный на архитектуре RISC-V. Он оснащён 22 выводами GPIO, а также модулями Wi-Fi и BLE[18][19]. Также был анонсирован двухъядерный чип ESP32-S3 с поддержкой векторных инструкций для ускорения вычислений в области нейронных сетей.
Компания Microchip Technology анонсировала новые 8-битные семейства микроконтроллеров AVR-DA и AVR-DB, призванные заменить популярную линейку ATmega[20]. Серия AVR-DA отличается наличием высокопроизводительных аналоговых компонентов[21], а серия AVR-DB может работать при напряжении до 5 В для повышения помехоустойчивости и включает функцию Multi-Voltage I/O (MVIO), позволяющую напрямую взаимодействовать с устройствами, работающими в других доменах напряжения[22][23].
Главным событием 2021 года стал выход Raspberry Pi Foundation на рынок микроконтроллеров с собственным чипом RP2040 и платой Raspberry Pi Pico, представленными в январе[24]. Микроконтроллер RP2040, построенный на базе двухъядерного процессора ARM Cortex-M0+ с тактовой частотой 133 МГц, оснащён 30 многофункциональными выводами GPIO, четыре из которых могут использоваться как аналоговые входы[25]. Первая плата на его основе, Raspberry Pi Pico, была выпущена по цене около 4 долларов и имела 40-контактный разъём, но её недостатком отмечалось отсутствие встроенного Wi-Fi[24][26].
Выпуск RP2040 стимулировал рынок, и вскоре сторонние производители представили свои решения на его базе, часто с дополнительными функциями: Adafruit выпустила компактные платы QT Py и ItsyBitsy, а Pimoroni — Tiny RP2040 и Pico Lipo с возможностью зарядки аккумулятора. Компания Arduino представила плату Arduino Nano RP2040 Connect, которая на тот момент была единственной на базе RP2040 со встроенными модулями Wi-Fi и Bluetooth[24].
В том же году компания Espressif представила микроконтроллер ESP32-C6 на архитектуре RISC-V. Его особенностью стала поддержка Wi-Fi 6, BLE 5.0 и стандарта IEEE 802.15.4, что обеспечило нативную работу с протоколами Thread и Zigbee, расширяя возможности для IoT-устройств. В конце года был выпущен одноплатный компьютер Raspberry Pi Zero 2 W, который предложил значительно возросшую производительность в компактном форм-факторе, сохранив стандартный 40-контактный разъём GPIO и модули беспроводной связи[27].
2022 год был отмечен появлением новых аппаратных платформ с GPIO, основной тенденцией которых стала интеграция беспроводных интерфейсов и использование новых архитектур.
Ключевым событием стал выпуск в июне 2022 года Raspberry Pi Pico W — обновления оригинальной платы Raspberry Pi Pico. Главным нововведением стало добавление модуля Wi-Fi, что значительно расширило возможности применения платы в сфере Интернета вещей и отразило общую тенденцию на оснащение микроконтроллерных плат беспроводной связью[28]. При этом плата сохранила микроконтроллер RP2040 и 40-контактный разъём, 26 из которых являются многофункциональными выводами GPIO.
Осенью 2022 года были представлены и другие платформы. Banana Pi BPI-PicoW-S3 стала аналогом Raspberry Pi Pico на базе процессора ESP32-S3, оснащённая 27 выводами GPIO, а также модулями Wi-Fi и Bluetooth[28]. Также был анонсирован одноплатный компьютер Pine64 Ox64, построенный на двухъядерном процессоре с открытой архитектурой RISC-V и позиционируемый как конкурент Raspberry Pi Pico[28]. Использование RISC-V стало ещё одной заметной тенденцией года.
Семейство микроконтроллеров Espressif пополнилось моделью ESP32-C2 с улучшенными радиочастотными характеристиками. Кроме того, в 2022 году стала широко доступной и популярной плата Raspberry Pi Zero 2 W, выпущенная в конце 2021 года, которая предложила возросшую производительность при сохранении стандартного 40-контактного разъёма GPIO.
2023 год был отмечен эволюционным развитием аппаратных платформ с GPIO, где ключевым событием стал выпуск Raspberry Pi 5, предложившего новую архитектуру для управления вводом-выводом.
Главным анонсом года стал Raspberry Pi 5, представленный в сентябре[29]. Ключевым нововведением в этой модели стал чип-контроллер ввода-вывода (I/O controller) RP1, разработанный непосредственно Raspberry Pi Foundation. Этот чип, выполняющий роль «южного моста», взял на себя управление большинством периферийных интерфейсов, включая GPIO, что позволило разгрузить центральный процессор и значительно повысить производительность и надёжность периферии[29]. Плата сохранила стандартный 40-контактный разъём GPIO, обеспечив совместимость с большинством существующих плат расширения (HAT). На разъёме доступно 28 многофункциональных выводов GPIO с логическим уровнем 3,3 В, поддерживающих стандартные протоколы, такие как I2C, SPI и UART[30]. Важным улучшением стала толерантность входов к напряжению 5 В (при условии, что контроллер RP1 запитан).
На рынке также появились другие платформы. В продажу поступил одноплатный компьютер Orange Pi 3B на базе процессора Rockchip RK3566, оснащённый стандартным 40-контактным разъёмом GPIO с поддержкой интерфейсов UART, I2C, SPI и PWM[31]. В октябре была представлена плата Waveshare RP2040-PiZero, выполненная в форм-факторе Raspberry Pi Zero, но основанная на микроконтроллере RP2040[32]. Она сохранила 40-контактный разъём, совместимый с Raspberry Pi, и предоставила доступ к возможностям RP2040, включая 8 блоков программируемого ввода-вывода (PIO) и поддержку разработки на C/C++, MicroPython и Arduino[33].
Кроме того, продолжилось развитие линеек микроконтроллеров: была представлена плата Arduino UNO R4 на базе чипа Arm Cortex-M4, а также появились новые модели STM32C0 с увеличенным объёмом памяти и большим количеством выводов, что расширило возможности для разработчиков встраиваемых систем.
Таким образом, 2023 год продемонстрировал тенденцию к использованию выделенных контроллеров ввода-вывода для повышения производительности и продолжил укреплять популярность архитектуры RP2040 на рынке.
В 2024 году развитие в области GPIO было сосредоточено в основном на программных усовершенствованиях и стандартизации, а не на создании принципиально новых аппаратных стандартов. Ключевые изменения коснулись инструментов для работы с GPIO в Linux и экосистемы Raspberry Pi.
Одним из главных событий стало укрепление позиций библиотеки libgpiod как современного стандарта для работы с GPIO в Linux, предназначенного для замены устаревшего метода доступа через виртуальную файловую систему sysfs[34]. Библиотека предоставляет более надёжное управление ресурсами, расширенный функционал (например, одновременное управление несколькими контактами) и упрощённый API для разработчиков[34].
В экосистеме Raspberry Pi важным изменением стал фактический отказ от поддержки популярной библиотеки pigpio с выходом Raspberry Pi 5, поскольку её разработка прекратилась. Это вынудило сообщество искать альтернативы, такие как gpiozero и lgpio, для задач, требующих точного управления временем, например, при работе с сервоприводами.
На рынке также появился ряд новых одноплатных компьютеров, большинство из которых продолжили использовать ставший стандартом 40-контактный разъём GPIO, совместимый с Raspberry Pi. Среди них — Banana Pi BPI-M1S[35], Banana Pi BPI-M6[36], BeagleY-AI и Orange Pi 5 Plus[37]. В сфере микроконтроллеров сохранилась тенденция на углубление интеграции дополнительных модулей (беспроводная связь, безопасность), в то время как базовый функционал GPIO остался на прежнем уровне[38].
В 2025 году развитие технологии GPIO было отмечено двумя ключевыми тенденциями: повышением универсальности за счёт появления 5-вольтовой толерантности в массовых микроконтроллерах и дальнейшей миниатюризацией.
Важнейшим событием стало представление в июле 2025 года компанией Raspberry Pi Foundation обновлённой ревизии микроконтроллера RP2350, ключевым нововведением которого стал интерфейс GPIO, толерантный к напряжению 5 В[39]. Это улучшение позволило напрямую подключать к микроконтроллеру периферийные устройства, работающие с 5-вольтовой логикой (например, компоненты экосистемы Arduino), без необходимости использовать внешние преобразователи логических уровней[39]. На базе нового чипа RP2350B в августе была представлена плата Adafruit Fruit Jam с разъёмами GPIO, ориентированная на разработчиков[40].
Другой значимой тенденцией стала миниатюризация. В марте на выставке Embedded World компания Texas Instruments представила микроконтроллер MSPM0C1104, названный самым маленьким в мире. Несмотря на площадь всего 1,38 мм², он оснащён шестью универсальными портами ввода-вывода (GPIO), что демонстрирует тренд на интеграцию GPIO в самые компактные устройства для носимой электроники и Интернета вещей[41].
В течение года также был представлен ряд новых одноплатных компьютеров. В феврале вышел PocketBeagle 2, оснащённый 72-контактным разъёмом, который включает 52 цифровых и 8 аналоговых выводов[42]. В июне компания AAEON представила компактные платы UP TWL и UP TWLS на базе процессоров Intel, первая из которых оснащена стандартным 40-контактным разъёмом GPIO[43]. Кроме того, на рынок вышли и другие платы со стандартным 40-контактным разъёмом, такие как Radxa Cubie A5E[44] и Avaota C1[45].
Примером интеграции GPIO в потребительские устройства стал анонсированный в июле проект модульного ноутбука Argon ONE UP, который будет построен на базе будущего модуля Raspberry Pi Compute Module 5 и оснащён GPIO-интерфейсом[46].
Программирование
Эти разъёмы управляются драйверами ядра операционной системы.
В Linux порты GPIO поддерживаются на уровне ядра[47]. Исторически для взаимодействия с GPIO из пространства пользователя использовался интерфейс Sysfs, доступный через виртуальную файловую систему /sys/class/gpio/[48][49]. Однако этот метод считается устаревшим. Современным стандартом для работы с GPIO в Linux является библиотека libgpiod, которая предоставляет более надёжное управление ресурсами, расширенный функционал (например, одновременное управление несколькими контактами) и упрощённый API для разработчиков.
В экосистеме Raspberry Pi с выходом Raspberry Pi 5 прекратилась поддержка популярной библиотеки pigpio. Это привело к необходимости поиска альтернатив, таких как gpiozero и lgpio, особенно для задач, требующих точного управления временем.
Microsoft Windows также включает специальные API для разработки драйверов GPIO[50], а документация MSDN содержит соответствующую информацию[51].
Помимо стандартной библиотеки ядра, существуют специализированные библиотеки более высокого уровня, упрощающие программирование разъёмов GPIO или работу со стандартными устройствами. Некоторые из них обеспечивают переносимость между аппаратными платформами с совместимой распиновкой, но разной архитектурой.
Для Raspberry Pi существует ряд библиотек для разных языков. Исторически популярными были WiringPi на C[52] и RPi.GPIO для Python[53]. С выходом Raspberry Pi 5 и прекращением поддержки библиотеки pigpio произошёл сдвиг в сторону более современных альтернатив. Основными библиотеками для языка C стала lgpio, а для Python — высокоуровневая gpiozero. Для Java продолжает развиваться библиотека Pi4J[54].
Также возможно работать на более низком уровне. Обычно система определяет общее назначение разъёмов GPIO, а функции и имена этих разъёмов задаются драйвером контроллера. К ним можно обращаться универсально, напрямую через API GPIO, используя заголовочный файл (например, для Linux: <linux/gpio.h>[55]). В некоторых случаях можно использовать заголовочные файлы, специфичные для контроллера. Например, для RaspberryPi с процессором Broadcom BCM 2835[56], где драйверы являются проприетарными и не входят в ядро, используется заголовок <bcm2835.h>[57] в исходном коде на языке C[58].
Возможности
Разъём GPIO может быть сконфигурирован как вход (приём сигнала) или как выход (выдача сигнала). В режиме выхода можно записывать значение во внутренний регистр, чтобы изменить состояние выхода. В режиме входа можно определить его состояние, считав содержимое внутреннего регистра.
Как правило, разъём GPIO может обрабатывать только цифровые сигналы (логический 0 или 1). Для работы с аналоговыми сигналами требуется АЦП, например MCP3008[59]. Однако некоторые современные платформы, такие как PocketBeagle 2, интегрируют аналоговые входы непосредственно на разъём расширения наряду с цифровыми GPIO[60].
Устройства GPIO также могут генерировать прерывания[61] и события прямого доступа к памяти (EDMA).
Количество доступных контактов GPIO варьируется в зависимости от платформы: например, на стандартном 40-контактном разъёме Raspberry Pi 5 доступно 28 контактов GPIO[62], в то время как PocketBeagle 2 предлагает 52 цифровых вывода на 72-контактном разъёме[60].
Хотя большинство платформ используют логический уровень 3,3 В, появилась тенденция к созданию входов, толерантных к напряжению 5 В. Эта возможность, реализованная, например, в контроллере RP1 на Raspberry Pi 5 и в микроконтроллере RP2350, позволяет напрямую подключать периферийные устройства с 5-вольтовой логикой (например, из экосистемы Arduino) без внешних преобразователей уровней. При этом важно отметить, что выходы таких GPIO по-прежнему работают на уровне 3,3 В, а толерантность входов к 5 В обычно требует, чтобы сам микроконтроллер был запитан[63]. Выходной ток контактов, как правило, остаётся небольшим и составляет от 3 мА до 50 мА[64].


