Pytanie:
Jaka jest różnica między RS-232 a TTL UART?
eepty
2016-12-11 13:19:16 UTC
view on stackexchange narkive permalink

Zawsze muszę komunikować się z portem TTL UART na MCU z komputerem.Kiedy o tym mówiłem, ludzie zawsze określają port UART jako port RS-232.Czy mają rację?Jeśli nie, jaka jest między nimi różnica?

Czy mogę również użyć konwertera RS-232 na USB dla portu TTL UART?

Około 7 do 10 woltów, plus lub minus
Trzy odpowiedzi:
Richard Crowley
2016-12-11 13:36:07 UTC
view on stackexchange narkive permalink

UART = uniwersalny asynchroniczny odbiornik / nadajnik. Jest to podstawowy układ scalony (lub funkcja wirtualna w mikrokontrolerze), który koduje bity danych szeregowo do standardowego formatu z bitem startu, bitem (bitami) stopu, prędkością itp. Ale „UART” jest tylko CZĘŚCIĄ tego, co „RS- 232 "jest.

RS-232 dodaje starsze wartości napięcia do wartości binarnych (0/1 lub hi / lo lub „znak” i „spacja” w rozmowie RS-232). UART TTL wyprowadza (i wprowadza) tylko poziomy TTL, zasadniczo 0 bitów = 0 V i 1 bit = 5 V. Wiele współczesnych gadżetów (Arduino i in.) Po prostu wykorzystuje poziomy napięcia TTL do komunikacji szeregowej. Ale „właściwa” definicja RS-232 wykorzystywała raczej WYŻSZE i BIPOLARNE napięcia definiujące zero i jedynkę. W szczególności:

  • 0 bitów = „spacja” = + 3 V ~ + 15 V
  • 1 bit = „znak” = -15 V ~ -3 V

Te napięcia sięgają dawnych elektromechanicznych czasów maszyn Teletype, które były cudownym monstrum mechanicznego cudu. A te dość wysokie napięcia były potrzebne do sterowania bitami elektromechanicznymi.

Ale w dzisiejszych czasach stary protokół RS-232 pozostaje użytecznym standardem, ale te stare wysokie napięcia bipolarne należą raczej do przeszłości. I wydaje się raczej prawdopodobne, że dorasta całe nowe pokolenie, które nigdy nie będzie pamiętać niczego o tych starych poziomach napięcia i pomyśli, że RS-232 jest starym protokołem 5V. Zwłaszcza, gdy wszystkie napięcia zasilania migrują w kierunku poziomów logicznych 3,3 V.

Ref: https://en.wikipedia.org/wiki/RS-232#Voltage_levels

Właściwie trochę o historii poziomów napięcia jest błędne.Powodem, dla którego wybrano +/- 15V, było zwiększenie stosunku sygnału do szumu.Nie chodzi o szum w transmisji, a raczej o wydostanie się ponad poziom szumów obwodów.Innym przykładem takiego wyboru projektowego były wczesne sterowniki PLC (komputery przemysłowe).Niektórzy używali 20V RAM, tak RAM, aby pokonać poziom szumów całego sprzętu elektrycznego w fabryce.
Chociaż R.C.wspomniałem o tym w dwóch ostatnich zdaniach, powtórzę: UART na 3,3 V uC to również 3,3 V, szczegół, który warto podkreślić w IMO, jeśli nie chce się smażyć jego chipsów;większość rozwiązań USB <-> UART, które widziałem, pozwala na zmianę poziomów tutaj;chociaż 3,3 V nie jest ściśle „poziomem TTL”, często widziałem te „TTL UART” wysyłające wysoki sygnał 3,3 V.OTOH, wiele obecnie używanych urządzeń zgodnych ze standardem RS-232 akceptuje poziomy TTL (tj. Interpretują 0V jako prawidłowy logiczny wysoki), co pozwala na użycie ich z tymi "TTL UART" tylko z inwersją sygnału, co zwykle odbywa się w oprogramowaniu.
Spehro Pefhany
2016-12-11 13:55:37 UTC
view on stackexchange narkive permalink

Port w twoim konwerterze USB<-> RS-232 wyprowadza około +/- 9V i może przyjmować +/- 25V lub zwarcie bez uszkodzeń.

UART w Twoim MCU wykorzystuje poziom logiczny (zwykle 0V / 3,3V lub 0V / 5V). Przyłożenie mniej niż 0 V lub więcej niż Vcc może zniszczyć układ MCU.

Również poziomy logic są odwrócone między tymi dwoma typami (z wyjątkiem opcji na bardzo niewielu MCU).

Aby odwrócić dwukierunkowo i konwertować między poziomami UART i RS-232, zwykle używa się chipa takiego jak MAX232 (dla logiki 5V). MAX232 generuje również własne zasilanie +/- 9 V z pojedynczego źródła + 5 V przy użyciu podwajacza napięcia pompy ładującej.

TL; DR:

Nie, nie możesz użyć kabla USB-RS-232 (inaczej USB-szeregowego) do połączenia obu. Dostępne są niedrogie konwertery szeregowe USB-TTL. Jest kilka pułapek z najtańszymi chińskimi, jeśli chodzi o działanie 3,3 V, pamiętaj, aby trochę to zbadać. Adafruit oferuje urządzenia uch za 10 USD. Myślę, że możesz je znaleźć również w Digikey i innych źródłach.

enter image description here

Ponieważ interfejs sprzętowy nie jest zdefiniowany przez żaden standard po stronie MCU, są one zwykle wyposażone w niezatwierdzone przewody typu fly z końcówkami żeńskimi do połączenia z kwadratowymi pinami 0,025 ", jak w przypadku nagłówka 0,1". Kupiłem pół tuzina podobnych urządzeń dla mojego programisty oprogramowania układowego, a ona używa ich do rozmów z różnymi płytami programistycznymi.

Jakie są problemy z tanimi chińskimi konwerterami USB na szeregowy pod napięciem 3,3 V?
@SomeNorwegianGuy Cripes- pisałem to już wiele lat temu .. Pamiętam, że trzeba było wyciąć ślad i zworkę, żeby działały poprawnie, a przełącznik był w jakiś sposób oznaczony (z pamięci mógł być zły).Prawdopodobnie już naprawione.Miałem 3,3 V (nie tani) z chipem National (teraz TI) xx3232 3,3 V z powodu czegoś na liniach RS-232 na ławce, nigdy nie widziałem tego z chipem w stylu MAX232.
jonk
2016-12-11 14:00:59 UTC
view on stackexchange narkive permalink

Zawsze muszę komunikować się z portem TTL UART na MCU za pomocą komputer. Kiedy o tym mówiłem, ludzie zawsze odnoszą się do portu UART jako port RS-232. Czy mają rację? Jeśli nie, jaka jest różnica między nimi?

Czytając między wierszami, możesz mówić o przypadku, w którym masz płytę z MCU, do której można uzyskać dostęp (kod pobierania, debugowanie itp.) przez port USB w komputerze. Obecnie jest to dość powszechne.

Jeśli tak, prawdopodobnie system operacyjny konfiguruje „wirtualny port RS-232” dla Twojego urządzenia. To wcale nie jest port RS-232. Zamiast tego jest to oprogramowanie działające jako sterownik w systemie operacyjnym, które emuluje szczegóły starego sterownika „portu szeregowego”. To oprogramowanie komunikuje się z oddzielnym MCU (takim, który jest również na płycie z MCU) za pośrednictwem układu konwertera USB na port szeregowy (jest też wielu producentów). oddzielny MCU jest tym, co jest faktycznie podłączone do pinów portu UART MCU. Prawdopodobnie jest również podłączony do pinów JTAG MCU, aby można było debugować. W tym oddzielnym MCU znajduje się dodatkowe oprogramowanie, które obsługuje szczegóły zarówno debugowania, jak i komunikacji UART z systemem operacyjnym komputera.

A więc. Tak. Ludzie nazywają to portem RS-232, kiedy myślą o tym z punktu widzenia tego, jak system operacyjny + oprogramowanie sterownika powoduje, że pojawia się w aplikacji działającej w tym systemie operacyjnym . Możesz wtedy użyć dowolnej standardowej aplikacji, która wie, jak otworzyć port RS-232 za pomocą standardowych wywołań funkcji, które system operacyjny zapewnia do tego celu i będzie działać dobrze. Jest to więc port RS-232 z punktu widzenia tego programu użytkowego.

Ale w rzeczywistości tak nie jest.


Osobno, UART jest „uniwersalnym asynchronicznym odbiornikiem / nadajnikiem” i tradycyjnie odnosi się do układu scalonego lub bloku funkcjonalnego w MCU. Tak czy inaczej, był to zazwyczaj sprzęt zaprojektowany tak, aby łatwe oprogramowanie, które piszesz, obsługiwało używany asynchroniczny protokół szeregowy (bit startu, bity danych i jeden lub więcej bitów stopu). bang z protokołem, ale jest to prawdziwy ból i wtedy duża prędkość staje się mniej lub bardziej nieosiągalna.

Zobaczysz także USARTs - uniwersalny synchroniczny / asynchroniczny odbiornik / nadajnik - także na niektórych MCU. Oznacza to po prostu, że mogą zrobić więcej niż UART, ale zawierają również możliwości UART.

RS-232 to zestaw specyfikacji dotyczących napięć, obciążenia itd. Określa również szereg szczegółów sygnalizacji, obejmujących kilka różnych dostępnych linii sygnałowych. Ale lepiej jest postrzegać RS-232 jako specyfikację elektroniki definiującą zakresy napięcia dla znaku i spacji , marginesów szumów, dopuszczalnych szczegółów ładowania odbiornika i różnych innych szczegółów związanych z tłumaczeniem pomiędzy zakresami sygnałów analogowych i dyskretnymi cyfrowymi i nie tyle o jakimś konkretnym protokole szeregowym UART.

Po prostu skieruję Cię na strony Wiki po szczegóły (które chyba powinieneś przeczytać przed pytaniem tutaj). Są to: RS-232 i UART. Nie mam ochoty powielać tej pracy.



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...