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

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

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

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

144 голоса | спросил capcom 13 PM000000100000003631 2012, 22:14:36

4 ответа


226

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

UART , для универсального асинхронного приемника, является одним из наиболее используемых последовательных протоколов. Он почти такой же старый, как и я, и очень прост. Большинство контроллеров имеют аппаратное UART на борту. Он использует одну линию передачи данных для передачи и одну для приема данных. Чаще всего передаются 8-битные данные: 1 стартовый бит (низкий уровень), 8 бит данных и 1 стоповый бит (высокий уровень). Начальный бит низкого уровня и бит остановки высокого уровня означают, что для начала связи всегда происходит переход от высокого к низкому. Вот что описывает UART. Нет уровня напряжения, поэтому вы можете использовать его на 3,3 В или 5 В, в зависимости от того, какой микроконтроллер использует. Обратите внимание, что микроконтроллеры, которые хотят общаться через UART, должны согласовать скорость передачи, скорость передачи по битам, поскольку для синхронизации они имеют только начальный бит. Это называется асинхронной связью.

Для связи на большие расстояния (это не должно быть сотни метров) UART 5 V не очень надежный, поэтому он преобразуется в более высокое напряжение, обычно +12 В для «0» и -12 В для «1». Формат данных остается прежним. Тогда у вас есть RS-232 (который вы на самом деле должны вызывать EIA-232, но никто этого не делает.)

Зависимость от времени является одним из больших недостатков UART, а решение USART для универсального синхронного /асинхронного приемного передатчика. Это может сделать UART, но также и синхронный протокол. В синхронном режиме есть не только данные, но и переданные часы. С каждым битом импульс синхронизации сообщает приемнику, что он должен защелкнуть этот бит. Синхронные протоколы либо требуют более высокой пропускной способности, как в случае манчестерского кодирования, либо дополнительный провод для часов, таких как SPI и I2C.

SPI (последовательный периферийный интерфейс) - еще один очень простой последовательный протокол. Ведущий посылает тактовый сигнал, и каждый импульс синхронизации переключает один бит на подчиненный и один бит в, поступающий от подчиненного устройства. Поэтому имена сигналов SCK для часов, MOSI для Master Out Slave In и MISO для Master In Slave Out. Используя сигналы SS (Slave Select), ведущий может управлять несколькими подчиненными устройствами на шине. Существует два способа подключения нескольких подчиненных устройств к одному ведущему, один из которых упоминается выше, то есть с использованием выбора подчиненного устройства, а другой - последовательное соединение, он использует меньше аппаратных выводов (выбирает строки), но программное обеспечение становится сложным.

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

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

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


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

ответил stevenvh 13 PM000000100000005631 2012, 22:51:56
10

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

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

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

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

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

ответил Chris Stratton 13 PM000000100000005831 2012, 22:52:58
8

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

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

В отношении внутренних уровней уровни на линии RS-232 инвертируются, +12 В соответствует логическому минимуму, а -12 В соответствует логическому максимуму, что может сбить с толку.

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

UART (универсальный асинхронный приемник-передатчик) - это устройство в компьютере или микроконтроллере, который выполняет такую ​​асинхронную связь.

USART (универсальный асинхронный синхронный приемник-передатчик) - это устройство, которое может дополнительно выполнять некоторые виды синхронной передачи, следовательно, дополнительный S. Какой вид меняется, вам нужно найти его в листе данных.

SPI, I²C и USB отличаются (и в случае с USB очень длинными) историями.

ответил starblue 14 AM000000100000004231 2012, 10:19:42
1

Я согласен с тем, что было сказано о протоколах SPI и CAN. Чтобы улучшить производительность, был разработан протокол CAN. В этой концепции арбитража используется, в котором два устройства готовы к общению, тогда в зависимости от их приоритета происходит передача или прием. CAN широко используется во многих отраслях.

ответил user19166 19 FebruaryEurope/MoscowbTue, 19 Feb 2013 14:38:31 +0400000000pmTue, 19 Feb 2013 14:38:31 +040013 2013, 14:38:31

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132