Do czego odnoszą się TX i RX?

11

Pracowałem z urządzeniem korzystającym z komunikacji RS232 z komputerem. Nastąpiło pewne zamieszanie, ponieważ zdefiniowali swoje styki TX i RX względem urządzenia. W swoich definicjach używają oznaczenia TX jako pinu, który wysyła dane z urządzenia. Moim zdaniem powinno to być oznaczone jako RX, ponieważ jest to pin, na którym komputer się otrzymuje.

Jak należy zdefiniować piny? Czy odnoszą się one do każdego urządzenia, czy do „kontrolera”?

Fr33dan
źródło
6
Nigdy nie widziałem TX / RX z innej perspektywy niż strona wysyłająca. Tak, że TX jest pinem, na który część wysyłająca wysyła, a RX jest odbierany. Nigdy nie spotkałem się z nazwami, które sugerujesz.
Morten Jensen
13
Nazewnictwo pinów RS232 jest trochę szczególnym przypadkiem, ponieważ zdefiniowano je w kategoriach DTE (urządzenia do transmisji danych) i DCE (urządzenia do transmisji danych) i udało się wywołać całkowite zamieszanie. DCE ma wyjście danych na pinie RX i wejście na pinie TX, DTE jest odwrotnie. Teoretycznie płeć złączy powinna powiedzieć ci, co jest, w praktyce wystarczająca liczba producentów pomyliła się, aby uczynić ją mniej wiarygodnym przewodnikiem. Jest powód, dla którego kiedyś można było kupić małe pudełka z D9 i D25 różnych płci za pomocą zestawu małych zworek i niektórych diod LED na wspólnych liniach sygnałowych.
Dan Mills,
1
Kiedy są twoje urodziny, nie otrzymuję prezentu.
ctrl-alt-delor
1
@MortenJensen dobrze, jeśli są nazwane z perspektywy strony wysyłającej, oba powinny być nazywane TX.
user253751,
2
@TerryCarmen Nieprawda dla DCE, gdzie nazwy pinów i kierunki przepływu danych są odwrócone zgodnie ze standardem. DTE Tx -> DCE Tx i DTE Rx -> DCE Rx, tak, dziwne i bzdury, ale takie jest.
Dan Mills,

Odpowiedzi:

23

Łatwiej jest to zrozumieć, jeśli szybko przejrzymy, jak pierwotnie zastosowano standard RS-232.

Uwaga: Wszystkie numery pinów odnoszą się do oryginalnego 25-stykowego złącza D; numeracja zmieniona na 9-pinowym złączu stosowanym w późniejszych komputerach.

tło

DTE = Data Terminal Equipment - w dawnych czasach byłby to zwykle terminal lub drukarka lub sprzęt emulujący te urządzenia.

DCE = sprzęt do transmisji danych - w dawnych czasach byłby to zwykle modem lub inny interfejs WAN.

Pin 2 na oryginalnym 25-pinowym złączu D (opisanym w standardzie jako „Transmission Data”, „Circuit BA”, „V24. Number 103”) powinien być danymi z DTE do DCE.

Pin 3 na oryginalnym 25-pinowym złączu D (opisanym w standardzie jako „Received Data”, „Circuit BB”, „V24. Number 104”) powinien być danymi z DCE do DTE.

Oznaczało to, że kabel łączący terminal z modemem był „prosto” - pin 2 na terminalu (DTE) na jednym końcu kabla, z którego pochodzą dane, był podłączony do pin 2 na modemie (lub podobnym) na drugim końcu koniec kabla (DCE), w którym dane zostały odebrane. Modem następnie wysłał te dane za pomocą łącza komunikacyjnego do dowolnego sprzętu znajdującego się na drugim końcu tego łącza.

Pin 3 „Received Data” był sygnałem danych w przeciwnym kierunku - przesyłanym przez modem (DCE) na pinie 3 i odbieranym przez terminal (DTE) na pinie 3.

Dlatego widać, że oznaczanie tego, co zostało przesłane, a co zostało odebrane, było z punktu widzenia DTE (tj. Terminala). Wszystko to miało sens, gdy typowe połączenia były pomiędzy DCE i DTE.

Jednak urządzenia, z których korzystamy obecnie (nawet jeśli nie używają RS-232 i zamiast tego używają interfejsu protokołu UART TTL lub innego napięcia) są zwykle wszystkie skutecznie DTE (z jednym wyjątkiem są modemy). Podłączenie pinu 2 (który jest wyjściem) na jednym kawałku DTE, do pinu 2 (inne wyjście) na innym urządzeniu skonfigurowanym jako DTE, nie ma sensu (a przy użyciu sygnałów poziomu logicznego może nawet spowodować uszkodzenie sprzętu). Tutaj pojawia się użycie kabli „skrzyżowanych” lub „zerowych” (tj. Bez modemu).

Twoje pytanie

Pracowałem z urządzeniem korzystającym z komunikacji RS232 z komputerem. Nastąpiło pewne zamieszanie, ponieważ zdefiniowali swoje styki TX i RX względem urządzenia. W swoich definicjach używają oznaczenia TX jako pinu, który wysyła dane z urządzenia. Moim zdaniem powinno to być oznaczone jako RX, ponieważ jest to pin, na którym komputer się otrzymuje.

Jak należy zdefiniować piny? Czy odnoszą się one do każdego urządzenia, czy do „kontrolera”?

Na podstawie powyższych informacji w tle widać, że ich etykietowanie jest poprawne, jeśli ich urządzenie działa jako DTE (co w większości przypadków, chyba że jest to modem lub inny interfejs WAN). Na kawałku DTE, kołek oznaczony „Przekazywane dane” (pin 2 na złączu 25 pin) ma wysłać dane. (I, jak wyjaśniono powyżej, na elemencie DCE (np. Modem) pin znany jako „Transmission Data” (pin 2 na 25-pinowym złączu) jest tak naprawdę wejściem, które odbiera sygnał z DTE.)

Port szeregowy komputera zostanie również skonfigurowany jako DTE (chyba że ma bardzo nietypowy port szeregowy - nie będzie to miało zastosowania w tym przypadku, jak byś wiedział, gdyby tak było).

Dlatego podłączasz urządzenie DTE (to urządzenie, o którym wspomniałeś) do urządzenia DTE (PC), tzn. Nie ma DCE w „terminologii RS-232, tzn. Nie ma modemu, a„ modem zerowy ”lub„ skrzyżowany ”RS-232 okablowanie będzie potrzebne. Którykolwiek pin to RS-232 „Transmission Data” (prawdopodobnie ten, o którym wspomniałeś, że oznaczył go jako TX) na tym urządzeniu DTE, które będzie wyjściem , będzie musiał być podłączony do RS-232 „Odebrano Data ”na komputerze (także urządzeniu DTE), który jest wejściem (i oczywiście na odwrót w przypadku przesyłania danych w innym kierunku).

Chociaż wydaje się, że to nie dotyczy ciebie, dodam tylko: Aby uczynić życie bardziej skomplikowanym, niektórzy producenci próbują „pomóc”, skutecznie oznaczając swój sprzęt DTE tak, jakby to był kawałek DCE. Oznaczają swój pin wejściowy danych jako Tx, aby użytkownik po prostu podłączył „Tx” z urządzenia zewnętrznego (które, jeśli jest to DTE, będzie stamtąd wyjściem danych) do pinu oznaczonego „Tx” na swoim sprzęcie (który, jak wie, jest to wejście ). Dzięki temu mogą powiedzieć „wystarczy podłączyć Tx na swoim urządzeniu do Tx na naszym sprzęcie”. Myślą, że starają się pomóc, ale takie etykietowanie często tylko zwiększa zamieszanie.

Jak wspomniał Dan Mills w komentarzu, wielu z nas, którzy dorastali z RS-232, spędzało szczęśliwe godziny na podłączaniu różnych urządzeń z nieco innymi implementacjami RS-232, korzystając z opisywanych przez siebie „breakout boxów”. Te wyłączniki mają diody LED, które pokazują, które sygnały są aktywnie sterowane (pozwala to szybko sprawdzić, czy urządzenie jest skonfigurowane jako DTE lub DCE: Czy styk 2 jest napędzany na tym sprzęcie? Tak = to DTE) i mają miejsca, w których krótki zworka do połączenia różnych styków złącza można użyć kabli.

SamGibson
źródło
Powszechną praktyką, jeśli coś nie działa, jest zamiana połączeń na pinach 2 i 3 na jednym końcu kabla (działa to zarówno na złączach DE-9, jak i DB25)
Peter Bennett
2
Prawdziwe. W kontekście tego konkretnego pytania, w którym jest to RS-232 (nie sygnały na poziomie logicznym) i nie wspomniano o sprzętowym uzgadnianiu, to warto zamienić piny 2 i 3 (ponieważ przypadkowe podłączenie dwóch wyjść RS-232 nie powinno powodować trwałe uszkodzenie). Niestety, sprawy się komplikują, gdy w grę wchodzi sprzętowe uzgadnianie (problem może dotyczyć różnych konfiguracji tych sygnałów). Wtedy zamiana pinów 2 i 3 może nie rozwiązać problemu lub może nie rozwiązać jedynego problemu. Przywołuje to wspomnienia o przełomowych pudełkach i analizie tego, czego nie było w dokumentacji.
SamGibson,
1
Och, tak, RTS / CTS / DSR / DTR ... Tak wiele, wiele możliwości, nawet zanim zaczniesz się dobrze bawić, np. Jeden koniec chce oprogramowania do sterowania przepływem, a drugi oczekuje RTS / CTS. I tak, dokumentacja zawsze śmierdzi. Suka o USB (głównie trzy typy badziewnych wtyczek, głównie bzdurne stosy oprogramowania), ale myślenie „232 było zupełnie innym poziomem craptastic.
Dan Mills,
8

W przeciwieństwie do wielu konfiguracji podobnych do magistrali, które używają nazwy sygnału , komunikacja szeregowa tradycyjnie używa nazwy funkcji dla pinów. Tak więc, jeśli urządzenie transmituje na jakimś pinie, jest oznaczone Tx. Jeśli odbierze, jest oznaczony jako Rx. Oczywiście łączysz Tx jednego urządzenia z RX drugiego i odwrotnie.

Mówiąc z perspektywy, urządzenie, o którym mówisz, ma również „komputer”, którym właściwie jest MCU. Dlaczego jeden komputer powinien dyktować nazwy pinów drugiego komputera, zwłaszcza biorąc pod uwagę dwukierunkową asynchroniczną naturę komunikacji?

Szczególny przypadek ma miejsce, gdy dane urządzenie jest typu tranzytowego, jak stary modem lub nowoczesny konwerter FT232. Nie używają pinów Tx / Rx do komunikacji z komputerem, używają ich do przekazywania komunikacji komputerowej dalej w dół linii. Z tego powodu ich piny są nazwane na podstawie nadchodzących sygnałów.

AKTUALIZACJA: Oto kilka przykładów ilustrujących tę kwestię.

Prawdopodobnie miliony ludzi korzysta obecnie z Arduinos, niektórzy nawet nie mają pojęcia, jak to działa. Łączą Tx z Rx, Rx z Tx, Gnd z Gnd i są gotowe. Często nie zdają sobie sprawy, że technicznie tworzą zerowy modem, który pozwala dwóm MCU rozmawiać ze sobą.

Teraz te same osoby czasami chcą dodać łączność USB do swoich Arduinos. Łączą TX z TX i RX z RX na adapterze lub układzie scalonym. Pamiętaj, że często nazywane „TX-IN” i „RX-OUT”, aby uniknąć nieporozumień. Znów wydaje się oczywiste, ale rzadko się o tym myśli, że technicznie ten adapter USB jest urządzeniem tranzytowym. To, co „mówi” na pinie RX, nie pochodzi od samego adaptera, ale pochodzi z urządzenia po drugiej stronie linii. I zgadnij co? Jest gdzieś podłączony do pinu TX.

Klon
źródło
To jest niepoprawne. Standard określa DTE i DCE (dwie rzeczy rozmawiają ze sobą), a TX / RX są określone z perspektywy jednej z nich (nie pamiętam, która). Z biegiem lat ten szczegół zaginął, a użycie etykiet stało się tak mętne, że nawet doświadczeni elektrycy popełniają błąd.
Steve,
Odpowiedź SamGibsona jest bardzo dobra.
Steve,
2
@ Steve „Szczegół został utracony” ?! Specyfikacja RS232 jest dostępna w Internecie! Nazwy TX / RX określone dla strony DTE, ponieważ DTE i DCE nie „rozmawiają ze sobą” przez te piny, używają do tego wielu sygnałów sterujących. Modem i komputer nie mają sobie nawzajem nic do powiedzenia . Modem po prostu przekazuje te sygnały. Ale możesz podłączyć dwa DTE za pomocą modemu zerowego i gdzie jest twoja perspektywa? Obaj są komputerami, rozmawiają ze sobą i taka jest dokładnie sytuacja opisana w pytaniu OP.
Klon
DTE do DTE oczywiście działa. Dziwię się, że nie umieściłeś w swojej odpowiedzi żadnych informacji o DTE i DCE, co znacznie pomaga zrozumieć, dlaczego twoja odpowiedź jest poprawna. Wydaje mi się, że źle powiedziałem, kiedy powiedziałem, że twoja odpowiedź jest niepoprawna, ale utrwala to inne nieporozumienie tutaj. Przez „szczegóły zostały utracone” Mam na myśli to, że większość inżynierów nawet o tym nie myśli i po prostu „spróbuj, dopóki nie ma racji ”lub oznacz urządzenia DCE nazwami sygnałów DTE. I nieuwzględnienie tego szczegółu pomaga utrwalić to trochę ...
Steve
1
@ Steve Celowo unikałem wspominania o DTE / DCE, ponieważ nie można tam iść bez omawiania wielu ważnych, ale nieistotnych sygnałów sterujących pytaniami itp. W każdym razie zaktualizowałem odpowiedź kilkoma przykładami, aby wyjaśnić sprawę.
Klon
6

Zazwyczaj są one względne w stosunku do urządzenia, ponieważ urządzenia RS232 nie mają relacji „master / slave” lub „klient / serwer”. Protokół SPI ma architekturę master / slave, dlatego są oznaczone jako „MISO” (Master In Slave Out) i „MOSI” (pozostawione jako ćwiczenie dla ucznia). To na poziomie urządzenia; Nie mogę rozmawiać z tym, co indywidualni projektanci obwodów mogliby wybrać jako nazwy sieciowe.

Cristobol Polychronopolis
źródło
Mają związek „DTE / DCE”, ale jak opisuje @Maple, na tym poprzestali. W rzeczywistości jakaś głęboka historia może wyjaśnić, co zrobili.
gbarry
Ta odpowiedź, choć dokładnie opisuje obecny sposób traktowania RS-232, jest technicznie niepoprawna (jak @gbarry wskazuje na DCE / DTE).
Steve,
4

Niestety dla inżynierów jest to zagadka między dwoma kawałkami gnoju.

Nie ma prawdziwego logicznego rozwiązania, oba sposoby mogą mieć logiczny sens.

Próbuję oznakować styki, płytki drukowane, układy scalone, tabele połączeń, oprogramowanie słowami WE / WY i / lub strzałkami wskazującymi kierunek. Użyj słów „TX-out”, „RX-in”, „CTS-out”, „RTS-in” na swoich schematach itp. To całkowicie rozwiązuje niejednoznaczność. [Ogólnie uważam, że TX i RX powinny być poprawnie nazwane, tzn. TX powinno być wyjściem].

Oto płytka drukowana, w której sygnały przekraczają barierę izolacyjną. Zwróć uwagę na strzałki, aby ktoś debugował go lub próbował dopasować złącze, wyraźnie wie, w którą stronę idą sygnały.

wprowadź opis zdjęcia tutaj

Sygnały kontrolne są jeszcze gorsze. (podobnie jak kierunek elektryczny, mają również logiczny kierunek sterowania)

Sygnały sterujące mają dokumentację wyraźnie określającą funkcję: „CTS (out) sygnalizuje komputerowi, że urządzenie jest gotowe do odbioru danych”

Czasami oba sposoby mają sens w tym samym czasie: mam układ, w którym RX i TX są poprawnie nazwane z własną funkcją (z perspektywy układów). Ale piny uzgadniania są nazywane CTS i RTS pasującymi do pinów komputera, z którym się połączą, ponieważ do tego odnoszą się oprogramowanie i lampki stanu.

Coś, co pomogło w ostatnich latach, polega na tym, że urządzenia używają złącza DE9F, które łączy się bezpośrednio z portem szeregowym komputera za pomocą prostego kabla MF. To zmniejszyło darmowy dostęp do całej przeszłości.

Henry Crun
źródło
1
Pokazujesz RXD>strzałkę skierowaną w stronę przeciwną do pinu, co oznacza, że ​​z tego pinu wydobywa się sygnał - z pewnością oczekiwałbym, że będzie to wyjście , a nie wejście!
rura
@pipe Jeśli zastanowisz się, gdzie układ znajduje się na płytce drukowanej, w stosunku do złącza, nie jest to wcale dwuznaczne dla kogoś, kto pracuje nad produktem bez dokumentacji. Strzałka dokładnie reprezentuje przepływ sygnału. [interesujący punkt językowy: w przeciwieństwie do „out” / „in”, strzałki mają jedynie wewnętrzne znaczenie w kontekście przestrzennym]
Henry Crun