Порт GPIO (универсальный ввод/вывод) размещают внутри кристаллов прцессоров, чипсетов, вспомогательных чипов управления. Порт GPIO обрабатывает как входящие, так и исходящие цифровые сигналы. В качестве входного порта его можно использовать, например, для связи ЦП или PCH с сигналами полученными от переключателей, или цифровыми показаниями, полученными от датчиков. В качестве выходного порта его можно использовать для формирования сигналов управления внешними операциями на основе программ исполняемых процессором, например, для управления включением/выключением светодиодной подсветки дисплея, или вывода сигналов управления двигателем и т. п..
GPIO называют «порт общего назначения», поскольку каждый его разряд может быть свободно настроен для работы по приему как входных сигналов, так и для формирования выходных сигналов (программным путем). В ранних вариантах каждый порт был либо исключительно входным, либо исключительно выходным. Однако сейчас GPIO является «гибким» по использованию своих контактов. Вы можете установить их назначение наилучшим образом в соответствии с вашими потребностями (на вход, на выход или вход/выход в любой количественной комбинации.
Во время чтения, записи и работы с цифровыми значениями (0 и 1) внешние устройства часто используют уровни сигнала: «низкое» напряжение и «высокое» напряжение. GPIO выполняет необходимые преобразования в обоих направлениях.
Регистр портов (PDR). Устанавливает направление для каждого внешнего вывода GPIO - либо на ввод, либо на вывод, либо на ввод/вывод (рис. 1).
Регистр входных данных порта (PIDR). Показывает состояние входных контактов. Для каждого вывода вход LOW-сигнала устанавливает соответствующее значение разряда регистра в 0; вход сигнала HIGH устанавливает соответствующее значение разряда регистра в 1. CPU программно считывает этот регистр, чтобы узнать самые последние уровни сигнала его разрядов. Значения сохраняются до перезаписывания; каждый раз, когда CPU считывает регистр, он будет отображать текущие состояния входных сигналов.
Рис. 1. Базовая структура GPIO (концептуальная).
Регистр выходных данных порта (PODR). Чтобы выводить данные через выходные выводы, ЦП программно записывает выходные значения в этот регистр. Значение 0 преобразуется в LOW-выход; 1 преобразуется в HIGH выход. Как и в обычной памяти, значения, записанные здесь, сохраняются до перезаписывания. Это означает, что уровень выходного контакта будет поддерживаться до тех пор, пока значение не будет изменено.
Модуль GPIO является гибким для различных приложений. Каждый вывод GPIO может быть настроен в качестве альтернативного режима ввода или альтернативного выхода. Альтернативная функция может быть выбрана регистром установки.
Структура построения одного разряда GPIO (IO PIN) показана в виде схемы на рис. 2. Верхняя часть альтернативная схема выхода, а нижняя часть - альтернативная схема входа. На рис. 2 GPIOFS используется для включения альтернативного вывода. GPIOOD для установки режимас открытым стоком с функцией вывода. GPIOOE - это переключатель для вывода данных.
Рис. 2.
На рис. 3 видим, например, что разряд GPIO77 – используется для приема входного сигнала DGPU_PWRGD; разряд GPIO78 – используется для формирования выходного сигнала PXS_PWREN.
На рис. 4 мы видим использование порта GPIO (GPIO00 - GPIO5E) в ЕС контроллере (EC-KB9012).
Рис. 3. Фрагмент схемы (однокристальный вариант Intel Haswell ULT/Broadwell U)
Рис. 4. Использование порта GPIO в ЕС контроллере (EC-KB9012).