Последовательные порты
Последовательными портами плат 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/FD | RS_MODE | ser.interface |
| RS232 | HIGH | LOW | 0 - PL_SER_SI_FULLDUPLEX |
| RS422 | HIGH | HIGH | 0 - PL_SER_SI_FULLDUPLEX |
| RS485 | LOW | HIGH | 1 - 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/RX0 | 17 |
| TX (выход) | GPIO9/TX0 | 19 |
| CTS (вход) | GPIO16/CTS0 | 33 |
| RTS (выход) | GPIO0/RTS0 | 1 |
| DSR (вход) | GPIO20/DSR0 | 41 |
| DTR (выход) | GPIO4/DTR0 | 9 |
| HD/FD* | GPIO32 | 30 |
| RS_MODE* | GPIO33 | 28 |
*Только платы IB1002 и IB1003
Последовательный порт 2
| Линия | Соответствующая линия ввода-вывода EM1000 | Линия кабеля IC1000 |
| RX (вход) | GPIO10/RX1 | 21 |
| TX (выход) | GPIO11/TX1 | 23 |
| CTS (вход) | GPIO17/CTS1 | 35 |
| RTS (выход) | GPIO1/RTS1 | 3 |
| DSR (вход) | GPIO21/DSR1 | 43 |
| DTR (выход) | GPIO5/DTR1 | 11 |
| HD/FD* | GPIO34 | 26 |
| RS_MODE* | GPIO35 | 24 |
*Только платы IB1002 и IB1003
Последовательный порт 3
| Линия | Соответствующая линия ввода-вывода EM1000 | Линия кабеля IC1000 |
| RX (вход) | GPIO12/RX2 | 25 |
| TX (выход) | GPIO13/TX2 | 27 |
| CTS (вход) | GPIO18/CTS2 | 37 |
| RTS (выход) | GPIO2/RTS2 | 5 |
| DSR (вход) | GPIO22/DSR2 | 45 |
| DTR (выход) | GPIO6/DTR2 | 13 |
| HD/FD* | GPIO36 | 22 |
| RS_MODE* | GPIO37 | 20 |
*Только платы IB1002 и IB1003
Последовательный порт 4
| Линия | Соответствующая линия ввода-вывода EM1000 | Линия кабеля IC1000 |
| RX (вход) | GPIO14/RX3 | 29 |
| TX (выход) | GPIO15/TX3 | 31 |
| CTS (вход) | GPIO19/CTS3 | 39 |
| RTS (выход) | GPIO3/RTS3 | 7 |
| DSR (вход) | GPIO23/DSR3 | 47 |
| DTR (выход) | GPIO7/DTR3 | 15 |
| HD/FD* | GPIO38 | 18 |
| RS_MODE* | GPIO39 | 16 |
*Только платы IB1002 и IB1003