1. Автоматическое управление направлением передачи, режим Full Auto, вместо удержания драйвера линии включённым на всё время передачи, делает вкл/выкл драйвера линии от сигнала UART Tx. Помехозащищённость, в интервалах нуля, падает с пары Вольт до 0.2В, так как на нулевых битах, линия болтается на терминаторах, без подачи напряжения и работает порог приёмника всего в 200мВ.
2. В режиме полуавтоматическом, Half-Auto, для переключения RS-485 приём/передача, нужно вручную дёргать выводы платы EN каждого порта. Хорошо. Но! из-за того, что развязка направления данных выполнена не на ADUM, а на медленных оптронах, задержка сигнала от линии EN платы до драйвера составляет 35мкс. Приходится учитывать эту задержку при управлении передатчиком и заранее включать EN перед разрешением работы Tx.
3. Запаянная микросхема SC16IS752 - странная. Китайский клон? Я спрашивал о подводных камнях именно такого рода. Например, микросхема имеет режим управления направлением передачи как раз для RS-485. Кинул перемычки на оптроны развязки от выводов RTS. И что бы вы думали? Эта сволочь снимает сигнал активности TX сразу после последнего бита данных и отказывается удерживать линию в на время стоповых бит! Да, установил чётность "принудительно 1", имитируя стоп-бит. Но, учитывая задержку на включение Tx в 35мкс, даже на 19200 выглядело некрасиво, а на 921600 пол-пакета вообще не передавалось - не успевал включиться драйвер.
4. Глядел код примера - думал, что программисты такие криворукие? Вместо чтения количества байт в FIFO приёма, они, зачем-то, читают байт статуса линии каждый раз. Написал обработчик RS-485 для Modbus RTU по-своему. Не работает. Отлаживаю. И понимаю, что значение количества принятых байт в FIFO всегда 96 (при ёмкости буфера 64).
В итоге всё пришлось делать в ручном режиме, благо контроллер не перегружен другой работой... Работает...