Pytanie:
Jak podłączyć uC do komputera za pomocą RS232 przy minimalnej liczbie sygnałów?
mazurnification
2011-04-19 21:24:25 UTC
view on stackexchange narkive permalink

Standardowe 9-pinowe złącze RS232 ma 9 pinów. Są to:

1 - DCD - Wykryto nośnik danych
2 - RxD - Odbiór danych
3 - TxD - Transmisja danych
4 - DTR - Terminal danych gotowy
5 - GND - uziemienie sygnału
6 - DSR - zestaw danych gotowy
7 - RTS - żądanie wysłania danych
8 - CTS - zezwolenie na Wysyłanie danych
9 - RI - Wskaźnik pierścienia

  1. Jeśli potrzebuję komunikacji dwukierunkowej, oczywiste jest, że powinienem połączyć RxD i TxD. Co mam zrobić z innymi sygnałami / pinami - podłączyć do masy, pozostawić rozwarte, trzeba je wysterować odpowiednimi sygnałami zgodnie z protokołem?
  2. Jeśli zależy mi tylko na połączeniu jednokierunkowym, czy mogę podłączyć tylko RxD lub TxD?
  3. Jakie są konsekwencje nieużywania / nie podłączania pewnych sygnałów. Jakie oprogramowanie po stronie PC spodziewa się mieć te sygnały? Jaka funkcjonalność zostanie utracona?

UWAGA 1: Używam tutaj słowa "connect" w sensie połączenia logicznego -> do podłączenia elektrycznego potrzebowałbym obwodu przesuwnika poziomu, takiego jak MAX232)
UWAGA 2: Jestem pin ograniczony na uC - nie mam nic przeciwko podłączaniu jakichkolwiek sygnałów na płytce (np. ciągnięcie ich w górę / w dół).

Uwaga na marginesie, ponieważ i tak potrzebujesz przełącznika poziomu dla RS232, możesz zamiast tego pomyśleć o chipie UART na USB (http://www.ftdichip.com/Products/ICs/FT232R.htm), ponieważ znacznie łatwiej jest znaleźć komputer z USB ...
Pięć odpowiedzi:
Daniel Grillo
2011-04-19 22:10:30 UTC
view on stackexchange narkive permalink

Zależy to od używanego oprogramowania.

A) W moim przypadku, kiedy tworzę własne oprogramowanie na PC, nigdy nie używałem innych pinów, tylko RxD, TxD i GND. W takim przypadku możesz zostawić inne szpilki otwarte. Nazywa się to null modem bez uzgadniania

enter image description here

B) Tak (zakładając, że brane jest pod uwagę GND)

C ) Ponownie, będzie to zależeć od oprogramowania po stronie komputera. Niektóre programy, które można skonfigurować tak, aby nie zajmowały się kontrolą sprzętu. Inne będą wymagały uzgadniania RTS / CTS, więc możesz wykonać zerowy modem z uzgadnianiem zwrotnym w pętli

enter image description here

Źródło zdjęć: Okablowanie szeregowego modemu zerowego RS232

B) Nie. Potrzebujesz wspólnego GND.
thx za odpowiedź - jeszcze jedna rzecz czy powinienem zostawić nieużywane wejścia pływające?
@mazurnification - technicznie rzecz biorąc nie powinieneś pozostawiać wejść pływających. Komputer będzie miał podciągania / podciągania, aby się chronić. Jeśli twoja płyta ma dodatkowe sygnały na złączu nie są podłączone, nie musisz nic robić. Upewnij się, że układ sterownika RS232 ma wszystkie wejścia ustawione na poziom.
Normalnie ** nie ** używa się modemu zerowego podczas łączenia się z systemem wbudowanym lub urządzeniem peryferyjnym. Zamiast tego wbudowany system / urządzenie peryferyjne jest okablowane tak, aby przesyłać / odbierać na przeciwległych pinach z komputera, dzięki czemu może używać prostego kabla. Modemy zerowe są tak naprawdę przeznaczone do łączenia ze sobą dwóch komputerów (lub bardzo sporadycznie dwóch wbudowanych płyt).
stevenvh
2011-04-19 21:34:14 UTC
view on stackexchange narkive permalink

Oczywiście wystarczy podłączyć RxD i TxD oraz Ground. (Jeśli używasz komunikacji jednokierunkowej, wymagane są tylko uziemienie i RxD lub TxD). Pozostałe sygnały są używane do komunikacji z modemem. Większość układów UART na mikrokontrolerach nie zapewnia tych sygnałów sterujących. Pamiętam, że widziałem to na 1 lub 2 UARTach uC z kilkoma innymi UARTami (chociaż nie pamiętam, który to był).

więcej na temat modemu (FYI ):
EIA-232 definiuje DTE (Data Terminal Equipment, w tym przypadku twój komputer PC lub SBC) i DCE (Data Communication Equipment, często modem).

DTE-DCE configuration

Istnieje kilka sposobów połączenia komputerów.

  1. Bezpośrednie połączenie, bez modemów, wykorzystuje kabel krosowy (RxD z jednej strony jest podłączony do TxD z drugiej strony i odwrotnie). Potrzebujesz tylko tych dwóch sygnałów + masy. Właśnie tego używasz do podłączenia komputera do SBC.
  2. Połączenie modemowe również wykorzystuje dodatkowe sygnały, komputer i modem są połączone kablem prostym (styk 1 podłączony do styku 1 itp.)
  3. Możesz skonfigurować połączenie między dwoma urządzeniami DTE tak, jakby były obecne modemy, w takim przypadku używasz modemu zerowego do łączenia sygnałów sterujących między urządzeniami DTE, jak 1 DTE jest podłączone do CTS z drugiej. Wykorzystuje to kompletny kabel z przeplotem.
  4. Konfiguracja zerowego modemu, w której sygnały sterujące nie są łączone między komputerami, ale oszukujesz i nie podłączasz RTS do CTS na innym komputerze, ale na swoim własnym komputerze. Inne sygnały są również lokalnie zawracane. W rezultacie, podobnie jak w przypadku 1), między komputerami PC są połączone tylko RxD, TxD i Ground.
Do pomocy w kodowaniu można również użyć innych wierszy. Możesz robić takie rzeczy, jak Twój mikrokontroler powie komputerowi, kiedy będzie gotowy do odbioru danych. Może to być naprawdę pomocne, gdy musisz zrobić coś, co wymaga Twojej uwagi i nie możesz zostać przerwany, aby wyczyścić bufor.
Potrzebujesz również GND.
Jim C
2011-04-19 23:12:37 UTC
view on stackexchange narkive permalink

Musisz mieć przynajmniej Tx, Rx i uziemienie sygnału. Chociaż w teorii nie musisz nadawać, jeśli odbierasz, to w praktyce w wielu sytuacjach będziesz musiał potwierdzić otrzymanie wiadomości. Pozostałe szpilki są używane do „sprzętowego uzgadniania” systemu uprawnień, w którym urządzenie wysyłające sprawdza, czy urządzenie odbierające jest gotowe. Zamiast tego można użyć Xon / Xoff (uzgadnianie programowe). Niektóre urządzenia, na przykład myszy szeregowe, również wykorzystywały sprzętowe linie uzgadniania do zasilania.

Richard Thomas
2012-08-16 22:35:20 UTC
view on stackexchange narkive permalink

Pamiętaj, że w pewnych okolicznościach można uciec bez użycia chipa 232. Zależy to od pewnej luki w protokole i nadużywania niektórych szpilek w sposób, w jaki nie powinny. Niestety, nie znam obwodu z czubka głowy, ale korzystałem z niego. Szukałem tego, kiedy natknąłem się na to pytanie. Nie użyłbym go w produkcji i nie wiem, czy działa dla wszystkich implementacji łączących RS232, ale był przydatny, gdy go użyłem.

Będziesz jednak potrzebował zabezpieczenia przeciwprzepięciowego i możliwości odwrócenia sygnału gdzieś w oprogramowaniu UART, za pomocą falownika, lub w kilku przypadkach w bitu konfiguracyjnym urządzenia peryferyjnego UART mikrokontrolera. Podstawowa idea polega na tym, że większość portów szeregowych jest w stanie akceptować wejścia na poziomie logicznym.
Chris Stratton
2012-08-16 23:26:00 UTC
view on stackexchange narkive permalink

W przypadku minimalnej liczby sygnałów możliwe jest wykonanie interfejsu UART przy użyciu tylko dwóch przewodów - dwukierunkowej linii sygnałowej i masy. Wymagane jest, aby sterowniki linii na każdym końcu mogły być wyłączone (potrójne stwierdzenie) i aby oprogramowanie implementowało protokół zwrotny; często urządzenie slave nadaje tylko po to, aby odpowiedzieć na pytanie od mastera.

W połączeniu na poziomie logicznym między mikrokontrolerami (bez sterowników liniowych) sprzęt jest dość prosty, ponieważ prawie zawsze można potroić pin nadawczy (prawdopodobnie przełączając go z powrotem w tryb GPIO).

Chociaż technika ta nie jest często stosowana na pobliskich urządzeniach peryferyjnych, jest dość powszechna przy wykorzystaniu sygnalizacji różnicowej jako RS485 i może obejmować sieć wielu węzłów zamiast tylko dwóch. Ale schematy oprogramowania zaprojektowane do rozmowy w dwukierunkowej parze RS485 będą działać dobrze między dwoma urządzeniami połączonymi z pojedynczym zakończeniem (nieróżnicowym) obwodem, pod warunkiem, że odległość / poziom szumu nie wymagają rozwiązania różnicowego. Oczywiście nie byłby to ściśle RS232, ale jego niestandardowe rozszerzenie.



To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 3.0, w ramach której jest rozpowszechniana.
Loading...