GPIO (вывод общего назначения)
Почти каждый вывод микроконтроллера можно сделать входом или выходом и управлять им из программы — такой вывод называют GPIO. У него есть настройки: подтяжки, сила выхода, триггер Шмитта, а ещё он может переключаться на функции встроенной периферии.
Обновлено Редакция GAW
GPIO (general-purpose input/output) — вывод микроконтроллера, которым управляет программа. Его можно сделать входом и читать уровень напряжения на нём или выходом и выставлять логический 0 или 1. У современного микроконтроллера таких выводов десятки: у RP2040 их 30, у ESP32-S3 — 45.
У каждого GPIO есть набор настроек:
| Настройка | Зачем | Пример |
|---|---|---|
| Направление | вход или выход | — |
| Подтяжка вверх или вниз | задать уровень входа, когда к нему ничего не подключено | 50–80 кОм у RP2040, ~45 кОм у ESP32-S3 |
| Сила выхода | сколько тока выход отдаёт без заметного падения уровня | 2–12 мА у RP2040, по умолчанию 20 мА у большинства выводов ESP32-S3 |
| Триггер Шмитта | устойчивость входа к медленным и зашумлённым фронтам | RP2040 |
| Функция | подключить вывод к периферии — UART, SPI, ШИМ | F1–F9 у RP2040 |
Функции. Большинство выводов умеют не только работать как GPIO, но и передавать сигналы встроенной периферии. Выбор функции похож на альтернативные функции STM32 и AVR: у RP2040 каждому выводу назначается одна из девяти функций, а чтобы управлять выводом из программы, нужна функция SIO. У ESP32 сигналы периферии можно вывести почти на любой GPIO через матрицу GPIO.
Ограничения. На вход нельзя подавать напряжение выше допустимого: у RP2040 — не выше IOVDD + 0,5 В, у ESP32-S3 — VDD + 0,3 В. Выход ограничен по току, а у RP2040 ещё и суммарно: все выводы вместе отдают не больше 50 мА. Встроенные подтяжки слабые, для шин вроде I²C нужны внешние подтягивающие резисторы. Полные таблицы выводов — на страницах RP2040 и ESP32-S3.
Частые вопросы
Что такое GPIO?
General-purpose input/output — вывод общего назначения. Это вывод микроконтроллера, которым управляет программа: она может сделать его входом и читать уровень или выходом и выставлять 0 или 1. Большинство GPIO можно ещё и переключить на функцию встроенной периферии — UART, SPI, ШИМ.
Сколько тока может дать вывод GPIO?
Зависит от чипа и настройки. У RP2040 силу выхода выбирают из 2, 4, 8 и 12 мА, по умолчанию 4 мА, у большинства выводов ESP32-S3 по умолчанию — 20 мА. Кроме того, ограничен суммарный ток всех выводов: у RP2040 — 50 мА. Поэтому нагрузку больше нескольких миллиампер подключают через транзистор.
Зачем у GPIO подтягивающие резисторы?
Чтобы вход не «висел» в воздухе, когда к нему ничего не подключено или кнопка разомкнута. Встроенные подтяжки большого сопротивления — 50–80 кОм у RP2040 и около 45 кОм у ESP32-S3 — задают уровень по умолчанию; их включают программно.
Источники
- Raspberry Pi. RP2040 Datasheet (build 2025-02-20) — разд. 1.2 — 30 GPIO, 4 из них — входы АЦП; табл. 2 и 3 — каждому GPIO выбирается одна из функций F1–F9, для управления выводом из ядер нужна функция SIO (F5), а вход подключён всегда; табл. 614 — программируемые подтяжки, скорость нарастания, триггер Шмитта и сила выхода, по умолчанию 4 мА; табл. 615 — после сброса GPIO подтянуты вниз; табл. 622 — напряжение на выводе не выше IOVDD + 0,5 В; табл. 625 — сила выхода 2, 4, 8 или 12 мА, подтяжки 50–80 кОм, суммарный ток всех выводов от IOVDD — до 50 мА
- Espressif. ESP32-S3 Series Datasheet v2.2 — титул — 45 GPIO; разд. 2.3.1 — у каждого вывода пять функций IO MUX (F0–F4), часть сигналов идёт через матрицу GPIO, которая даёт выводу доступ почти к любому сигналу периферии; табл. 2-1, примечание 5 — сила выхода по умолчанию 20 мА, у GPIO17 и GPIO18 — 10 мА, у GPIO19 и GPIO20 — 40 мА; табл. 5-4 — подтяжки 45 кОм, VIH от 0,75 VDD до VDD + 0,3 В, VIL до 0,25 VDD
Нашли ошибку?
Смотрите также
- Подтягивающий резисторPull-up и pull-down: определённый уровень на свободной линии
- Альтернативная функция выводаAF: вывод под управлением периферии вместо порта
- Матрица GPIOПрограммное соединение сигналов периферии ESP32 с любыми выводами
- RP2040: выводы и функции GPIO30 GPIO: выводы QFN-56, функции F1–F9, АЦП, QSPI, SWD, питание, токи
- ESP32-S3: выводы и GPIO45 GPIO: функции, свободные и занятые выводы, флеш и PSRAM, strapping, USB, JTAG, токи