Последовательные порты

Последовательными портами плат IB1000/2/3 управляет модуль EM1000, установленный на сетевой плате NB10x0.

Приложение Tibbo BASIC/C, работающее на EM1000, обращается к последовательным портам через объект ser. Объект обеспечивает передачу данных по линии TX и приём по линии RX. Когда управление потоком порта включено (ser.flowcontrol = 1 - ENABLED), объект ser. также автоматически обслуживает линии RTS и CTS этого порта.

При выключенном управлении потоком линиями CTS и RTS приложение может управлять как линиями ввода-вывода общего назначения (GPIO). Линии DTR и DSR портов всегда считаются линиями GPIO, поэтому объект ser. их «не трогает». Более того, даже линиями TX и RX каждого порта можно управлять как линиями GPIO, но только когда соответствующий последовательный порт «закрыт» (ser.enabled = 0 - NO). Управление линиями ввода-вывода выполняется через объект io.

Платы IB1002 и IB1003 имеют универсальные порты RS232/422/485. Для каждого порта предусмотрены две линии выбора интерфейса - HD/FD и RS_MODE, подключённые к линиям GPIO модуля EM1000:

  • Линия HD/FD выбирает для последовательного порта режим полудуплекса (LOW) или полного дуплекса (HIGH)
  • Линия RS_MODE выбирает «физический» режим сигналов: RS232 (LOW) или RS422/485 (HIGH)

Чтобы выбрать для последовательного порта режим RS232, RS422 или RS485, установите линии HD/FC и RS_MODE, как показано в таблице ниже. Кроме того, необходимо правильно задать свойство ser.interface:

РежимHD/FDRS_MODEser.interface
RS232HIGHLOW0 - PL_SER_SI_FULLDUPLEX
RS422HIGHHIGH0 - PL_SER_SI_FULLDUPLEX
RS485LOWHIGH1 - PL_SER_SI_HALFDUPLEX

Режим RS485 - полудуплексный, то есть в любой момент возможна только передача или только приём. В этом режиме для управления направлением используется линия RTS, и EM1000 делает это автоматически. На линии RTS должен быть LOW при вводе данных и HIGH при выводе. Для этого задайте ser.dircontrol равным 0 - PL_SER_DCP_LOWFORINPUT.

Не забывайте, что по умолчанию все линии EM1000 настроены как входы. Любую линию, которая должна работать как выход, нужно настроить соответствующим образом. Это делается через свойство io.enabled объекта io. Исключение составляют только линии TX и RX. Линия TX автоматически становится выходом, а линия RX автоматически становится выходом, как только последовательный порт включён (ser.enabled = 1 - YES).

У линий HD/FD и RS_MODE есть подтягивающий резистор к питанию и к земле соответственно. После запуска на линии HD/FD по умолчанию HIGH (режим полного дуплекса), а на линии RS_MODE - LOW (режим RS232).

Последовательный порт 1

ЛинияСоответствующая линия ввода-вывода EM1000Линия кабеля IC1000
RX (вход)GPIO8/RX017
TX (выход)GPIO9/TX019
CTS (вход)GPIO16/CTS033
RTS (выход)GPIO0/RTS01
DSR (вход)GPIO20/DSR041
DTR (выход)GPIO4/DTR09
HD/FD*GPIO3230
RS_MODE*GPIO3328

*Только платы IB1002 и IB1003

Последовательный порт 2

ЛинияСоответствующая линия ввода-вывода EM1000Линия кабеля IC1000
RX (вход)GPIO10/RX121
TX (выход)GPIO11/TX123
CTS (вход)GPIO17/CTS135
RTS (выход)GPIO1/RTS13
DSR (вход)GPIO21/DSR143
DTR (выход)GPIO5/DTR111
HD/FD*GPIO3426
RS_MODE*GPIO3524

*Только платы IB1002 и IB1003

Последовательный порт 3

ЛинияСоответствующая линия ввода-вывода EM1000Линия кабеля IC1000
RX (вход)GPIO12/RX225
TX (выход)GPIO13/TX227
CTS (вход)GPIO18/CTS237
RTS (выход)GPIO2/RTS25
DSR (вход)GPIO22/DSR245
DTR (выход)GPIO6/DTR213
HD/FD*GPIO3622
RS_MODE*GPIO3720

*Только платы IB1002 и IB1003

Последовательный порт 4

ЛинияСоответствующая линия ввода-вывода EM1000Линия кабеля IC1000
RX (вход)GPIO14/RX329
TX (выход)GPIO15/TX331
CTS (вход)GPIO19/CTS339
RTS (выход)GPIO3/RTS37
DSR (вход)GPIO23/DSR347
DTR (выход)GPIO7/DTR315
HD/FD*GPIO3818
RS_MODE*GPIO3916

*Только платы IB1002 и IB1003

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