До чого відносяться TX і RX?


11

Я працював із пристроєм, який використовує зв'язок RS232 з ПК. Виникла певна плутанина, оскільки вони визначили свої штифти TX та RX щодо пристрою. У своїх визначеннях вони означають, що TX є штифтом, який передає дані з пристрою. На мій погляд, це має бути позначено RX, оскільки це PIN-код, який отримує комп'ютер.

Як слід визначити штифти? Вони відносно кожного пристрою чи відносно «контролера»?


6
Я ніколи не бачив, щоб TX / RX був з інших точок зору, ніж відправляюча сторона. Таким чином, що TX є шпилькою, яку відправляє частина відправляє, і RX приймається. Я ніколи не стикався з називанням, як ти пропонуєш.
Мортен Йенсен

13
Ім’я шпильок RS232 - це особливий випадок, оскільки вони визначили речі з точки зору DTE (обладнання терміналу даних) та DCE (обладнання для передачі даних) і вдалося викликати суттєву плутанину. DCE має вихід даних на штифті RX та вхід на штифт TX, DTE - навпаки. Теоретично стать роз'ємів повинен вам сказати, що є чим, на практиці достатньо виробників помилилися, щоб зробити його менш надійним посібником. Існує причина, що раніше ви могли купувати маленькі коробки з D9 і D25 різної статі з набором маленьких дротяних дротів та деякими світлодіодами на загальних сигнальних лініях.
Ден Міллз

1
Коли твій день народження, я не отримую тобі подарунка.
ctrl-alt-delor

1
@MortenJensen добре, якщо вони названі з точки зору сторони, що відправляє, обидва повинні називатися TX.
користувач253751

2
@TerryCarmen Не вірно для DCE, де імена штифтів та напрямки потоку даних зворотні відповідно до стандарту. DTE Tx -> DCE Tx і DTE Rx -> DCE Rx, так, дивно і лайно, але це те, що воно є.
Ден Міллз

Відповіді:


23

Це може бути легше зрозуміти, якщо ми швидко переглянемо, як спочатку використовувався стандарт RS-232.

Примітка: Всі номери контактів нижче стосуються оригінального 25-контактного роз'єму D; нумерація змінилася на 9-контактному роз'ємі, який використовується на наступних ПК.

Фон

DTE = Термінальне обладнання даних - за старих часів це, як правило, термінал або принтер, або обладнання, що імітує їх.

DCE = обладнання для передачі даних - за старих часів це, як правило, модем чи інший інтерфейс WAN.

На контакт 2 на оригінальному 25-контактному роз'ємі D (описаний у стандарті як "Передані дані", "Схема БА", "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, оскільки це PIN-код, який отримує комп'ютер.

Як слід визначити штифти? Вони відносно кожного пристрою чи відносно «контролера»?

З вищенаведеної довідкової інформації видно, що їх маркування є правильним, якщо їх пристрій працює як DTE (що більшість є, якщо це не модем чи інший інтерфейс WAN). На аркуші DTE, штифт з написом «Передача даних» (контакт 2 на роз'ємі 25 контактів) роблять передачі даних. (І, як пояснено вище, на шматочку DCE (наприклад, модем) штифт, відомий як "Передані дані" (контакт 2 на його 25-контактному роз'ємі) - це фактично вхід, який приймає сигнал від DTE.)

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

Тому ви підключаєте пристрій DTE (цей пристрій, про який ви згадали) до пристрою DTE (ПК), тобто немає "DCE" в термінології RS-232, тобто немає модему, а "нульовий модем" або "перетнутий" RS-232 Незалежно від того, який штифт буде RS-232 "Передані дані" (ймовірно, той, кого ви згадуєте, вони позначені як TX) на цьому пристрої DTE, який буде вихідним сигналом , потрібно буде підключити до RS-232 "Отримано Дані "на ПК (також на пристрої DTE), який є входом (і, очевидно, навпаки для передачі даних в інший бік).

Хоча це, здається, не стосується вас, я лише додам: Щоб зробити життя складнішим, деякі виробники намагаються "допомогти", ефективно маркуючи своє обладнання DTE так, ніби це було частиною DCE. Вони позначають свій PIN-код для введення даних як 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, і їм добре йти. Те, що вони часто не усвідомлюють, - це те, що вони технічно створюють null-модем, який дозволяє двом MCU спілкуватися один з одним.

Тепер ті ж люди іноді хочуть додати USB-з'єднання до свого Arduinos. Вони підключають TX до TX і RX до RX на мікросхемі адаптера або перетворювача. Зауважте, що вони часто називають "TX-IN" і "RX-OUT", щоб уникнути плутанини. Знову ж таки, що здається очевидним, але рідко замислюється над тим, що технічно цей USB-адаптер є пристроєм, що проходить. Те, що воно "говорить" на RX-штифті, не йде від самого адаптера, а йде від пристрою з іншого боку лінії. І вгадайте, що? Він десь підключений до TX pin.


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

Відповідь СамГібсона дуже хороша.
Стів

2
@Steve "Деталі загублені" ?! Специфікація RS232 є в Інтернеті! Імена TX / RX, вказані для сторони DTE, оскільки DTE і DCE не "спілкуються один з одним" над цими штифтами, вони використовують для цього кілька сигналів управління. Модему та комп’ютеру немає нічого сказати один одному інакше. Модем просто передає ці сигнали наскрізь. Але ви можете підключити два DTE за допомогою null-модему, і де ви тоді перспективні? Вони обидва - це комп’ютери, вони спілкуються один з одним, і саме така ситуація описана в питанні про ОП.
Клен

DTE to DTE звичайно працює. Я здивований, що ви не включили будь-яку інформацію про DTE та DCE у свою відповідь, але це дуже допомагає зрозуміти, чому ваша відповідь правильна. Я припускаю, що я неправильно промовив, коли я сказав, що ваша відповідь невірна, але це продовжує інше непорозуміння тут. Під "деталлю втрачено" я маю на увазі, що більшість інженерів навіть не думають про це, а просто "спробуйте, поки це правильно ", або позначте обладнання DCE назви сигналів DTE. І, не враховуючи, що деталі допомагають увічнити це трохи ...
Стів

1
@Steve Я навмисно уникав згадувати DTE / DCE, тому що ви не можете туди поїхати, не обговорюючи багато важливих, але не має значення для сигналів управління питаннями тощо. У будь-якому разі я оновив відповідь на деяких прикладах, щоб зробити речі зрозумілішими.
Клен

6

Зазвичай вони відносяться до пристрою, оскільки пристрої RS232 не мають відношення "головний / ведений" або "клієнт / сервер". Протокол SPI має архітектуру master / slave, тому вони позначені "MISO" (Master In Slave Out) та "MOSI" (залишено студентом як вправу). Це на рівні пристрою; Я не можу говорити з тим, що окремі дизайнери схем можуть обрати як чисті імена.


У них є стосунки "DTE / DCE", але як описує @Maple, вони там зупинилися. Насправді деяка глибока історія може пояснити, що вони зробили.
gbarry

Ця відповідь, точно описуючи сучасний спосіб поводження людей з RS-232, є технічно неправильною (як @gbarry вказує на DCE / DTE).
Стів

4

На жаль, для інженерів це загадка між двома скибочками сиру.

Реального логічного рішення немає, обидва способи можуть мати логічний сенс.

Я намагаюся позначити штифти, друковані плати, розкладки ІС, таблиці підключень, програмне забезпечення зі словами 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.