USART, UART, RS232, USB, SPI, I2C, TTL и т. Д. Что все это и как они связаны друг с другом?


166

Как начинающий любитель электроники, я слышал эти термины, и все больше повсюду. В его корне я понимаю, что все они основаны на связи между устройствами, компьютерами, периферийными устройствами и т. Д.

У меня есть общее представление о том, как все они работают, но я запутываюсь, когда вижу их очень много, и мне трудно понять, как они связаны друг с другом. Например, является ли UART подмножеством USART? В чем разница между RS232 и Serial? Каковы основные различия между всеми этими методами коммуникации: надежность, стоимость, применение, скорость, требования к оборудованию?

Если вы можете себе представить, у меня есть все эти термины, написанные на карточках, разбросанных по кофейному столику, и мне нужен кто-то, чтобы просто помочь мне организовать мое понимание. Простите, если этот вопрос немного расплывчат, но я действительно чувствую, что природа этого вопроса все вместе.


Ответы:


253

Серийный - это общее слово для всего, что называется «мультиплексирование с временным разделением», чтобы использовать дорогой термин. Это означает, что данные отправляются с течением времени, чаще всего один бит за другим. Все протоколы, которые вы называете, являются последовательными протоколами.

УАППдля универсального асинхронного приемника-передатчика является одним из наиболее часто используемых последовательных протоколов. Это почти так же старо, как и я, и очень просто. Большинство контроллеров имеют аппаратный 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 в квадрате C») также является синхронным протоколом, и мы впервые видим, что в нем есть некоторый «интеллект»; другие тупо сдвинули биты внутрь и наружу, вот и все. I2C использует только 2 провода, один для часов (SCL) и один для данных (SDA). Это означает, что ведущий и ведомый отправляют данные по одному и тому же проводу, снова контролируемому ведущим, который создает тактовый сигнал. I2C не использует отдельные ведомые устройства для выбора конкретного устройства, но имеет адресацию. Первый байт, отправленный мастером, содержит 7-битный адрес (так что вы можете использовать 127 устройств на шине) и бит чтения / записи, указывающий, будут ли следующие байты также поступать от мастера или должны поступить от раб. После каждого байта получатель должен отправить «0» для подтверждения приема байта, который мастер фиксирует с 9-м тактовым импульсом. Если мастер хочет записать байт, тот же процесс повторяется: мастер помещает бит за битом в шину и каждый раз выдает тактовый импульс, сигнализирующий, что данные готовы для чтения. Если мастер хочет получить данные, он генерирует только тактовые импульсы. Подчиненное устройство должно позаботиться о том, чтобы следующий бит был готов после подачи тактового импульса. Этот протокол запатентован NXP (ранее Phillips), чтобы сэкономить на стоимости лицензирования, Atmel использует слово TWI (двухпроводный интерфейс), которое точно такое же, как I2C, поэтому любое устройство AVR не будет иметь I2C, но будет иметь TWI. Если мастер хочет получить данные, он генерирует только тактовые импульсы. Подчиненное устройство должно позаботиться о том, чтобы следующий бит был готов после подачи тактового импульса. Этот протокол запатентован NXP (ранее Phillips), чтобы сэкономить на стоимости лицензирования, Atmel использует слово TWI (двухпроводный интерфейс), которое точно такое же, как I2C, поэтому любое устройство AVR не будет иметь I2C, но будет иметь TWI. Если мастер хочет получить данные, он генерирует только тактовые импульсы. Подчиненное устройство должно позаботиться о том, чтобы следующий бит был готов после подачи тактового импульса. Этот протокол запатентован NXP (ранее Phillips), чтобы сэкономить на стоимости лицензирования, Atmel использует слово TWI (двухпроводный интерфейс), которое точно такое же, как I2C, поэтому любое устройство AVR не будет иметь I2C, но будет иметь TWI.

Два или более сигналов на одном и том же проводе могут вызвать конфликты, и у вас возникнет проблема, если одно устройство отправит «1», а другое - «0». Поэтому шина подключена ИЛИ: два резистора поднимают шину на высокий уровень, а устройства посылают только низкие уровни. Если они хотят послать высокий уровень, они просто выпускают автобус.

TTL (Transistor Transistor Logic) не является протоколом. Это более старая технология для цифровой логики, но название часто используется для обозначения напряжения питания 5 В, часто неправильно ссылаясь на то, что следует называть UART.


О каждом из них можно написать книгу, и, похоже, я уже в пути. Это просто очень краткий обзор, дайте нам знать, если некоторые вещи требуют уточнения.


+1 только на TTL, я предполагаю, что OP означает Serial TTL, который по моему опыту описывает сигналы UART перед драйвером приемопередатчика / шины RS232.
Кенни

4
@ Кенни - но не существует такой вещи, как "серийный TTL". Это УАРТ. Что если напряжение составляет 3,3 В? TTL относится только к 5 В.
Stevenvh

вот о чем я говорю, в моем опыте ввод / вывод UART часто называют TTL Serial.
Кенни

Удивительный ответ! Я прочитаю это еще несколько раз и сообщу, есть ли у меня вопросы. Спасибо, Стивен.
Capcom

8
Лучше было бы ловить рыбу для возраста Uart :-)
Вайбхав Гарг

11

Это очень близко к той области, где вам лучше читать статьи, чем задавать вопросы для нестандартных ответов, но если обратиться к одному главному моменту, который производитель иногда размывает:

Существует два основных типа последовательных интерфейсов: синхронный и асинхронный.

Синхронные интерфейсы имеют данные, передаваемые с их синхронизацией относительно явной синхронизации, которая также предоставляется. Классическим примером этого является SPI, но существуют также специальные формы, такие как I2S для аудиопреобразователей, JTAG, интерфейсы конфигурации FPGA и т. Д. Многие параллельные каналы связи - это просто идея, расширяющая одновременное перемещение большего количества битов. Часто, но не всегда, они отправляют наиболее значимый бит первым.

Асинхронные интерфейсы имеют синхронизацию, закодированную в самом потоке данных. Для «последовательных портов» и связанных с ними стандартов, таких как RS232, синхронизация слова относится к начальному биту, и после этого приемник просто выбирает линию с правильными интервалами. Другие интерфейсы могут быть немного более сложными и требуют более сложного восстановления тактовых импульсов с использованием фазовой синхронизации и алгоритмов. UART - это «универсальный асинхронный приемопередатчик» - действительно название функционального блока, часто используемого для реализации «последовательного порта» с некоторой гибкостью в отношении длины слова, скорости и условий начала / окончания. Такие вещи, как RS232, RS422 и т. Д., Являются стандартами для бортовой электрической сигнализации данных, которые вы получите от них - напряжение, односторонний или дифференциальный, если 1 - высокий или низкий и т. Д.

«USART» может быть источником законной путаницы, так как это своего рода гибридное устройство, «Unversal Synchronous / Asynchronous Receiver Transmitter». По сути, это и наиболее часто используется как UART, но его также можно настроить для генерировать (или учитывать) отдельные часы, синхронизированные с данными, и может быть в состоянии изменить порядок битов. Как правило, он настраивается для взаимодействия с SPI, но он может не иметь возможности удалить время, выделенное для начальных / конечных битов, поэтому может не иметь возможности работать с чем-то вроде I2S, который может ожидать непрерывной передачи данных без пропусков между словами.


Очень хорошее объяснение (Y) Очень понравилась краткость. Thankyou @chris
Ави Мехенвал

8

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

TTL означает Transistor-Transistor-Logic и имеет свой уровень для логического нуля около 0В и для логического около 5В. Часто любая логика 5 В называется TTL, хотя большинство схем в настоящее время построены как CMOS. Сегодня есть также много схем, которые работают на 3.3 В, который больше не является TTL.

Что касается внутренних уровней, уровни на линии RS-232 инвертированы, + 12 В соответствует логическому минимуму, а -12 В соответствует логическому максимуму, что может привести к путанице.

Для описания формата данных обычно показывается логический сигнал. Когда линия простаивает, она высокая. Передача начинается с младшего начального бита, сначала идут биты данных с младшим битом, необязательный бит четности и один-два стоповых бита (логический 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.