USART, UART, RS232, USB, SPI, I2C, TTL тощо. Що це все, і як вони співвідносяться один з одним?


165

Як любитель електроніки-початківців, я чув ці терміни, і все більше їх кидають всюди. По суті, я розумію, що всі вони засновані на спілкуванні між пристроями, комп’ютерами, периферійними пристроями тощо.

У мене є основне розуміння того, як усі вони працюють, але я заплутаюся, коли бачу їх стільки і мені важко зрозуміти, як вони ставляться один до одного. Наприклад, чи є UART підмножиною USART? Яка різниця між RS232 та Serial? Які основні відмінності між усіма цими методами зв'язку: надійність, вартість, застосування, швидкість, вимоги до обладнання?

Якщо ви можете уявити, у мене всі ці терміни написані на картках, розкидані на журнальному столику, і мені потрібен хтось, хто просто допоможе мені організувати своє розуміння. Пробачте, якщо це питання трохи розпливчасте, але я справді відчуваю, що в цьому полягає суть цього питання.


Відповіді:


253

Serial - це парасольове слово для всього, що є "Мультиплексичним часовим підрозділом", щоб використовувати дорогий термін. Це означає, що дані надсилаються поширюються з часом, найчастіше - один окремий біт. Усі протоколи, які ви іменуєте, - це послідовні протоколи.

УАРТ, для Універсального асинхронного передавача приймачів, є одним із найбільш часто використовуваних послідовних протоколів. Вона майже така ж стара, як і я, і дуже проста. Більшість контролерів мають апаратну UART на борту. Він використовує єдиний рядок даних для передачі і один для прийому даних. Найчастіше 8-бітні дані передаються наступним чином: 1 початковий біт (низький рівень), 8 бітів даних та 1 стоп-біт (високий рівень). Бітовий початковий біт і стоп-біт високого рівня означають, що для початку зв'язку завжди існує високий перехід на низький. Ось що описує UART. Немає рівня напруги, тому його можна мати на 3,3 В або 5 В, залежно від того, який мікроконтролер використовує. Зауважте, що мікроконтролери, які хочуть спілкуватися через UART, повинні узгодити швидкість передачі, швидкість передачі бітів, оскільки вони мають лише початкові біти, що падають на край синхронізації. Це називається асинхронним зв'язком.

Для міжміського зв'язку (це не повинно бути сотням метрів) 5 В UART не дуже надійний, тому він перетворюється на більш високу напругу, як правило, +12 В для "0" і -12 В для " 1 ". Формат даних залишається колишнім. Тоді у вас є RS-232 (який ви насправді повинні називати EIA-232, але ніхто цього не робить.)

Залежність від часу є одним з найбільших недоліків UART, а рішення - USART , для Універсального синхронного / асинхронного передавача. Це може зробити UART, але і синхронний протокол. У синхронному є не тільки дані, а й передані годинники. З кожним бітом тактовий імпульс повідомляє приймачу, що він повинен фіксувати цей біт. Синхронним протоколам або потрібна більша пропускна здатність, як у випадку з кодуванням Манчестера, або додатковий провід для годинника, як SPI та I2C.

SPI (Serial Peripheral Interface) - ще один дуже простий послідовний протокол. Ведучий посилає тактовий сигнал, і при кожному тактовому імпульсі він зміщується один біт на підлеглий, і один біт, що йде від підлеглого. Отже, імена сигналів - це SCK для годинника, MOSI для Master Out Slave In і MISO для Master In Slave Out. Використовуючи сигнали SS (Slave Select), майстер може керувати більш ніж одним веденим на шині. Є два способи підключення декількох рабовласницьких пристроїв до одного ведучого, один згаданий вище, тобто використання підлеглого вибору, а інший - це ланцюжок ромашок, він використовує менше апаратних штифтів (виберіть рядки), але програмне забезпечення ускладнюється.

I2C(Inter-Integrated Circuit, вимовляється "I квадрат S") також є синхронним протоколом, і це перше, що ми бачимо, який має деякий "інтелект" у ньому; інші тупо пересували біти туди-сюди, і це було те. I2C використовує лише 2 дроти, один для тактових (SCL) і один для даних (SDA). Це означає, що ведучий і підлеглий надсилають дані через один і той же провід, який знову контролюється ведучим, який створює тактовий сигнал. I2C не використовує окремий підлеглий вибір для вибору конкретного пристрою, але має адресацію. Перший байт, надісланий майстром, містить 7-бітну адресу (так що ви можете використовувати 127 пристроїв на шині) та біт для читання / запису, що вказує, чи будуть наступні байти (і) також надходити від головного чи повинні надходити від майстра раб. Після кожного байту одержувач повинен надіслати "0", щоб підтвердити отримання байту, яку майстер зав'язує 9-м тактовим імпульсом. Якщо майстер хоче записати байт, повториться той самий процес: майстер кладе біт за бітом на шину і кожен раз подає тактовий імпульс, щоб сигналізувати, що дані готові до читання. Якщо майстер хоче отримати дані, він генерує лише тактові імпульси. Раб повинен подбати про те, щоб наступний біт був готовий, коли подається імпульс годинника. Цей протокол запатентований NXP (раніше Phillips), щоб заощадити вартість ліцензування, Atmel використовує слово TWI (2-провідний інтерфейс), який точно такий же, як I2C, тому будь-який пристрій AVR не матиме I2C, але у нього буде TWI. Якщо майстер хоче отримати дані, він генерує лише тактові імпульси. Раб повинен подбати про те, щоб наступний біт був готовий, коли подається імпульс годинника. Цей протокол запатентований NXP (раніше Phillips), щоб заощадити вартість ліцензування, Atmel використовує слово TWI (2-провідний інтерфейс), який точно такий же, як I2C, тому будь-який пристрій AVR не матиме I2C, але у нього буде TWI. Якщо майстер хоче отримати дані, він генерує лише тактові імпульси. Раб повинен подбати про те, щоб наступний біт був готовий, коли подається імпульс годинника. Цей протокол запатентований NXP (раніше Phillips), щоб заощадити вартість ліцензування, Atmel використовує слово TWI (2-провідний інтерфейс), який точно такий же, як I2C, тому будь-який пристрій AVR не матиме I2C, але у нього буде TWI.

Два або більше сигналів на одному проводі можуть спричинити конфлікти, і у вас виникнуть проблеми, якщо один пристрій надсилає "1", а інший надсилає "0". Тому шина підключена АБО: два резистори витягують шину на високий рівень, а пристрої передають лише низький рівень. Якщо вони хочуть надіслати високий рівень, вони просто відпустять автобус.

TTL (Transistor Transistor Logic) не є протоколом. Це більш стара технологія цифрової логіки, але назва часто використовується для позначення напруги живлення 5 В, часто неправильно посилаючись на те, що слід називати UART.


Про кожне з них можна написати книгу, і, схоже, я добре на своєму шляху. Це лише дуже короткий огляд, повідомте нам, чи потребують уточнення деякі речі.


+1 тільки на TTL, я здогадуюсь, що ОП означає послідовний TTL, який, на мій досвід, описує сигнали UART перед драйвером приймача / шини RS232.
kenny

4
@Kenny - але не існує такого поняття, як "серійний TTL". Це UART. Що робити, якщо напруга 3,3 В? TTL посилається лише на 5 В.
stevenvh

це те, про що я говорю, UART I / O часто називають у моєму досвіді TTL Serial.
kenny

Дивовижна відповідь! Я прочитаю його ще кілька разів, і повідомляю, чи є у мене питання. Спасибі, Стівен
capcom

8
Краще зробити ставку на рибалку для віку Уарт тоді :-)
Vaibhav Garg

11

Це зовсім недалеко від території, де вам краще читати статті, ніж ставити запитання для користувацьких відповідей, але звертатися до одного головного моменту, який виробник іноді розмиває:

Існує два основних типи послідовних інтерфейсів: синхронний та асинхронний.

Синхронні інтерфейси мають дані, що передаються з тимчасовим інтервалом щодо явного тактового часу, що також надається. Класичним прикладом цього є SPI, але існують також спеціальні форми, такі як I2S для аудіоперетворювачів, інтерфейси конфігурації JTAG, FPGA тощо. Багато паралельних каналів зв'язку саме ця ідея поширюється на переміщення більшої кількості бітів одночасно. Вони часто, але не завжди спочатку надсилають найзначніший біт.

Асинхронні інтерфейси мають час, закодований у самому потоці даних. Для "послідовних портів" та відповідних стандартів, таких як RS232, час синхронізації слова є відносно початкового біта, і приймач просто вибирає рядок через потрібні інтервали після цього. Інші інтерфейси можуть бути трохи складнішими і вимагати більш фантазійного відновлення годин, використовуючи фазові блоковані петлі та алгоритми. UART - це "Універсальний асинхронний передавач приймачів" - це дійсно назва функціонального блоку, який часто використовується для реалізації "послідовного порту" з деякою гнучкістю до умов довжини, швидкості та умов початку та закінчення. Такі речі, як RS232, RS422 і т.д., є стандартами для бортової електричної сигналізації даних, які ви отримаєте з них - напруги, однобічного або диференціального, якщо 1 високий або низький тощо.

"USART" може бути джерелом законної плутанини, оскільки це свого роду гібридний пристрій, "Неперевершений синхронний / асинхронний передавач приймачів" По суті, це і найчастіше використовується як UART, але він також може бути налаштований на генерувати (або враховувати) окремий годинник, синхронізований з даними, і може бути в змозі змінити порядок бітів. Зазвичай це може бути налаштовано для взаємодії з SPI, але він може не в змозі зняти час, призначений для запуску / зупинки бітів, тому може не мати можливості працювати з чимось на зразок I2S, який може очікувати, що дані будуть постійно протікати без прогалин між словами.


Дуже приємне пояснення (Y) Полюбив стислість. Thankyou @chris
Avi Mehenwal

8

RS-232 - це дуже простий послідовний протокол, який спочатку використовувався для модемів і телетайпів. Це те, що зазвичай називають послідовним портом (або COM-портом у MS-Windows). На лінії він номінально використовує рівні ± 12 В, але вони можуть сильно відрізнятися, оскільки визначення визначається при ± 3 В. Завжди є лінійний драйвер (в даний час, як правило, з сімейства MAX232), який перетворює ці рівні на внутрішні цифрові рівні сигналу комп'ютера або мікроконтролера.

TTL означає транзистор-транзистор-логіку і має рівень для логічного нуля поблизу 0V, а для логічного - близько 5V. Часто будь-яку 5В логіку називають TTL, хоча більшість схем сьогодні побудовані як CMOS. Сьогодні також існує багато схем, які працюють на 3,3 В, що вже не TTL.

Щодо внутрішніх рівнів рівні на лінії RS-232 перевернуті, + 12V відповідає логічному низькому, а -12V відповідає логічному максимуму, що може бути заплутано.

Для опису формату даних зазвичай відображається логічний сигнал. Коли лінія простоює, вона висока. Передача починається з біту низького старту, спочатку біти даних з найменш значущим бітом, необов'язковий біт парності та один до двох стоп-бітів (логічний 1). Це називається асинхронною передачею, оскільки біти запуску та зупинки синхронізують дані для кожного байта окремо.

UART (Універсальний асинхронний передавач приймачів) - це пристрій в комп'ютері або мікроконтролері, який здійснює цей вид асинхронного зв'язку.

USART (Універсальний асинхронний синхронний передавач приймачів) - це пристрій, який може додатково виконувати певні види синхронної передачі, отже, і додатковий S. Який тип залежить, вам потрібно переглянути його на аркуші даних.

SPI, I²C та USB - це різні (а у випадку із USB дуже довгими) історії.


1

Я погоджуюся з тим, що було сказано про протоколи SPI та CAN. Для підвищення ефективності роботи було розроблено протокол CAN. У цій арбітражній концепції використовується концепція, в якій два пристрої готові спілкуватися, то залежно від їх пріоритетності відбувається передача чи прийом. CAN широко використовується в багатьох галузях промисловості.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.