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”?
Odpowiedzi:
Ł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
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.
źródło
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.
źródło
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.
źródło
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.
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.
źródło
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!