Введение

Цифровой сигнал-вывод на интегральной схеме, управляемый пользователем.

Универсальный ввод/вывод (GPIO) – это неназначенный цифровой сигнал-вывод на интегральной схеме или электронной схеме (например, на платах MCU/MPU), который может использоваться как ввод, вывод или и то, и другое, и управляется программным обеспечением. GPIO не имеют предопределенного назначения и по умолчанию не используются. В случае использования, назначение и поведение GPIO определяется и реализуется разработчиком схемы более высокого уровня: разработчиком платы в случае GPIO интегральной схемы или системным интегратором в случае GPIO на уровне платы.

GPIO для интегральных схем

GPIO интегральных схем (ИС) реализуются различными способами. Некоторые ИС предоставляют GPIO как основную функцию, в то время как другие включают GPIO как удобное "дополнение" к другой основной функции. Примерами первого типа являются Intel 8255, который обеспечивает интерфейс для 24 GPIO с параллельной шиной, и различные ИС-расширители GPIO, которые обеспечивают интерфейс GPIO с последовательными шинами, такими как I²C и SMBus. Примером второго типа является ИС Realtek ALC260, который предоставляет восемь GPIO вместе со своей основной функцией аудиокодека. Микроконтроллеры обычно включают в себя GPIO. В зависимости от применения, GPIO микроконтроллера могут составлять его основной интерфейс с внешней схемой или быть лишь одним из нескольких типов ввода/вывода, используемых наряду с аналоговым вводом/выводом, счетчиками/таймерами и последовательной связью. В некоторых ИС, особенно в микроконтроллерах, вывод GPIO может выполнять функции, отличные от GPIO. В таких случаях часто необходимо настроить вывод для работы в режиме GPIO (по отношению к его другим функциям), в дополнение к настройке поведения GPIO. Некоторые микроконтроллеры (например, семейство Microchip dsPIC33) включают внутренние схемы маршрутизации сигналов, позволяющие программно назначать GPIO на выводы устройства. Программируемые вентильные матрицы (FPGA) расширяют эту возможность, позволяя программно управлять назначением, инстанцированием и архитектурой выводов GPIO.

ГПИО на уровне совета директоров

Многие печатные платы предоставляют доступ к GPIO на уровне платы для внешней схемы через встроенные электрические разъемы. Обычно к каждому такому GPIO можно получить доступ через отдельный вывод разъема. Как и GPIO на основе интегральных схем, некоторые платы включают GPIO просто как удобный дополнительный ресурс, расширяющий основную функцию платы, в то время как на других платах GPIO являются центральной, основной функцией. Некоторые платы, обычно классифицируемые как многофункциональные платы ввода-вывода, представляют собой комбинацию обоих вариантов; такие платы предоставляют GPIO вместе с другими типами универсального ввода-вывода. GPIO также можно найти на платах встроенных контроллеров и одноплатные компьютеры, такие как Arduino, BeagleBone и Raspberry Pi. GPIO на уровне платы часто обладают возможностями, которых обычно не хватает GPIO на основе интегральных схем. Например, для буферизации и формирования сигналов GPIO, а также для защиты схемы платы могут использоваться входные схемы с гистерезисом (триггером Шмитта), мощные выходные драйверы, оптоизоляторы или их комбинации. Кроме того, иногда реализуются функции более высокого уровня, такие как подавление дребезга контактов, обнаружение фронтов входного сигнала и выходная широтно-импульсная модуляция (ШИМ).

Использование

GPIO используются в самых разнообразных приложениях, ограничиваемых лишь электрическими и временными характеристиками интерфейса GPIO и способностью программного обеспечения взаимодействовать с GPIO достаточно оперативно. GPIO обычно используют стандартные логические уровни и не способны обеспечивать значительный ток для выходной нагрузки. Однако, при использовании соответствующего выходного буфера с высоким током (или механического или твердотельного реле), GPIO может применяться для управления мощными устройствами, такими как освещение, соленоиды, нагреватели и двигатели (например, вентиляторы и воздуходувки). Аналогично, входной буфер, реле или оптоизолятор часто используются для преобразования несовместимого сигнала (например, высокого напряжения) в логические уровни, необходимые для GPIO. Интегральные схемы GPIO обычно используются для управления или мониторинга других схем (включая другие интегральные схемы) на плате. Примеры включают включение и выключение работы (или питания) других схем, считывание состояний бортовых переключателей и конфигурационных перемычек, а также управление светодиодными индикаторами состояния. В последнем случае GPIO во многих случаях может обеспечить достаточный выходной ток для непосредственного питания светодиода без использования промежуточного буфера. Несколько GPIO иногда используются совместно в качестве интерфейса для организации связи посредством программной эмуляции. Например, два GPIO могут быть использованы для реализации последовательной шины, такой как Inter-Integrated Circuit (I²C), а четыре GPIO – для реализации Serial Peripheral Interface (SPI); они обычно используются для обеспечения последовательной связи с интегральными схемами и другими устройствами, имеющими совместимые последовательные интерфейсы, такими как датчики (например, датчики температуры, датчики давления, акселерометры) и контроллеры двигателей. В крайнем случае, этот метод может быть использован для реализации целой параллельной шины, обеспечивая тем самым связь с интегральными схемами или платами, ориентированными на шинную архитектуру. Хотя GPIO по своей природе являются цифровыми, они часто используются для управления аналоговыми процессами. Например, GPIO может использоваться для управления скоростью двигателя, интенсивностью света или температурой. Обычно это достигается с помощью широтно-импульсной модуляции (ШИМ), в которой рабочий цикл выходного сигнала GPIO определяет эффективную величину управляющего сигнала. Например, при управлении интенсивностью света, яркость может быть уменьшена путем уменьшения рабочего цикла GPIO. Некоторые аналоговые процессы требуют линейного управляющего напряжения. В таких случаях может быть целесообразно подключить GPIO, работающий в режиме ШИМ, к RC-фильтру для создания простого и недорогого цифро-аналогового преобразователя.