Я работал с устройством, которое использует связь RS232 с ПК. Был некоторый беспорядок, поскольку они определили свои контакты TX и RX относительно устройства. В своих определениях они используют для обозначения TX, являющегося контактом, который отправляет данные с устройства. На мой взгляд, это должно быть помечено как RX, потому что это пин-код, который получает компьютер.
Как должны быть определены штифты? Они относятся к каждому устройству или к «контроллеру»?
Ответы:
Это может быть легче понять, если мы быстро рассмотрим, как изначально использовался стандарт 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, не имеет смысла (и при использовании сигналов логического уровня может даже привести к повреждению оборудования). Это где использование "скрещенных" или "нуль-модемных" (то есть без модема) кабелей.
Ваш вопрос
Из приведенной выше справочной информации вы можете видеть, что их маркировка верна, если их устройство работает как 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), и есть места, где перемычка установлена Кабели могут быть использованы для соединения различных контактов разъема.
источник
В отличие от многих шиноподобных конфигураций, в которых используется имя сигнала , последовательная связь традиционно использует имя функции для контактов. Итак, если устройство передает на какой-то вывод, оно помечается как 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 где-то.
источник
Они обычно относятся к устройству, поскольку устройства RS232 не имеют отношения «ведущий / ведомый» или «клиент / сервер». Протокол SPI имеет архитектуру «ведущий / ведомый», поэтому они обозначены как «MISO» (Master In Slave Out) и «MOSI» (оставлено в качестве упражнения для студента). Это на уровне устройства; Я не могу говорить с тем, что отдельные конструкторы схем могут выбрать в качестве сетевых имен.
источник
К сожалению, для инженеров это загадка между двумя кусочками какашки.
Реального логического решения не существует, оба способа могут иметь логический смысл.
Я стараюсь маркировать контакты, печатные платы, схемы IC, таблицы соединений, программное обеспечение словами IN / OUT и / или стрелками, указывающими направление. Используйте слова «TX-out», «RX-in», «CTS-out», «RTS-in» на ваших схемах и т. Д. Это полностью устраняет неоднозначность. [Я вообще думаю, что TX и RX должны быть правильно названы, т.е. TX должен быть выходом].
Вот печатная плата, где сигналы пересекают изолирующий барьер. Обратите внимание на стрелки, поэтому кто-то отлаживает их или пытается установить разъем, ясно знает, по каким направлениям идут сигналы.
Сигналы управления еще хуже. (кроме электрического направления у них тоже есть логическое направление управления)
Сигналы управления имеют документацию, в которой четко изложена функция: «CTS (out) сигнализирует компьютеру, что устройство готово принимать данные»
Иногда оба способа имеют смысл в одно и то же время: у меня есть чип, в котором RX и TX правильно названы со своими собственными функциями (с точки зрения чипов). Но контакты рукопожатия называются CTS и RTS и соответствуют контактам ПК, к которым они будут подключаться, потому что это то, к чему относятся программное обеспечение и индикаторы состояния.
Что-то, что помогло в последние годы, заставляет устройства использовать разъем DE9F, который соединяется непосредственно с последовательным портом ПК с прямым кабелем mf. Это уменьшило количество свободного времени для всего прошлого.
источник
RXD>
стрелку, направленную в сторону от вывода, что означает, что с этого вывода поступает сигнал - я, конечно, ожидал, что это будет выход , а не вход!