3.18. Основи UART¶
UART (Universal Asynchronous Receiver-Transmitter) — найстаріший і найпростіший спосіб передачі байтів між двома мікроконтролерами або між мікроконтролером і ПК. Два дроти передають дані — по одному в кожному напрямку — а спільне заземлення замикає сигнальне коло. Жодна зі сторін не використовує спільний тактовий сигнал; вони заздалегідь домовляються про швидкість передачі (бод) і відновлюють часові характеристики бітів безпосередньо з лінії даних.
3.18.1. Кадр¶
Кожен символ на дроті огортається у кадр: стартовий біт, біти даних, необов’язковий біт парності та один або два стопові біти.
Один кадр UART: стартовий біт, вісім бітів даних і стоповий біт, кожен завширшки один бітовий проміжок (1 / baudrate секунди).¶
Лінія перебуває у стані спокою на високому рівні. Приймач стежить за спаданням сигналу, яке позначає початок нового кадру. Потім він зчитує лінію даних один раз за бітовий проміжок — зазвичай у середині кожного біта — і збирає біти у символ. Стоповий біт повертає лінію у стан спокою, щоб наступний стартовий біт міг бути виявлений.
3.18.2. Швидкість передачі (бод)¶
Тривалість біта — і швидкість з’єднання — визначається швидкістю передачі (бод), тобто кількістю бітів на секунду. Стандартними значеннями є 9600, 19200, 38400, 57600, 115200, 230400, 460800 та 921600; найпоширенішим стандартним значенням є 115200. Обидва кінці мають узгоджуватися щодо швидкості передачі з точністю до кількох відсотків, інакше приймач зчитуватиме біти у неправильні моменти і дані будуть спотворені.
Вища швидкість передачі дозволяє передавати більше даних за секунду, але є чутливішою до довжини кабелю, ємності та точності тактових генераторів на кожному кінці. Для коротких з’єднань між двома платами на одному столі комфортно працюють значення від 115200 до 921600.
3.18.3. Підключення¶
З’єднання UART використовує три дроти:
Підключення UART: TX на одній платі підключається до RX на іншій, а обидва заземлення об’єднуються.¶
TX → RX в обох напрямках. Вивід передачі кожної плати є виводом прийому іншої плати. Типова помилка початківців — підключати TX → TX: два виходи конфліктують між собою, і жоден приймач не отримує даних.
Спільне заземлення. Рівні сигналу відраховуються відносно землі, тому обидві плати мають мати спільне заземлення, інакше приймач бачить неправильну напругу на лінії.
3.18.4. Рівні напруги та фізичні рівні¶
Рівні сигналів на виводах UART камери становлять 3,3 В CMOS: низький рівень для логічного нуля, 3,3 В для логічної одиниці. Будь-який пристрій, що підтримує UART 3,3 В CMOS — інший мікроконтролер, USB-перетворювач послідовного порту з налаштуванням 3,3 В, GPS-модуль на 3,3 В — може бути підключений безпосередньо.
Примітка
Пристрої з UART на 5 В CMOS (старіші мікроконтролери, певні GPS-модулі, деякі старіші відлагоджувальні плати датчиків) використовують те саме UART-кадрування, але на логічних рівнях 5 В. Пряме підключення до камери є небезпечним: лінія TX на 5 В, що керує виводом RX камери, перевищує абсолютно максимальну вхідну напругу для камер, які не є 5-вольт-сумісними, а вивід TX камери на 3,3 В може не досягти порогу логічної одиниці пристрою з живленням 5 В.
Для перетворення між двома рівнями напруги потрібен активний лінійний драйвер — спеціалізована двонаправлена ІС-перемикача рівнів із власними транзисторами на обох сторонах кожної лінії. Пасивних перемикачів на основі MOSFET і підтягувального резистора з розділу Узгодження рівнів тут недостатньо: їхні фронти наростання залежать від заряджання лінії через резистор, що є прийнятним для перемикання, але надто повільним для UART. На швидкості 115200 бод кожен біт триває близько 8 мкс, і RC-нахил пасивного перемикача розмиває один біт у наступний.
Активний лінійний драйвер формує чіткі фронти в обох напрямках на повних швидкостях UART. Оберіть компонент, розрахований на швидкість передачі, яку буде використовувати з’єднання, підключіть вхід TX і RX камери до сторони перемикача на 3,3 В, а вхід TX і RX пристрою на 5 В — до сторони на 5 В.
Три більш старіші фізичні рівні використовують те саме кадрування, але відрізняються напругами і потребують перетворювача рівнів між собою та мікроконтролером на 3,3 В:
RS-232. Використовується послідовними портами настільних ПК та деяким промисловим обладнанням. Сигнал коливається між приблизно
±5 Vі±15 V, у стані спокою знаходиться на від’ємному рівні. Інвертована полярність і висока напруга порівняно з CMOS; мікросхема з сімейства MAX232 / MAX3232 (або аналогічна) виконує перетворення.RS-422. Стандарт диференційної передачі сигналів для з’єднань точка-точка (один драйвер, до десяти приймачів). Драйвер передає сигнал по збалансованій парі дротів; приймач вимірює різницю між ними і ігнорує синфазні перешкоди. Для повнодуплексних з’єднань використовуються дві пари — по одній для кожного напрямку. RS-422 забезпечує передачу на відстань від десятків метрів до кілометра залежно від швидкості передачі, а між виводами TX / RX камери та збалансованою парою встановлюється мікросхема приймопередавача RS-422.
RS-485. Багатоточкова версія RS-422 — те саме диференційне кадрування, але розрахована на до 32 драйверів і приймачів на одній шині. Більшість з’єднань є напівдуплексними на одній парі, де драйвер і приймач кожного вузла спільно використовують одні й ті самі дроти, а програмне забезпечення визначає, хто говорить. Застосовується в промислових шинах автоматизації (Modbus, DMX512, Profibus), де дроти прокладені на великі відстані і рівень перешкод є значним; між виводами TX / RX камери та диференційною парою встановлюється мікросхема приймопередавача RS-485.
Обидва стандарти на базовому бітовому рівні все одно надсилають кадри UART. Конфігурація machine.UART камери (швидкість передачі, кількість бітів, парність, стопові біти) залишається однаковою незалежно від того, який фізичний рівень передає сигнал на іншому боці приймопередавача.