Тип GPIO

По линиям ввода-вывода общего назначения (GPIO) устройства Tibbo делятся на две категории:

  • Устройства с однонаправленными линиями GPIO: каждую линию GPIO в них нужно явно настраивать как вход или выход
  • Устройства с двунаправленными линиями GPIO: линии GPIO в них работают одновременно как выходы и как входы

Чтобы узнать, какого типа линии GPIO в вашем устройстве, обратитесь к документации по его платформе (например, для EM1000 она здесь).

Устройства с однонаправленными линиями GPIO

В таких устройствах выходной драйвер каждой линии ввода-вывода (им управляет объект io.) нужно явно включать или выключать. При загрузке устройства все выводы настроены как входы. Если вы хотите использовать какой-либо вывод как выход, сначала включите его выходной драйвер (установите io.enabled = 1 - YES):

...
io.num= PL_IO_NUM_5	'select the line
io.enabled= YES		'enable output driver (you need to do this only once)
io.state= LOW		'set the state
...
Внимание

Следите, чтобы внешние цепи не пытались управлять линиями ввода-вывода, у которых включены выходные драйверы. В противном случае устройство и/или ваши цепи могут получить серьёзные повреждения!

Если драйвер включён (io.enabled = 1 - YES) и вы читаете состояние вывода, вы получаете состояние собственного выходного драйвера. Чтобы превратить линию во вход, выключите выходной драйвер (io.enabled = 0 - NO). Тогда можно будет считывать состояние внешнего сигнала, поданного на линию ввода-вывода:

...
io.num= PL_IO_NUM_4	'just to select some line as an example
io.enabled= NO		'now the output driver is off
x=io.state			'read line state into x
...

Есть и свойство io.portenabled. Оно позволяет настроить сразу все линии GPIO в 8-битном порту ввода-вывода.

Линии последовательного порта тоже требуют правильной настройки. Подробнее см. Настройка линий последовательного порта.

Устройства с двунаправленными линиями GPIO

Линии ввода-вывода этих устройств не нужно явно настраивать как входы или выходы. Все линии «квазидвунаправленные» и их можно рассматривать как выходы с открытым коллектором и слабыми подтягивающими резисторами к питанию. Чтобы «измерить» внешний сигнал, поданный на линию ввода-вывода, сначала установите на этой линии HIGH, затем прочитайте её состояние. Внешне подтягивать линию к LOW можно, даже если внутри на ней выставлен HIGH. Свойства io.enabled и io.portenabled существуют, но только для совместимости с другими платформами. Запись в эти свойства ни на что не влияет, а чтение всегда возвращает 1 - YES и 255 (все линии включены) соответственно.

Чтобы считать состояние внешнего сигнала на линии ввода-вывода, сначала установите на ней HIGH:

...
io.num= PL_IO_NUM	'just to select some line as an example
io.state= HIGH	'now we can read the line
x=io.state		'read line state into x
...

Линии последовательного порта в устройствах с двунаправленными GPIO настраивать не нужно.

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