Универсальный ввод/вывод
Вход /выход общего назначения ( GPIO ) — это незадействованный цифровой сигнальный контакт на плате интегральной схемы или электронной схемы (например, MCU / MPU ), который может использоваться в качестве входа или выхода или того и другого и управляется программным обеспечением.
GPIO не имеют заранее определенного назначения и по умолчанию не используются. [1] [2] Если используется, назначение и поведение GPIO определяются и реализуются разработчиком схемы более высокого уровня сборки: разработчиком печатной платы в случае GPIO на интегральной схеме или системным интегратором в случае GPIO на уровне платы.
Интегральные схемы GPIO
[ редактировать ]Интегральные схемы (IC) 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, созданием экземпляров и архитектурой.
-
Интерфейс параллельной шины до 24 GPIO ( Intel 8255 )
-
«Универсальный интерфейсный адаптер», объединяющий 20 GPIO с другими интерфейсами общего назначения ( MOS Technology 6522 ).
-
Микроконтроллер PIC с 29 переназначаемыми GPIO ( технология Microchip PIC24FJ256).
GPIO на уровне платы
[ редактировать ]Многие печатные платы предоставляют доступ к GPIO на уровне платы внешним схемам через встроенные электрические разъемы. Обычно каждый такой GPIO доступен через специальный контакт разъема.
Как и GPIO на базе микросхем, некоторые платы просто включают GPIO в качестве удобного вспомогательного ресурса, дополняющего основную функцию платы, тогда как в других платах GPIO являются центральной, основной функцией платы. Некоторые платы, которые обычно классифицируются как многофункциональные платы ввода-вывода, представляют собой комбинацию обоих; такие платы предоставляют GPIO наряду с другими типами ввода-вывода общего назначения. GPIO также встречаются на платах встроенных контроллеров и одноплатных компьютерах, таких как Arduino , BeagleBone и Raspberry Pi . [3]
GPIO на уровне платы часто обладают возможностями, которых обычно не хватает GPIO на базе микросхем. Например, входы триггера Шмитта , сильноточные выходные драйверы, оптические изоляторы или их комбинации могут использоваться для буферизации и обработки сигналов GPIO, а также для защиты схемы платы. Кроме того, иногда реализуются функции более высокого уровня, такие как устранение дребезга входного сигнала , обнаружение фронта входного сигнала и выход широтно-импульсной модуляции (ШИМ).
-
Сетевой маршрутизатор с тремя GPIO (Banana Pi R1)
-
Интерфейс GPIO для компьютеров Hewlett-Packard Series 80 (HP 82940A)
-
Интерфейс Ethernet для 48 GPIO (Sensoray 2410)
-
Цветные GPIO (вверху) на плате Asus Tinker Board
Использование
[ редактировать ]GPIO используются в самых разных приложениях, ограниченных только электрическими и временными характеристиками интерфейса GPIO и способностью программного обеспечения достаточно своевременно взаимодействовать с GPIO.
GPIO обычно используют стандартные логические уровни и не могут подавать значительный ток на выходные нагрузки. Если за ним следует соответствующий сильноточный выходной буфер (или механическое или полупроводниковое реле), GPIO можно использовать для управления устройствами высокой мощности, такими как освещение, соленоиды, нагреватели и двигатели (например, вентиляторы и нагнетатели). Аналогичным образом, входной буфер, реле или оптоизолятор часто используются для преобразования несовместимого в противном случае сигнала (например, высокого напряжения) в логические уровни, необходимые для GPIO.
Интегральные схемы GPIO обычно используются для управления или мониторинга других схем (включая другие микросхемы) на плате. Примеры этого включают включение и отключение работы (или подачи питания) других схем, считывание состояний встроенных переключателей и конфигурационных шунтов, а также управление светодиодов индикаторами состояния (LED). В последнем случае GPIO во многих случаях может обеспечить достаточный выходной ток для прямого питания светодиода без использования промежуточного буфера.
Несколько GPIO иногда используются вместе в качестве немного сложного интерфейса связи. Например, два GPIO могут использоваться для реализации шины последовательной связи, такой как межинтегральная схема ( I²C ), а четыре GPIO могут использоваться для реализации шины последовательного периферийного интерфейса (SPI); они обычно используются для облегчения последовательной связи с микросхемами и другими устройствами, имеющими совместимые последовательные интерфейсы, такими как датчики (например, датчики температуры, датчики давления, акселерометры ) и контроллеры двигателей . В крайнем случае, этот метод можно использовать для реализации всей параллельной шины, обеспечивая тем самым связь с ориентированными на шину ИС или печатными платами.
Хотя GPIO по своей сути являются цифровыми, они часто используются для управления аналоговыми процессами. Например, GPIO можно использовать для управления скоростью двигателя, интенсивностью света или температурой. Обычно это делается через ШИМ, при котором рабочий цикл выходного сигнала GPIO определяет эффективную величину сигнала управления процессом. Например, при управлении интенсивностью света его можно затемнить за счет уменьшения рабочего цикла GPIO. Некоторые аналоговые процессы требуют аналогового управляющего напряжения. В таких случаях может оказаться целесообразным подключить GPIO, который работает как выход ШИМ, к RC-фильтру, чтобы создать простой и недорогой цифро-аналоговый преобразователь .
Выполнение
[ редактировать ]Интерфейсы GPIO сильно различаются. В некоторых случаях они просты — группа контактов, которые могут переключаться как группа на вход или выход. В других случаях каждый вывод может быть настроен на прием или подачу различных логических напряжений с настраиваемой мощностью возбуждения и повышением/понижением напряжения . Входное и выходное напряжение обычно, но не всегда, ограничивается напряжением питания устройства с GPIO и может быть повреждено более высоким напряжением.
Состояние вывода GPIO может быть предоставлено разработчику программного обеспечения через один из множества различных интерфейсов, таких как периферийное устройство ввода-вывода с отображением в памяти , или через инструкции выделенного порта ввода-вывода. Некоторые GPIO имеют входы, устойчивые к 5 В: даже если устройство имеет низкое напряжение питания (например, 2 В), устройство может принимать 5 В без повреждений.
Порт GPIO — это группа контактов GPIO (часто 8 контактов, но может быть и меньше), организованных в группу и управляемых как группа.
Возможности GPIO могут включать в себя: [2]
- Выводы GPIO можно настроить как входные или выходные.
- Выводы GPIO можно включать/отключать.
- Входные значения читабельны (обычно высокие или низкие ).
- Выходные значения доступны для записи/чтения.
- Входные значения часто могут использоваться в качестве IRQ (обычно для событий пробуждения).
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Уайт, Джон, изд. (2016). Raspberry Pi – Полное руководство (7-е изд.). Борнмут , Англия , Великобритания : Imagine Publishing . п. 36. ISBN 978-1785463709 .
- ^ Перейти обратно: а б «Ввод/вывод общего назначения» . Руководство разработчика Oracle Java ME Embedded (8-е изд.). Корпорация Оракл . 2014.
- ^ «GPIO — Документация Raspberry Pi» . Фонд Raspberry Pi . Проверено 3 ноября 2016 г.