Chcę nawiązać komunikację między moim PIC18F4550 a komputerem, ale utknąłem, czy powinienem używać UART, czy USART na duże odległości. Kiedy korzystniejsze jest użycie jednego zamiast drugiego?
Cóż, kto będzie miał dostęp do synchronicznego urządzenia nadawczo-odbiorczego na swoim komputerze, aby połączyć się z gadżetem?
PlasmaHH
Odpowiedzi:
11
Dla Twoich celów UART i USART są tym samym. UART oznacza uniwersalny asynchroniczny odbiornik / nadajnik . Dodatkowe S w USART oznacza synchroniczne . To tylko niewielka dodatkowa możliwość Microchip dał moduł, aby był bardziej użyteczny w niektórych przypadkach. Ta dodatkowa funkcja nie ma zastosowania w twoim przypadku.
Port COM komputera PC wymaga tylko UART do rozmowy. Fakt, że USART mógł być używany w inny sposób, jest dla ciebie nieistotny, z wyjątkiem tego, że być może masz dodatkowe bity konfiguracyjne, które należy ustawić we właściwy sposób.
Aby w pełni zbadać pytanie, konieczne jest odkodowanie akronimów:
U niversal synchroniczny R eceiver T ransmitter to tradycyjny "port szeregowy". Jest asynchroniczny w tym sensie, że zaangażowany jest tylko jeden sygnał - żaden zegar nie jest przesyłany, a zamiast tego odbiornik musi odzyskać zegar, zwykle przez nadpróbkowanie.
W przeciwieństwie do tego u niversal S ynchronous synchroniczny R eceiver T ransmitter jest bardziej uniwersalne urządzenie z UART typu asynchronicznego trybu, ale które mogą być skonfigurowane do działania w synchronicznych trybów gdzie zegara są przesyłane wraz z danymi. W zależności od możliwości może to obejmować współpracę ze znanymi synchronicznymi formatami szeregowymi, na przykład SPI lub I2S.
Kilka MCU może oferować oba typy urządzeń peryferyjnych. Dla podstawowej asynchronicznej potrzeby szeregowej możesz wybrać jedną z nich. Jednak na wybór mogą mieć wpływ styki, na których może działać dane urządzenie peryferyjne, inne potrzeby w systemie itp. Fabryczny program ładujący ROM może działać tylko na niektórych urządzeniach peryferyjnych, a nie na innych. Mogą występować również różnice w zakresie obsługi bufora, długości słów, obsługi parzystości, powiązanych sygnałów sterujących itp. A interfejs oprogramowania może być zupełnie inny.
Są w zasadzie takie same dla twojego mikrokontrolera.
USART oznacza uniwersalny asynchroniczny i synchroniczny odbiornik / nadajnik. UART oznacza uniwersalny asynchroniczny odbiornik / nadajnik.
W tym protokole komunikacyjnym przez większość czasu wykorzystywana jest asynchroniczna transmisja danych. Synchroniczna transmisja danych jest rzadko używana, ponieważ masz znacznie lepszy synchroniczny protokół komunikacyjny, taki jak SPI i I2C.
„ Synchroniczna transmisja danych jest rzadko używana, ponieważ masz znacznie lepszy synchroniczny protokół komunikacyjny, taki jak SPI i I2C. ” Uwaga: wydaje się, że porównujesz jabłka i pomarańcze :-) SPI i I2C są zwykle używane na stosunkowo krótkich dystansach. Tryb synchroniczny USART jest zwykle używany do interfejsów na duże odległości, np. Wielu stóp lub więcej. Pracowałem z wieloma interfejsami komunikacji synchronicznej, np. V.35 lub nawet z opcjonalnymi sygnałami synchronicznymi w V.24, aby połączyć się z modemami synchronicznymi. Wszystkie wymagały USART i nie mogły być rozsądnie zastąpione przez SPI i I2C.
SamGibson,
Bardzo dziękujemy za informację.
Thịnh Lê Quí
1
Twój mikrokontroler (MCU) ma uniwersalny synchroniczny / asynchroniczny odbiornik / nadajnik (USART). Ta jednostka funkcjonalna obsługuje tryb komunikacji synchronicznej i tryb komunikacji asynchronicznej.
W trybie synchronicznym nadajnik Tx jest podłączony do odbiornika Rx przewodem CLOCK i przewodem DATA. Raz na okres ZEGARA, Tx wysyła kolejny bit na DANE, a Rx pobiera kolejny bit z DANYCH. Czas przesyłania jest regulowany przez CLOCK i dlatego jest znany zarówno Tx, jak i Rx. Tak więc zarówno Tx, jak i Rx mogą używać wyższych przepływności niż w trybie asynchronicznym.
Jednak potrzebne są dwa przewody / piny złącza zamiast jednego, a nadmierne przekrzywienie lub drgania między ZEGAREM a DANYMI prowadzą do odebrania uszkodzonych danych. Czas w sterownikach linii i odbiornikach linii zawierających ZEGAR i DANE muszą być ściśle dopasowane, aby zmniejszyć to przesunięcie. Zarówno interfejs, jak i czynniki dwuprzewodowe stają się bardziej widoczne na dłuższych dystansach, z długimi kablami i / lub wieloma przeskokami połączeń.
W trybie asynchronicznym nadajnik Tx jest podłączony do odbiornika Rx przewodem DATA. Raz na określony czas bitów, Tx wysyła kolejny bit na DANE, a Rx pobiera kolejny bit z DANYCH. Czas przesyłania jest regulowany przez osobne oscylatory częstotliwości w Tx i Rx, z których każdy jest nieznany i będzie nieco inny. Dlatego maksymalna niezawodna przepływność jest niższa niż w trybie synchronicznym.
Na początku każdego nowego bajtu Rx używa początkowego przejścia bitów STOP-START, aby ponownie zsynchronizować z przychodzącym czasem sekwencji bitów. Powoduje to, że opóźnienia od sterowników / odbiorników linii, kabli i złączy nie mają znaczenia dla taktowania okresu bitów, choć nie dla jakości bitów. Potrzebny jest tylko jeden przewód na sygnał komunikacyjny zamiast dwóch, co zmniejsza koszt kabli, złączy i sterowników / odbiorników linii.
To zależy od twoich akceptowalnych kosztów, odległości, które podróżujesz i możliwości Tx i Rx. Komputer prawdopodobnie obsługuje tryb asynchroniczny tylko na standardowym porcie COM, co wymaga specjalnego portu (PCIe lub USB, prawdopodobnie USB) dla trybu synchronicznego.
Odpowiedzi:
Dla Twoich celów UART i USART są tym samym. UART oznacza uniwersalny asynchroniczny odbiornik / nadajnik . Dodatkowe S w USART oznacza synchroniczne . To tylko niewielka dodatkowa możliwość Microchip dał moduł, aby był bardziej użyteczny w niektórych przypadkach. Ta dodatkowa funkcja nie ma zastosowania w twoim przypadku.
Port COM komputera PC wymaga tylko UART do rozmowy. Fakt, że USART mógł być używany w inny sposób, jest dla ciebie nieistotny, z wyjątkiem tego, że być może masz dodatkowe bity konfiguracyjne, które należy ustawić we właściwy sposób.
źródło
Krótka odpowiedź: użyj tego, co masz na chipie
Aby w pełni zbadać pytanie, konieczne jest odkodowanie akronimów:
U niversal synchroniczny R eceiver T ransmitter to tradycyjny "port szeregowy". Jest asynchroniczny w tym sensie, że zaangażowany jest tylko jeden sygnał - żaden zegar nie jest przesyłany, a zamiast tego odbiornik musi odzyskać zegar, zwykle przez nadpróbkowanie.
W przeciwieństwie do tego u niversal S ynchronous synchroniczny R eceiver T ransmitter jest bardziej uniwersalne urządzenie z UART typu asynchronicznego trybu, ale które mogą być skonfigurowane do działania w synchronicznych trybów gdzie zegara są przesyłane wraz z danymi. W zależności od możliwości może to obejmować współpracę ze znanymi synchronicznymi formatami szeregowymi, na przykład SPI lub I2S.
Kilka MCU może oferować oba typy urządzeń peryferyjnych. Dla podstawowej asynchronicznej potrzeby szeregowej możesz wybrać jedną z nich. Jednak na wybór mogą mieć wpływ styki, na których może działać dane urządzenie peryferyjne, inne potrzeby w systemie itp. Fabryczny program ładujący ROM może działać tylko na niektórych urządzeniach peryferyjnych, a nie na innych. Mogą występować również różnice w zakresie obsługi bufora, długości słów, obsługi parzystości, powiązanych sygnałów sterujących itp. A interfejs oprogramowania może być zupełnie inny.
źródło
Są w zasadzie takie same dla twojego mikrokontrolera.
USART oznacza uniwersalny asynchroniczny i synchroniczny odbiornik / nadajnik. UART oznacza uniwersalny asynchroniczny odbiornik / nadajnik.
W tym protokole komunikacyjnym przez większość czasu wykorzystywana jest asynchroniczna transmisja danych. Synchroniczna transmisja danych jest rzadko używana, ponieważ masz znacznie lepszy synchroniczny protokół komunikacyjny, taki jak SPI i I2C.
źródło
Twój mikrokontroler (MCU) ma uniwersalny synchroniczny / asynchroniczny odbiornik / nadajnik (USART). Ta jednostka funkcjonalna obsługuje tryb komunikacji synchronicznej i tryb komunikacji asynchronicznej.
W trybie synchronicznym nadajnik Tx jest podłączony do odbiornika Rx przewodem CLOCK i przewodem DATA. Raz na okres ZEGARA, Tx wysyła kolejny bit na DANE, a Rx pobiera kolejny bit z DANYCH. Czas przesyłania jest regulowany przez CLOCK i dlatego jest znany zarówno Tx, jak i Rx. Tak więc zarówno Tx, jak i Rx mogą używać wyższych przepływności niż w trybie asynchronicznym.
Jednak potrzebne są dwa przewody / piny złącza zamiast jednego, a nadmierne przekrzywienie lub drgania między ZEGAREM a DANYMI prowadzą do odebrania uszkodzonych danych. Czas w sterownikach linii i odbiornikach linii zawierających ZEGAR i DANE muszą być ściśle dopasowane, aby zmniejszyć to przesunięcie. Zarówno interfejs, jak i czynniki dwuprzewodowe stają się bardziej widoczne na dłuższych dystansach, z długimi kablami i / lub wieloma przeskokami połączeń.
W trybie asynchronicznym nadajnik Tx jest podłączony do odbiornika Rx przewodem DATA. Raz na określony czas bitów, Tx wysyła kolejny bit na DANE, a Rx pobiera kolejny bit z DANYCH. Czas przesyłania jest regulowany przez osobne oscylatory częstotliwości w Tx i Rx, z których każdy jest nieznany i będzie nieco inny. Dlatego maksymalna niezawodna przepływność jest niższa niż w trybie synchronicznym.
Na początku każdego nowego bajtu Rx używa początkowego przejścia bitów STOP-START, aby ponownie zsynchronizować z przychodzącym czasem sekwencji bitów. Powoduje to, że opóźnienia od sterowników / odbiorników linii, kabli i złączy nie mają znaczenia dla taktowania okresu bitów, choć nie dla jakości bitów. Potrzebny jest tylko jeden przewód na sygnał komunikacyjny zamiast dwóch, co zmniejsza koszt kabli, złączy i sterowników / odbiorników linii.
To zależy od twoich akceptowalnych kosztów, odległości, które podróżujesz i możliwości Tx i Rx. Komputer prawdopodobnie obsługuje tryb asynchroniczny tylko na standardowym porcie COM, co wymaga specjalnego portu (PCIe lub USB, prawdopodobnie USB) dla trybu synchronicznego.
źródło