Линии ввода-вывода общего назначения

У EM2001 есть 56 линий ввода-вывода общего назначения (GPIO0 ~ GPIO55). Все линии 3.3V, CMOS, с допустимым входным напряжением 5V. Максимальный ток нагрузки каждой линии ввода-вывода - 10mA. Пятьдесят одна линия доступна всегда. Остальные пять линий расположены на разъёме беспроводного модуля расширения и могут использоваться, если беспроводной модуль не установлен.

Упрощённая структура одной линии ввода-вывода EM2001 показана на схеме ниже. У каждой линии независимое управление выходным буфером. При включении питания EM2001 выходные буферы всех линий ввода-вывода находятся в высокоимпедансном состоянии (иными словами, все линии настроены как входы). Чтобы линия стала выходом, нужно явно включить её выходной буфер.

Многие линии ввода-вывода EM2001 также служат входами или выходами специальных функциональных модулей, например последовательных портов. Большинство таких линий нужно правильно настроить как входы или выходы - автоматически это не произойдёт. Несколько линий, например линии TX и RX последовательного порта в режиме UART, настраиваются как выходы и входы автоматически при включении последовательного порта (или другого аппаратного блока). Подробности см. в описании платформы программирования EM2000.

У каждой линии ввода-вывода есть слабый подтягивающий резистор к питанию, который не даёт линии «висеть в воздухе», когда выходной буфер отключён.

Принципиальная схема линии GPIO платы EM2001.

8-разрядные порты

Сорок линий ввода-вывода сгруппированы в пять 8-разрядных портов. Чтобы сохранить совместимость с EM1001, группировка линий по портам сделана точно такой же. К сожалению, из-за этого порты EM2001 стали «псевдопортами»: линии GPIO этих портов на самом деле относятся к нескольким разным физическим портам микроконтроллера на плате. Поэтому операции с портами, такие как io.portset, io.portget или io.portstate, обращаются к выводам порта не строго одновременно: запись или чтение одних линий происходит раньше, чем других. Этот «рассинхрон» очень мал и для большинства приложений не имеет значения, но помните, что он существует.

Схема отображения портов у разных портов различается, поэтому и быстродействие немного отличается. Порты P0 и P1 примерно на 10% медленнее, чем P2, P3 и P4. В большинстве случаев эта разница несущественна, тем более что управление линиями GPIO и портами на EM2001 примерно в семь раз быстрее, чем на EM1001.

Управление линиями ввода-вывода подробно описано в документации по объекту io.

Исходный материал Tibbo обновлён 30 мая 2022Оригинал на docs.tibbo.com · Сообщить об ошибке