UART
Основна інформація
UART - це послідовний протокол, що означає, що він передає дані між компонентами по одному біту за раз. У порівнянні з цим, паралельні комунікаційні протоколи передають дані одночасно через кілька каналів. До загальних послідовних протоколів відносяться RS-232, I2C, SPI, CAN, Ethernet, HDMI, PCI Express та USB.
Загалом, лінія утримується на високому рівні (значення логічної 1), коли UART перебуває в стані очікування. Потім, для сигналізації початку передачі даних, передавач надсилає приймачу стартовий біт, під час якого сигнал утримується на низькому рівні (значення логічної 0). Далі передавач надсилає п'ять до восьми бітів даних, що містять фактичне повідомлення, за якими слідує необов'язковий біт парності та один або два стоп-біти (зі значенням логічної 1), в залежності від конфігурації. Біт парності, який використовується для перевірки помилок, рідко бачиться на практиці. Стоп-біт (або біти) позначають кінець передачі.
Ми називаємо найбільш поширену конфігурацію 8N1: вісім бітів даних, без парності та один стоп-біт. Наприклад, якщо ми хочемо відправити символ C, або 0x43 у ASCII, в конфігурації UART 8N1, ми відправимо наступні біти: 0 (стартовий біт); 0, 1, 0, 0, 0, 0, 1, 1 (значення 0x43 у двійковій системі), та 0 (стоп-біт).
Апаратні засоби для спілкування з UART:
USB-серійний адаптер
Адаптери з чіпами CP2102 або PL2303
Універсальний інструмент, такий як: Bus Pirate, Adafruit FT232H, Shikra або Attify Badge
Визначення портів UART
UART має 4 порти: TX(Transmit), RX(Receive), Vcc(Voltage) та GND(Ground). Ви можете знайти 4 порти з літерами TX
та RX
написаними на платі. Але якщо немає позначення, вам може знадобитися спробувати знайти їх самостійно за допомогою мультиметра або логічного аналізатора.
З мультиметром та вимкненим пристроєм:
Для визначення піна GND використовуйте режим Тесту на з'єднаність, помістіть задній вивід в землю та перевірте червоним до тих пір, поки не почуєте звук від мультиметра. На платі можна знайти кілька пінів GND, тому ви можете знайти або не знайти той, що належить до UART.
Для визначення порту VCC, встановіть режим постійної напруги та встановіть його на 20 Вольт напруги. Чорна зонд на землю, а червона на пін. Увімкніть пристрій. Якщо мультиметр вимірює постійну напругу 3,3 В або 5 В, ви знайшли пін Vcc. Якщо ви отримуєте інші напруги, спробуйте із іншими портами.
Для визначення порту TX, режим постійної напруги до 20 Вольт напруги, чорна зонд на землю, червона на пін, та увімкніть пристрій. Якщо ви виявите, що напруга коливається протягом кількох секунд, а потім стабілізується на значенні Vcc, ви, ймовірно, знайшли порт TX. Це тому, що при увімкненні він відправляє деякі відлагоджувальні дані.
Порт RX буде найближчим до інших 3, він має найменші коливання напруги та найменше загальне значення серед усіх пінів UART.
Ви можете поміняти порти TX та RX, і нічого не станеться, але якщо ви помилитеся між GND та портом VCC, ви можете зруйнувати схему.
З логічним аналізатором:
Визначення швидкості передачі UART
Найпростіший спосіб визначити правильну швидкість передачі - це подивитися на вивід піна TX та спробувати прочитати дані. Якщо отримані дані нечитабельні, переключайтеся на наступну можливу швидкість передачі, поки дані не стануть читабельними. Для цього можна використовувати USB-серійний адаптер або універсальний пристрій, такий як Bus Pirate, у поєднанні з допоміжним скриптом, таким як baudrate.py. Найпоширеніші швидкості передачі - 9600, 38400, 19200, 57600 та 115200.
Важливо зауважити, що в цьому протоколі потрібно підключити TX одного пристрою до RX іншого!
Bus Pirate
У цьому сценарії ми будемо перехоплювати UART-комунікацію Arduino, яка надсилає всі виводи програми на монітор Серійного порту.
Last updated