Articles

Komunikacja szeregowa

Posted on
Wkładowcy: jimblom

Ulubione Ulubione 88

Udostępnij

Użyj tego adresu URL, aby udostępnić:

UARTs

Ostatnim elementem tej szeregowej układanki jest znalezienie czegoś, co zarówno tworzy pakiety szeregowe, jak i kontroluje te fizyczne linie sprzętowe. Wejdź do UART.

Uniwersalny asynchroniczny odbiornik/transmiter (UART) jest blokiem obwodów odpowiedzialnym za implementację komunikacji szeregowej. Zasadniczo, UART działa jako pośrednik między interfejsami równoległymi i szeregowymi. Na jednym końcu UART znajduje się magistrala ośmiu lub więcej linii danych (plus kilka pinów kontrolnych), na drugim dwa przewody szeregowe – RX i TX.

Uproszczony UART
Niezwykle uproszczony interfejs UART. Równoległy na jednym końcu, szeregowy na drugim.

UARTy istnieją jako samodzielne układy scalone, ale częściej można je znaleźć wewnątrz mikrokontrolerów. Będziesz musiał sprawdzić arkusz danych swojego mikrokontrolera, aby zobaczyć, czy ma on jakiekolwiek UART. Niektóre nie mają żadnego, niektóre mają jeden, niektóre mają wiele. Na przykład Arduino Uno – oparte na „starym wiernym” ATmega328 – ma tylko jeden UART, podczas gdy Arduino Mega – zbudowane na ATmega2560 – ma aż cztery UARTy.

Jak oznaczają R i T w akronimie, UARTy są odpowiedzialne zarówno za wysyłanie, jak i odbieranie danych szeregowych. Po stronie nadawczej, UART musi utworzyć pakiet danych – dołączając bity synchronizacji i parzystości – i wysłać ten pakiet linią TX z precyzyjnym taktowaniem (zgodnie z ustawioną szybkością transmisji). Po stronie odbiorczej, UART musi próbkować linię RX z szybkością zgodną z oczekiwaną szybkością transmisji, wybrać bity synchronizacji i wypluć dane.

Wewnętrzny UART

Wewnętrzny schemat blokowy UART (dzięki uprzejmości arkusza danych Exar ST16C550)

Bardziej zaawansowane UART mogą wrzucać odebrane dane do bufora, gdzie mogą pozostać, dopóki mikrokontroler po nie nie przyjdzie. UARTy zazwyczaj wypuszczają swoje zbuforowane dane na zasadzie first-in-first-out (FIFO). Bufory mogą być tak małe jak kilka bitów, lub tak duże jak tysiące bajtów.

UARTy programowe

Jeśli mikrokontroler nie ma UARTu (lub ma go za mało), interfejs szeregowy może być bit-banged – bezpośrednio kontrolowany przez procesor. To jest podejście, które stosują biblioteki Arduino, takie jak SoftwareSerial. Bit-banging jest wymagający dla procesora i zazwyczaj nie jest tak precyzyjny jak UART, ale działa w razie potrzeby!

Udostępniaj

Użyj tego adresu URL, aby udostępnić:

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *