Что такое TX и RX относительно?


11

Я работал с устройством, которое использует связь RS232 с ПК. Был некоторый беспорядок, поскольку они определили свои контакты TX и RX относительно устройства. В своих определениях они используют для обозначения TX, являющегося контактом, который отправляет данные с устройства. На мой взгляд, это должно быть помечено как RX, потому что это пин-код, который получает компьютер.

Как должны быть определены штифты? Они относятся к каждому устройству или к «контроллеру»?


6
Я никогда не видел, чтобы TX / RX были с другой точки зрения, чем отправляющая сторона. Так что TX - это пин, на который отправляющая часть отправляет, а RX принимается. Я никогда не сталкивался с именами, как вы предлагаете.
Мортен Дженсен

13
Именование контактов RS232 - это особый случай, потому что они определяли вещи с точки зрения DTE (оборудование терминала данных) и DCE (оборудование передачи данных) и сумели вызвать путаницу. DCE имеет вывод данных на вывод RX и ввод на вывод TX, DTE - противоположность. Теоретически пол разъемов должен указывать на то, что к чему, на практике достаточно производителей ошибаются, чтобы сделать его менее надежным руководством. Есть причина, по которой вы имели обыкновение покупать маленькие коробки с D9 и D25 разных полов с набором маленьких перемычек и несколькими светодиодами на общих сигнальных линиях.
Дэн Миллс

1
Когда у тебя день рождения, я не получаю тебе подарок.
Ctrl-Alt-Delor

1
@ MortenJensen хорошо, если они названы с точки зрения отправляющей стороны, оба должны называться TX.
user253751

2
@TerryCarmen Не верно для DCE, где имена выводов и направления потока данных меняются местами в соответствии со стандартом. DTE Tx -> DCE Tx и DTE Rx -> DCE Rx, да, странно и дерьмо, но это то, что есть.
Дэн Миллс

Ответы:


23

Это может быть легче понять, если мы быстро рассмотрим, как изначально использовался стандарт RS-232.

Примечание. Все номера контактов ниже относятся к оригинальному 25-контактному разъему D; нумерация изменилась на 9-контактном разъеме, используемом на более поздних ПК.

Фон

DTE = оборудование терминала данных - в старые времена это обычно был терминал или принтер, или оборудование, имитирующее их.

DCE = оборудование для передачи данных - в старые времена это обычно был модем или другой интерфейс WAN.

Контакт 2 на исходном 25-контактном разъеме D (описанный в стандарте как «Переданные данные», «Цепь BA», «V24. Номер 103») должен быть данными от DTE к DCE.

Контакт 3 на исходном 25-контактном разъеме D (описываемый в стандарте как «Полученные данные», «Цепь BB», «V24. Номер 104») должен быть данными от DCE к DTE.

Это означало, что кабель, соединяющий терминал и модем, был «прямым» - контакт 2 на терминале (DTE) на одном конце кабеля, откуда исходили данные, был подключен к контакту 2 на модеме (или подобном) на другом конец кабеля (DCE), где были получены эти данные. Затем модем отправил эти данные по каналу связи на любое оборудование, которое находилось на другом конце этого канала.

Контакт 3 «Полученные данные» был сигналом данных в противоположном направлении - передавался модемом (DCE) на контакте 3 и принимался терминалом (DTE) на контакте 3.

Следовательно, вы можете видеть, что маркировка того, что было передано и что было получено, была с точки зрения DTE (то есть терминала). Все это имело смысл, когда типичные связи были между DCE и DTE.

Однако элементы оборудования, которые мы используем в эти дни (даже если они не используют RS-232 и вместо этого используют интерфейс протокола TTL или другого напряжения UART), обычно все являются DTE (за одним исключением, являющимся модемами). Соединение контакта 2 (который является выходом) на одной части DTE, с выводом 2 (другой выход) на другой части оборудования, настроенного как DTE, не имеет смысла (и при использовании сигналов логического уровня может даже привести к повреждению оборудования). Это где использование "скрещенных" или "нуль-модемных" (то есть без модема) кабелей.

Ваш вопрос

Я работал с устройством, которое использует связь RS232 с ПК. Был некоторый беспорядок, поскольку они определили свои контакты TX и RX относительно устройства. В своих определениях они используют для обозначения TX, являющегося контактом, который отправляет данные с устройства. На мой взгляд, это должно быть помечено как RX, потому что это пин-код, который получает компьютер.

Как должны быть определены штифты? Они относятся к каждому устройству или к «контроллеру»?

Из приведенной выше справочной информации вы можете видеть, что их маркировка верна, если их устройство работает как DTE (что большинство, если это не модем или другой интерфейс WAN). На части DTE контакт, помеченный как «Переданные данные» (контакт 2 на 25-контактном разъеме) , отправляет данные. (И, как объяснено выше, на части DCE (например, модем) вывод, известный как «Переданные данные» (вывод 2 на 25-контактном разъеме), фактически является входом, который получает сигнал от ООД.)

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

Поэтому вы подключаете устройство DTE (это устройство, которое вы упомянули) к устройству DTE (ПК), т. Е. В терминологии RS-232 нет DCE, т.е. нет модема, и «нуль-модем» или «скрещенный» RS-232 для этого устройства DTE, которое будет являться выходом , потребуется подключить к RS-232 " какой бы ни был вывод RS-232" Передаваемые данные "(вероятно, тот, который вы упомянули как" TX "). Данные "закрепляют на вашем компьютере (также на устройстве DTE), который является входом (и, очевидно, наоборот, для передачи данных в другом направлении).

Хотя это, кажется, не относится к вам, я просто добавлю: чтобы усложнить жизнь, некоторые производители пытаются «помочь», эффективно маркируя свое оборудование DTE, как если бы оно было частью DCE. Они помечают свой вывод ввода данных как Tx, так что пользователь просто подключает «Tx» от внешнего устройства (которое, если это DTE, будет вывод данных оттуда) к выводу, помеченному «Tx» на их оборудовании (которое, как он знает, вход ). Таким образом, они могут сказать «просто подключите Tx на вашем устройстве к Tx на нашем оборудовании». Они думают, что пытаются помочь, но такая маркировка часто только добавляет путаницы.

Как отметил в комментарии Дэн Миллс , многие из нас, кто вырос с RS-232, провели счастливые часы, подключая различное оборудование к слегка отличающимся реализациям RS-232, используя описанные им «коммутационные блоки». Эти коммутационные блоки имеют светодиоды, которые показывают, какие сигналы активируются (это позволяет быстро увидеть, настроено ли оборудование как DTE или DCE: подключен ли контакт 2 на этом оборудовании? Да = это DTE), и есть места, где перемычка установлена Кабели могут быть использованы для соединения различных контактов разъема.


Обычная практика, если что-то не работает, это менять местами соединения на контактах 2 и 3 на одном конце кабеля (это работает как на разъемах DE-9, так и на разъемах DB25)
Питер Беннетт,

2
Правда. В контексте этого конкретного вопроса, где речь идет о RS-232 (а не о сигналах логического уровня) и аппаратное квитирование не упоминается, тогда поменять местами выводы 2 и 3 (так как случайное соединение двух выходов RS-232 не должно вызывать непоправимый урон). К сожалению, все усложняется, когда задействовано аппаратное установление связи (поскольку проблема может заключаться в различных конфигурациях этих сигналов). Тогда замена контактов 2 и 3 может не решить проблему или не решить единственную проблему. Это возвращает воспоминания о блоках и анализ того, что не было в документации.
СамГибсон,

1
О, да, RTS / CTS / DSR / DTR ... Так много, много возможностей, даже до того, как вы начнете увлекаться такими вещами, как один конец, требующий управления потоком программного обеспечения, а другой ожидающий RTS / CTS. И да, документация всегда воняла. Я ссорился по поводу USB (в основном три типа дерьмовых заглушек, также в основном стеки программного обеспечения для дерьма), но вспоминая 232 был совершенно другим уровнем дерьма.
Дэн Миллс

8

В отличие от многих шиноподобных конфигураций, в которых используется имя сигнала , последовательная связь традиционно использует имя функции для контактов. Итак, если устройство передает на какой-то вывод, оно помечается как Tx. Если он получает, он помечен как Rx. Очевидно, вы соединяете Tx одного устройства с RX другого и наоборот.

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

Особый случай - когда рассматриваемое устройство является сквозным, как старый модем или современный конвертер FT232. Они не используют контакты Tx / Rx для связи с компьютером, они используют их для передачи связи компьютера дальше по линии. По этой причине их контакты названы в честь сигналов, проходящих через.

ОБНОВЛЕНИЕ: Вот пара примеров, чтобы проиллюстрировать это.

Вероятно, в настоящее время миллионы людей используют Arduinos, некоторые даже не имеют ни малейшего представления, как это работает. Они соединяют Tx с Rx, Rx с Tx, Gnd с Gnd, и они готовы к работе. Чего они часто не понимают, так это того, что они технически создают нуль-модем, который позволяет двум MCU общаться друг с другом.

Теперь одни и те же люди иногда хотят добавить USB-подключение к своим Arduinos. Они соединяют TX с TX и RX с RX на адаптере или преобразователе. Обратите внимание, что их часто называют «TX-IN» и «RX-OUT», чтобы избежать путаницы. Опять же, то, что кажется очевидным, но о котором редко думают, это то, что технически этот USB-адаптер является сквозным устройством. То, что он «говорит» на выводе RX, исходит не от самого адаптера, а от устройства на другой стороне линии. И угадай что? Это связано с контактом TX где-то.


Это неверно Стандарт определяет DTE и DCE (две вещи, говорящие друг с другом), а TX / RX определяются с точки зрения одного из них (я забыл, какой). Эта деталь была утеряна за эти годы, и использование этикеток стало настолько мрачным, что даже опытные инженеры-электрики допускают ошибку.
Стив

Ответ СамГибсона очень хорош.
Стив

2
@ Стив "Деталь потеряна" ?! Спецификация RS232 доступна по всему Интернету! Имена TX / RX указаны для стороны DTE, потому что DTE и DCE не "разговаривают друг с другом" по этим контактам, для этого они используют несколько управляющих сигналов. Модему и компьютеру нечего сказать друг другу иначе. Модем просто пропускает эти сигналы. Но вы можете соединить два DTE, используя нуль-модем, и где вы видите перспективу? Они оба являются компьютерами, они разговаривают друг с другом, и это именно та ситуация, которая описана в ОП вопросе.
клен

DTE to DTE конечно работает. Я удивлен, что вы не включили в свой ответ информацию о DTE и DCE, что во многом объясняет, почему ваш ответ правильный. Я полагаю, что неправильно произнес, когда сказал, что ваш ответ неверен, но он увековечивает другое недоразумение. Под «мелочами утеряны», я имею в виду, что большинство инженеров даже не думают об этом и просто «попробуют, пока не получится» ", или маркируйте оборудование DCE именами сигналов DTE. И, не считая этой детали, это помогает увековечить это немного ...
Стив

1
@ Steve Я намеренно избегал упоминания DTE / DCE, потому что вы не можете пойти туда, не обсудив много важных, но не относящихся к контрольным сигналам вопросов и т. Д. В любом случае, я обновил ответ несколькими примерами, чтобы прояснить ситуацию.
Клен

6

Они обычно относятся к устройству, поскольку устройства RS232 не имеют отношения «ведущий / ведомый» или «клиент / сервер». Протокол SPI имеет архитектуру «ведущий / ведомый», поэтому они обозначены как «MISO» (Master In Slave Out) и «MOSI» (оставлено в качестве упражнения для студента). Это на уровне устройства; Я не могу говорить с тем, что отдельные конструкторы схем могут выбрать в качестве сетевых имен.


У них есть отношения "DTE / DCE", но, как описывает @Maple, они на этом остановились. На самом деле какая-то глубокая история может объяснить, что они сделали.
gbarry

Этот ответ, хотя и точно описывает текущее отношение людей к RS-232, технически неверен (как указывает @gbarry относительно DCE / DTE).
Стив

4

К сожалению, для инженеров это загадка между двумя кусочками какашки.

Реального логического решения не существует, оба способа могут иметь логический смысл.

Я стараюсь маркировать контакты, печатные платы, схемы IC, таблицы соединений, программное обеспечение словами IN / OUT и / или стрелками, указывающими направление. Используйте слова «TX-out», «RX-in», «CTS-out», «RTS-in» на ваших схемах и т. Д. Это полностью устраняет неоднозначность. [Я вообще думаю, что TX и RX должны быть правильно названы, т.е. TX должен быть выходом].

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

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

Сигналы управления еще хуже. (кроме электрического направления у них тоже есть логическое направление управления)

Сигналы управления имеют документацию, в которой четко изложена функция: «CTS (out) сигнализирует компьютеру, что устройство готово принимать данные»

Иногда оба способа имеют смысл в одно и то же время: у меня есть чип, в котором RX и TX правильно названы со своими собственными функциями (с точки зрения чипов). Но контакты рукопожатия называются CTS и RTS и соответствуют контактам ПК, к которым они будут подключаться, потому что это то, к чему относятся программное обеспечение и индикаторы состояния.

Что-то, что помогло в последние годы, заставляет устройства использовать разъем DE9F, который соединяется непосредственно с последовательным портом ПК с прямым кабелем mf. Это уменьшило количество свободного времени для всего прошлого.


1
Вы показываете RXD>стрелку, направленную в сторону от вывода, что означает, что с этого вывода поступает сигнал - я, конечно, ожидал, что это будет выход , а не вход!
труба

@pipe Если вы считаете, где находится микросхема на печатной плате относительно разъема, то это совсем не однозначно для того, кто работает над продуктом без документации. Стрелка точно представляет поток сигнала. [интересная лингвистическая точка: в отличие от «out» / «in», стрелки имеют только внутреннее значение в пространственном контексте]
Генри Крун
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.