В чем разница между RS-232 и TTL UART? [дубликат]

Мне всегда нужно связываться с портом TTL UART на MCU с компьютером. Когда я говорил об этом, люди всегда называли порт UART портом RS-232. Они правильные? Если нет, то в чем между ними разница?

Кроме того, могу ли я использовать преобразователь RS-232-USB для порта TTL UART?

Около 7-10 вольт, плюс-минус

Ответы (3)

Порт вашего преобразователя USB<->RS-232 будет выдавать что-то вроде +/-9 В и может принимать +/-25 В или короткое замыкание без повреждений.

UART на вашем MCU использует логический уровень (обычно 0 В / 3,3 В или 0 В / 5 В). Подача менее 0 В или более Vcc может разрушить микросхему микроконтроллера.

Также логические уровни инвертированы между двумя типами (за исключением опции на очень небольшом количестве микроконтроллеров).

Для двунаправленного инвертирования и преобразования между уровнями UART и уровнями RS-232 обычно используется микросхема, такая как MAX232 (для логики 5 В). MAX232 также генерирует собственные источники питания +/-9 В из одного источника питания +5 В с помощью удвоителя напряжения подкачки заряда.

TL;DR:

Нет, вы не можете использовать кабель USB-RS-232 (он же USB-последовательный) для их соединения. Есть дешевые преобразователи USB-TTL Serial. Есть некоторые проблемы с самыми дешевыми китайскими моделями, когда речь идет о работе с напряжением 3,3 В, обязательно немного изучите это. Adafruit продает такие устройства за 10 долларов. Я думаю, вы можете найти их на Digikey и в других источниках.

введите описание изображения здесь

Поскольку аппаратный интерфейс не определяется каким-либо стандартом на стороне MCU, они обычно снабжены незадействованными проводами с гнездовыми клеммами для сопряжения с квадратными штырями 0,025 дюйма, как вы найдете на разъеме с шагом 0,1 дюйма. Я купил полдюжины подобных устройств для моего программиста прошивки, и она использовала их, чтобы общаться с различными платами разработки.

Что за хрень с дешевыми китайскими переходниками USB to Serial под 3.3v?
@SomeNorwegianGuy Cripes- Я писал это много лет назад. Я помню, что вам пришлось перерезать дорожку и перемычку, чтобы заставить их работать правильно, и переключатель был помечен каким-то неправильным образом (по памяти, может быть неправильно). Вероятно, уже исправлено. Был 3,3 В (недешевый) с использованием чипа National (теперь TI) xx3232. Чип 3,3 В поджарился из-за чего-то на линиях RS-232 на скамейке, никогда не видел такого с чипом в стиле MAX232.

UART = универсальный асинхронный приемник/передатчик. Это основная микросхема (или виртуальная функция в микроконтроллере), которая последовательно кодирует биты данных в стандартный формат со стартовым битом, стоповым битом (битами), скоростью и т. д. Но «UART» — это только ЧАСТЬ того, что «RS- 232" есть.

RS-232 добавляет устаревшие значения напряжения к двоичным значениям (0/1 или hi/lo, или «метка» и «пробел» в разговоре RS-232). TTL UART будет выводить (и вводить) только уровни TTL, по существу, 0 бит = 0 В и 1 бит = 5 В. И многие современные гаджеты (Arduino и др.) просто используют уровни напряжения TTL для последовательной связи. Но «правильное» определение RS-232 использовало довольно ВЫСОКИЕ и ДВУПОЛЯРНЫЕ напряжения для определения нуля и единицы. Конкретно:

  • 0 бит = "пробел" = +3В ~ +15В
  • 1 бит = «метка» = -15 В ~ -3 В

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

Но в наши дни старый протокол RS-232 остается полезным стандартом, но эти старые высокие биполярные напряжения скорее остались в прошлом. И вполне вероятно, что подрастает целое новое поколение, которое никогда ничего не вспомнит о тех старых уровнях напряжения и будет думать, что RS-232 — это старый унаследованный 5-вольтовый протокол. Особенно, когда все напряжения питания мигрируют к логическим уровням 3,3 В.

Ссылка: https://en.wikipedia.org/wiki/RS-232#Voltage_levels

На самом деле история уровней напряжения неверна. Причиной выбора +/- 15В было увеличение отношения сигнал/шум. Дело не в шуме в трансмиссии, а в том, чтобы подняться выше уровня шума цепей. Другим примером такого выбора конструкции были ранние ПЛК (промышленные компьютеры). Некоторые использовали RAM 20 В, да RAM, чтобы преодолеть уровень шума всего электрооборудования на заводе.
Хотя RC упомянул об этом в двух последних предложениях, я бы повторил: UART на 3,3 В uCs также составляет 3,3 В, деталь, которую IMO стоит подчеркнуть, если кто-то не хочет поджаривать свои чипсы; большинство решений USB <-> UART, которые я видел, позволяют изменять здесь уровни; хотя 3,3 В не является строго «уровнем TTL», я часто видел, как эти «TTL UART» выдают высокий сигнал 3,3 В. OTOH, многие используемые в настоящее время аппаратные средства, совместимые с RS-232, принимают уровни TTL (т. е. они интерпретируют 0 В как действительный логический высокий уровень), что позволяет использовать их с этими «TTL UART» только с инверсией сигнала, что затем обычно делается в программном обеспечении.

Мне всегда нужно связываться с портом TTL UART на MCU с компьютером. Когда я говорил об этом, люди всегда называли порт UART портом RS-232. Они правильные? Если нет, то в чем между ними разница?

Читая между строк, вы можете говорить о случае, когда у вас есть плата с микроконтроллером, к которому можно получить доступ (загрузить код, отладить и т. д.) через порт USB на вашем компьютере. Сейчас это довольно распространено, чтобы работать таким образом.

Если это так, вполне вероятно, что ваша операционная система настраивает «виртуальный порт RS-232» для вашего устройства. На самом деле это вовсе не порт RS-232. Вместо этого это какое-то программное обеспечение, работающее в качестве драйвера под вашей операционной системой, которое эмулирует детали старого драйвера «последовательного порта». Это программное обеспечение взаимодействует с отдельным MCU (тот, который также находится на плате с вашим MCU) через микросхему преобразователя USB-последовательный порт (также есть несколько производителей для них). Отдельный MCU - это то, что на самом деле подключено. к контактам порта UART вашего MCU. Скорее всего, он также подключен к контактам JTAG вашего микроконтроллера, чтобы можно было выполнять отладку.

Так. Ага. Люди называют это портом RS-232, когда думают об этом с точки зрения того, как операционная система + программное обеспечение драйвера заставляет его отображаться для прикладной программы, работающей в этой операционной системе. Затем вы можете использовать любое стандартное приложение, которое знает, как открыть порт RS-232, используя стандартные вызовы функций, которые операционная система предоставляет для этой цели, и оно будет работать нормально. Так что это порт RS-232 с точки зрения этой прикладной программы.

Но на самом деле это не так.


Отдельно UART представляет собой «универсальный асинхронный приемник / передатчик» и традиционно относится к микросхеме IC или функциональному блоку в MCU. В любом случае, это обычно аппаратное обеспечение, предназначенное для того, чтобы программное обеспечение, которое вы пишете, могло легко обрабатывать используемый асинхронный последовательный протокол (стартовый бит, биты данных и один или несколько стоповых битов). настоящая боль и высокая скорость становятся тогда более или менее недостижимыми.

Вы также увидите USART — универсальный синхронный/асинхронный приемник/передатчик — на некоторых микроконтроллерах. Это просто означает, что они могут делать больше, чем UART, но они также включают возможности UART.

RS-232 — это набор спецификаций о напряжениях, нагрузке и т. д. Он также определяет множество деталей сигнализации, охватывающих довольно много различных доступных сигнальных линий. Но лучше рассматривать RS-232 как спецификацию электроники, определяющую диапазоны напряжения для метки и пробела , запасы по шуму, детали допустимой загрузки приемника и различные другие детали, связанные с переводом между диапазонами аналоговых сигналов и дискретными цифровыми, а не столько о каких-то конкретный последовательный протокол UART.

Я просто собираюсь отослать вас к страницам Wiki для получения подробной информации (я думаю, вы должны были прочитать, прежде чем спрашивать здесь). Это: RS-232 и UART . У меня нет реального желания копировать эту работу.