UART często pozwalają wybrać między 1, 1,5 a 2 bitami stopu. Przy wydajności 1 bitu stopu wydajność wynosi 80% (8/10), a 2 bity stopu spadają do 72,7% (8/11). Jaka jest więc zaleta drugiego bitu stopu?
Dodatkowe bity stopu mogą być użytecznym sposobem na dodanie nieco dodatkowego czasu przetwarzania odbioru, szczególnie przy dużych prędkościach transmisji i / lub przy użyciu miękkiego UART, gdzie potrzeba czasu na przetworzenie odebranego bajtu.
Tam, gdzie prędkość jest wąska, a Twój UART oferuje tylko współczynniki podziału dla mocy 2, dodanie dodatkowego stopbitu może być opcją, aby dać mniej drastyczną redukcję prędkości niż następna najniższa prędkość transmisji.
Myślę, że jest to jeden z powodów, dla których standard DMX512 określa 2 stopbity.
Inną sytuacją, w której mogą się przydać, jest to, że urządzenia przekazują strumień danych bez buforowania lub pakietowania - niewielkie różnice w częstotliwości taktowania między węzłami i ziarnistość skończonego próbkowania mogą powodować błędy, gdy dane są odbierane i retransmitowane przez wiele węzłów w łańcuch, ale jeśli dane są wysyłane z 2 stopbitami, a odbiorniki są ustawione na jeden stopbit, dodaje wystarczający margines, aby pomieścić te błędy i pozostawia co najmniej jeden ważny okres stopbit dla węzłów daleko w łańcuchu, aby niezawodnie odbierać.
Zetknąłem się również z sytuacją, w której bardzo długi odcinek kabla spowodował pewną asymetrię w czasie narastania i opadania, co skutkowało nieodpowiednią długością stopbitu - wysyłanie 2 stopbitów i posiadanie tylko jednego odbiornika wymaga naprawy.
W dawnych czasach drukarki były (prawie) całkowicie mechanicznymi konstrukcjami. Baudrates nawet wtedy był nieco znormalizowany, więc dodanie dodatkowego bitu stopu dałoby drukarce trochę więcej czasu na wydrukowanie postaci. Aspekty czasowe były wtedy bardziej widoczne. W przypadku mojej pierwszej drukarki głośno http://en.wikipedia.org/wiki/Teletype_Model_33 , po wysłaniu zwrotu karetki musiałem wstawić pauzę dwóch znaków.
Dwa bity stopu raczej nie będą o wiele bardziej przydatne niż jeden w systemie, który ma znaczną część czasu zatrzymania i który pracuje w środowisku o niskim poziomie hałasu (niski BER), takim jak sprzęt wewnętrzny lub interfejs peryferyjny z kilkoma miernikami kabla i / lub bez stopnia modem-modem.
2 bity stopu zapewniają dłuższy czas synchronizacji, więcej czasu na przetwarzanie znaków i prawdopodobnie, w zależności od sprzętu i algorytmów, większą szansę na uzyskanie lub odzyskanie synchronizacji podczas ciągłego strumienia danych. Czas między znakami ma znacznie mniejszą wartość w nowoczesnych systemach niż wtedy, gdy prędkości zegara były niskie, a przepustowość procesora mniejsza.
Jeśli masz zasadniczo ciągły strumień danych, to jeśli nie zostanie zsynchronizowany, każdy wysoki bit będzie wyglądał jak bit stopu. Każde wysokie niskie przejście będzie wyglądało jak granica bajtów. Jeśli Twój odbiornik zaczyna od granicy 10 i nie jest to prawdziwa granica początkowa, zostanie to odkryte tylko w 50% przypadków (tj. Jeśli okaże się, że końcowy „bit zatrzymania” rzeczywiście jest bitem niskiej ilości danych, a Ty również po drodze ominąłeś rzeczywistą granicę stop / start. Średnio masz 1/4 perspektywy, że granica bajtów wynosi 1/0 i fałszywie wygląda jak para stop / start. Powyższe sugeruje, że jeśli wybierzesz fałszywy stop- rozpocznij parę, prawdopodobnie istnieje około 50% szans, że wybierzesz kolejną przy następnej próbie.
Jeśli użyjesz 2 bitów stopu (11), wówczas prawidłową sekwencją stop startu jest 110, która ma 1/8 szansy na wystąpienie w losowym ruchu danych. Mieszanie bitów stopu i startu w niezsynchronizowanym przepływie zmienia nieco saty, ale wydaje się stosunkowo mało prawdopodobne, że jeśli uzyskasz fałszywą sekwencję 110 stop / start w jednym cyklu, trafisz w kolejną próbę przed potknięciem się o autentyczną 110 następna sekwencja.
Jak zauważasz, 1 bit stopu daje wydajność 8/10 = 80% maksymalnej przepustowości, a 2 bity stopu daje wydajność 8/11 = 72% wydajności. Różnica w przepustowości przy całkowitym limicie wynosi 80% / 72% = ~ 11% więcej. jest to użyteczny zysk w ekstremalnych okolicznościach, ale nie rozległy, a jeśli obwód jest bezczynny przez około 10% czasu, ma minimalną wartość. Jeśli twój obwód jest hałaśliwy i podatny na sporadyczną utratę synchronizacji, dodatkowy bit stopu może bardzo pomóc. ALE jeśli tak bardzo zależy Ci na przepustowości, często możesz zwiększyć prędkość transmisji (nie zawsze) lub przejść na w pełni synchroniczną pracę.
źródło
Aby wzmocnić punkt mikeselectricstuff dotyczący czasu odbioru za pomocą „miękkich UART”, aplikacja odbierająca, która zawsze będzie wiedziała, kiedy przyjmować dane i robi to na zasadzie odpytywania, może często obsługiwać wyższe prędkości transmisji niż byłoby to praktyczne w przypadku miękkiego UART sterowanego przerwaniami. Takie aplikacje mogą jednak przetwarzać przychodzące dane tylko w czasie między bitem zatrzymania jednego bajtu a bitem uruchomienia następnego bajtu; czas potrzebny na przetworzenie każdego bajtu jest czynnikiem ograniczającym szybkość komunikacji. Przetwarzanie danych w 115 200-N-8-2 nie jest dużo bardziej wymagające niż przetwarzanie w 57 600-N-8-1, ale jest o ponad 80% szybsze.
Czasami można posunąć sprawy jeszcze dalej, stosując pozornie mniej wydajne formaty danych. Na przykład, można wysłać każdy bajt na dwa kawałki, jeden z siedmioma bitami i jeden z jednym (wszystkie MSB części jednobitowej są ustawione). Jeśli to zrobisz, nawet z jednym bitem stopu, będzie osiem bitów znakowania między końcem jednej pary bajtów a początkiem następnego, umożliwiając w ten sposób czterokrotne zwiększenie szybkości transmisji bitów może zrobić tylko dwa bity stopu (i osiem razy więcej niż to, co można zrobić z jednym). Pomimo konieczności wysyłania dwa razy większej liczby bajtów, czterokrotny wzrost szybkości transmisji danych byłby dużym zwycięstwem. Ponadto, chociaż każda przesyłana para bajtów mogłaby zostać wykorzystana do wysłania ośmiu bitów danych, tylko 130 z 256 możliwych wartości bajtów zostanie wykorzystanych przez kodowanie,
źródło
Dawno, dawno temu istniały elektromechaniczne potwory zwane teletypami. Większość pracowała na silnikach prądu przemiennego synchronizowanych z częstotliwością linii elektroenergetycznej. Dlatego zawsze istniała szansa, że dwie komunikujące się maszyny mogły nie zostać zsynchronizowane z tą samą siecią energetyczną lub nawet działać na prąd przemienny przy użyciu różnych częstotliwości.
Zatem, aby pozwolić wolniejszej maszynie na nadrobienie zaległości i nie na zsynchronizowanie, wysłano dwa bity stopu.
Do innych celów, takich jak umożliwienie powrotu karetki drukarskiej na początek nowej linii, wysłano CR, LF plus dwa wycięcia (wszystkie otwory na 8-poziomowej taśmie).
Było to zwyczajowe w przypadku obwodów pracujących z prędkością 110 Baud i wolniej.
źródło
Powolność odbiorczych urządzeń mechanicznych była przyczyną dodania dodatkowych bitów stopu, jednak urządzenia te są obecnie wystarczająco szybkie i pracują z jeszcze większymi prędkościami transmisji bez potrzeby stosowania dodatkowego bitu stopu
źródło