Мне всегда нужно связываться с портом TTL UART на MCU с компьютером. Когда я говорил об этом, люди всегда называли порт UART портом RS-232. Они правильные? Если нет, то в чем между ними разница?
Кроме того, могу ли я использовать преобразователь RS-232-USB для порта TTL UART?
Порт вашего преобразователя 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 дюйма. Я купил полдюжины подобных устройств для моего программиста прошивки, и она использовала их, чтобы общаться с различными платами разработки.
UART = универсальный асинхронный приемник/передатчик. Это основная микросхема (или виртуальная функция в микроконтроллере), которая последовательно кодирует биты данных в стандартный формат со стартовым битом, стоповым битом (битами), скоростью и т. д. Но «UART» — это только ЧАСТЬ того, что «RS- 232" есть.
RS-232 добавляет устаревшие значения напряжения к двоичным значениям (0/1 или hi/lo, или «метка» и «пробел» в разговоре RS-232). TTL UART будет выводить (и вводить) только уровни TTL, по существу, 0 бит = 0 В и 1 бит = 5 В. И многие современные гаджеты (Arduino и др.) просто используют уровни напряжения TTL для последовательной связи. Но «правильное» определение RS-232 использовало довольно ВЫСОКИЕ и ДВУПОЛЯРНЫЕ напряжения для определения нуля и единицы. Конкретно:
Эти напряжения восходят к старым электромеханическим временам телетайпов, которые были чудесным чудовищем механического чуда. И эти достаточно высокие напряжения были необходимы для управления электромеханическими битами.
Но в наши дни старый протокол RS-232 остается полезным стандартом, но эти старые высокие биполярные напряжения скорее остались в прошлом. И вполне вероятно, что подрастает целое новое поколение, которое никогда ничего не вспомнит о тех старых уровнях напряжения и будет думать, что RS-232 — это старый унаследованный 5-вольтовый протокол. Особенно, когда все напряжения питания мигрируют к логическим уровням 3,3 В.
Мне всегда нужно связываться с портом 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 . У меня нет реального желания копировать эту работу.
Прохожий