|
Информационный портал технической поддержки Центра проектирования интегральных микросхем |
GPIO (General Purpose Input/Output, вход/выход общего назначения) - тип выводов, которые не имеют конкретной фиксированной функции. Функция вывода GPIO может быть настроена и контролироваться программным обеспечением.
В общем виде схемотехника вывода порта GPIO данных микроконтроллеров представлена на рисунке 1.

Рисунок 1 - Порт ввода-вывода МК К1901ВЦ1QI, К1986ВК214, К1986ВК234, МК семейств К1986ВЕ9x и К1986ВЕ1x
На каждый порт (A, B, C, D и т.д.) выделен свой набор регистров. Биты в этих регистрах задают настройки для каждого вывода порта. Например, порты имеют по 16 выводов (пинов), и для включения выводов в цифровой режим используются 16 бит регистра ANALOG. Оставшиеся биты 32-битного регистра ANALOG не используются. В регистрах FUNC и PWR настройки для выводов задаются двумя битами, поэтому используются все 32 бита регистра.
Большинство регистров предназначено для настройки цифрового режима работы выводов. В аналоговом режиме поля этих регистров не имеют значения.
Если вывод используется каким-либо периферийным блоком (биты пина в регистре FUNC не равны 0), то направление работы вывода (вход или выход) настраивает сам периферийный блок (значение регистра OE при этом не меняется, и также не оказывает влияния). Он же выводит цифровые сигналы наружу или считывает внешние сигналы. Для ручного управления пином необходимо использовать режим PORT (биты пина в регистре FUNC равны 0). Тогда при записи в регистр RXTX данные будут выводиться наружу, а при чтении - считываться с пина.
На внешнем выводе (I/O Pin) стоит защита от разряда статического электричества (ESD). При превышении напряжения на выводе откроется верхний диод и сбросит избыточное напряжение на линию питания. При возникновении на выводе отрицательного напряжения откроется нижний диод и погасит всплеск на землю. Данная защита рассчитана на незначительные скачки напряжения.
Диодная защита всегда активна и программно не настраивается.
В микроконтроллерах есть выводы, которые обозначены как "входы, толерантные к TTL-уровням". В спецификации указано, что на эти входы может подаваться внешнее напряжение до 5.25 В. Дело в том, что в схемотехнике данных выводов отсутствует верхний диод к питанию. Таким образом, при приложении внешнего напряжения, превышающего напряжение питания МК, ток через вывод не течет (верхнего диода нет). Вывод может работать только как вход. Часть Output Driver (см. рисунок 2) в данном случае должна быть отключена.
Выводы GPIO микросхем после сброса (по умолчанию) работают в аналоговом режиме. Аналоговый тракт всегда активен вне зависимости от настроек регистров, то есть сигналы с выводов подключены к соответствующим аналоговым блокам (АЦП, ЦАП и т.д.). Поэтому одновременная работа аналоговой функции и цифрового выхода может привести к выходу микросхемы из строя (например, формирование с помощью ЦАП на выходе 3.3 В при одновременной работе этого же вывода GPIO в цифровом режиме с выдачей 0 В приведет к короткому замыканию).
В аналоговом режиме работы биты RXTX (отражающие считанный с выводов логический уровень) всегда читаются как "1".
Во всех режимах работы доступна настройка внутренних программируемых (через регистр PULL) резисторов подтяжки: Pull Up (к питанию) и Pull Down (к нулю). Подтяжки включаются/выключаются индивидуально; по умолчанию оба резистора отключены от питания и нуля. Номинал резисторов составляет примерно 50 кОм. Если, например, вход находится в третьем состоянии (Hi-Z), включение подтяжки к питанию или нулю подавит наводки.
С целью снижения энергопотребления и повышения надежности рекомендуется для всех неиспользованных пинов включить в режим Pull Up. В таком случае их состояние не будет изменяться помехами, а в случае КЗ линия не перегорит. Или же перевести выводы в аналоговый режим.
В упрощенном варианте принцип работы портов в цифровых режимах записи и чтения удобно рассмотреть на схеме, приведенной на рисунке 2. Для включения цифрового тракта пина нужно установить цифровой режим работы в соответствующем бите регистра ANALOG. Аналоговый тракт при этом остается активен.

Рисунок 2 - Структурная схема порта ввода-вывода
Настройка выходного тракта осуществляется включением ключа "Output Enable" (OE) на рисунке 2.
Как было описано ранее, периферийные блоки (при работе вывода в функции, отличной от функции PORT (2'b00)) настраивают направление работы цифрового вывода аппаратно. Например, контроллер I2C обеспечивает тип вывода "открытый сток" за счет управления "Output Enable".
При работе на выход возможна работа в одном из режимов, который настраивается в регистре PD:
Также для работы выходного тракта нужно задать скорость нарастания фронта в регистре PWR. По умолчанию передатчик выключен.
Если требуется считать текущий уровень на выводе (регистр RXTX), собственный выходной тракт ("Output Enable") следует отключить.
Задание выходного уровня осуществляется записью требуемого значения в регистр RXTX. В микросхемах серии К1986ВЕ9x присутствует только регистр RXTX, особенностью которого является то, что запись в него задает состояние на выводе, а чтение возвращает текущее значение на выводе, которое зависит от внешних сигналов. В микросхемах К1901ВЦ1QI, К1986ВК214, К1986ВК234 и серии К1986ВЕ1x, помимо регистра RXTX, выходным значением можно управлять через регистры индивидуальной установки/сброса SETTX/CLRTX, а также считывать заданное (записанное) выходное значение из регистра RDTX/RD (см. рисунок 3 - названия регистров могут отличаться между микросхемами).

Рисунок 3 - Логика работы регистров RXTX, SETTX, CLRTX, RDTX при работе на выход
При работе только в качестве цифрового входа, когда резисторы подтяжки Pull Up и Pull Down отключены, и отключен выходной тракт (Output Enable), внешний вывод переходит в состояние высокого импеданса. Это состояние называется высокоомным, третьим или состоянием Hi-Z. Такой режим может применяться, например, для чтения сигнала на шине - поскольку сопротивление входа очень велико, его присутствие не влияет на работу шины. В то же время, будучи не подключенным, такой вход подвержен всевозможные помехам и наводкам. Для борьбы с ними используются подтягивающие резисторы.
Во входном тракте может быть включен триггер Шмитта (настраивается в регистре PD). Этот триггер имеет гистерезис и при некотором отклонении напряжения dU от заданного логического уровня на входе сохраняет текущее логическое значение на своем выходе. Например, если пин настроен на вход и напряжение на нем равно напряжению питания, микроконтроллер трактует это как наличие логической "1" на входе. Если на линии появится помеха, из-за которой напряжение на входе снизится меньше, чем на dU, микроконтроллер по-прежнему будет трактовать это как логическую "1". С логическим нулем ситуация аналогичная. Гистерезис триггера Шмитта порядка 400 мВ, гистерезис входа без использования триггера Шмитта - порядка 200 мВ.
Помимо этого, для цифровых входов предусмотрена возможность включения фильтра сигнала в регистра GFEN, который фильтрует импульсы длительностью меньше примерно 10 нс.
Логика работы портов в микросхемах К1986ВЕ8Т, К1986ВК01GI аналогична логике работы портов микроконтроллеров К1901ВЦ1QI, К1986ВК214, К1986ВК234, МК семейства К1986ВЕ9x и К1986ВЕ1x, однако есть ряд существенных отличий:

Рисунок 4 - Схема формирования запроса прерывания портов микросхем К1986ВЕ8Т, К1986ВК01GI
Логика работы портов аналогична логике работы портов МК К1901ВЦ1QI, К1986ВК214, К1986ВК234, МК семейства К1986ВЕ9x и К1986ВЕ1x. Отличия и особенности:
| Сайт: | https://support.milandr.ru |
| E-mail: | support@milandr.ru |
| Телефон: | +7 495 221-13-55 |