Znam 9600, 19200, 38400, 57600, 115200 i 1,8432 MBaud, ale żadnych innych. Dlaczego te wartości są używane i czy po prostu podwajają się za każdym razem, czy też dzieje się coś bardziej złożonego (na przykład 38400 czterokrotnie to nie 115200 bodów?)
Powodem, dla którego zadaję to pytanie, jest to, że projektowanie czegoś, co może wymagać interakcji z różnymi szybkościami transmisji. Zainicjuje się w 9600, a następnie przełączy na określoną szybkość transmisji. Ale nie mogę obsługiwać dowolnych szybkości, ponieważ dsPIC33F, których używam, nie obsługuje dowolnych szybkości, ponieważ jest ograniczony do 16-bitowego licznika w dół BRG. Pod tym względem jest podobnie do wielu innych procesorów.
Komentarze
- W praktyce licznik 16-bitowy plus skalery pre / post są więcej niż wystarczające aby uzyskać ” wystarczająco blisko ” do dowolnych szybkości transmisji. Interfejs szeregowy UART może tolerować niewielkie niezgodności szybkości transmisji.
- uart zaczyna się w środku bitu START i musi pozostać blisko środka bitu STOP po serializacji 7-10 bitów, co zapewnia minimalną dokładność zegara wynoszącą około 2-3%, najlepiej lepiej radzić sobie z szumami, jitterem, odchyleniami w częstotliwość źródła …
Odpowiedź
Zaczęło się dawno temu od teletypów – myślę, że 75 bodów Od tamtej pory liczba ta w większości się podwoiła, z kilkoma ułamkowymi wielokrotnościami (x1,5), na przykład 28 800, gdzie istniały ograniczenia dotyczące technologii modemu linii telefonicznej, które nie pozwalały na jej podwojenie.
Standardowe wartości kryształów pochodzą z tych wczesnych szybkości transmisji i ich dostępności y dyktuje przyszłe stawki. Np.
\ $ \ begin {align} {7.3728 \, \ mathrm {MHz} \ over 16} & = 460,800 \; \ text {baud} \\\\ {7.3728 \, \ mathrm {MHz} \ over 64} & = 115,200 \, \ text {baud}. \ end {align} \ $
Większość UARTS używa zegara o wartości \ $ 2 ^ n \ times 16 \ $ szybkości transmisji, bardziej nowoczesne części (np. NXP LPC) mają dzielniki ułamkowe, aby uzyskać szerszy zakres przy użyciu niebinarnych wielokrotności.
Inne popularne standardy to 31 250 (MIDI) i 250K (DMX), oba prawdopodobnie wybrane jako ładne wielokrotności „okrągłych” zegarów, takich jak 1 MHz itp.
Komentarze
- Nie ' nie myślę o dzielnikach ułamkowych służą do uzyskiwania niestandardowych przepływności, ale raczej standardowych przepływności z niestandardowych częstotliwości zegara MCU.
- Odnowiłem dwa lata 1926 teletypów, jeszcze na studiach (1976) i tak, działały z około 75 bodów. Były oznaczone jako teletypy baudot. Podłączony do 110vac, a silnik zapewniał rozrząd, z połączeniem elektrycznym między nimi. Zanurzyłem je w benzynie, żeby je wyczyścić. (Daj spokój – miałem 18 lat, ale zadziałało!) Ctrl-G zadzwonił do drugiego szczerze dzwonkiem dobroci. Niestety, nie ' nawet nie pamiętam, komu je oddałem. 🙁 Więc tak, ' d wpisujesz na klawiaturze mechanicznej, to mechanicznie serializuje twoje naciśnięcia klawiszy i tworzy i przerywa kontakt, który odczytuje druga strona.
- Hej, rycząca ' 20 ' s! Jakiej jakości technologia przetrwa 50 lat i zakończy się w John Silva ' szopa w Hayward w Kalifornii.
- @DougNull Przepraszamy za wypukłość – pytanie o 115200 bps. Więc wziąłeś zegar IC (7,3728 MHz) i podzieliłeś go przez ? Skąd masz 64?
Odpowiedź
RealTerm, darmowy program terminala Windows, zawiera listę tych stawek UART w jego menu Baud:
110, 150, 300, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600
Jednak są to w rzeczywistości bity na sekundę (bps), a nie bodów – patrz poniżej.
Teletypy 8-poziomowe, takie jak ASR-33, używają 110 bodów. Nie wiem, gdzie użyto 150 bodów, ale tak jest podwojenie 75 bodów, zwykle nas ed (wraz z 60 bodów) dla 5-poziomowych TTY.
300 bps było standardem dla pierwszych szeroko używanych modemów telefonicznych w latach sześćdziesiątych. W tym samym czasie pojawiło się kilka terminali o długości 30 znaków na sekundę.
Powyżej 300 bps / 300 bodów, w których stosowano proste kluczowanie z przesunięciem częstotliwości (FSK), liczby bps i baud (symbole lub tony na sekundę) ) nie są takie same. Na przykład modem 1200 bps faktycznie działa z szybkością 600 bodów, a modem 4800 bps z szybkością 1600 bodów. Zapoznaj się z tabelą w sekcji Przepustowości w tym artykule . Różnica polega na tym, że oprócz użycia określonej liczby impulsów tonowych na sekundę, kluczowanie z przesunięciem fazowym i inne metody są używane do wyodrębnienia dodatkowej przepustowości z tej samej transmisji stawka, aby uzyskać coraz wyższe punkty bazowe. (Więc modem 56K w rzeczywistości działa tylko z prędkością 8000 bodów.)
Jak widać, lista szybkości UART zasadniczo zaczynała się od 75 i stale podwajała się (pomijając 600), aż dotarła do 38400, gdzie został pomnożony przez 1,5, aby uzyskać 57600.56 Kb / s to limit dla analogowej linii telefonicznej. Wyższe szybkości od 115200 w górę (po raz kolejny podwajane począwszy od 57600) są używane dla połączeń przewodowych.
Jak wspomniano mikeselectricstuff, 14400 i 28800 bps zostały wprowadzone jako 1,5 x 9600 i 1,5 x 19200, gdy prędkości modemów nie mogły „nie można ich wtedy podwoić, ale są już rzadko używane.
Komentarze
- Nie powinno być pedantyczne, ale program może obsługiwać tylko określone prędkości sprzęt na to pozwala. Może nawet nie zadawać sobie trudu zadawania pytań i po prostu wymienia standardowe prędkości. Pytając mój sprzęt,
zip(*serial.Serial('COM10').getSupportedBaudrates())
, odpowiada:(50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800, 9600, 19200, 38400, 57600, 115200)
- Użyłem sprzęgacza akustycznego 600 bit / s half duplex w latach osiemdziesiątych. 75 bit / s było używane w niemieckim systemie BTX przez długi czas w kierunku wysyłania, pobieranie było 1200 bit / s.
- Ja ' widziałem też 62,5 kb / s. W rzeczywistości zależy to również od twojego głównego zegara, możesz obliczyć, jakie szybkości transmisji doprowadzą do wystarczająco niskiego błędu.
Odpowiedź
Przez długi czas do komunikacji używano podwielokrotności 115 200 – albo potęgi dwóch podwielokrotności 38 400, albo 57 600 lub 115 200. Większość sprzętu komputerowego obsługuje te stawki. Niektóre komputery PC mogą obsługiwać 230 400 lub 460 800. Należy pamiętać, że wiele wbudowanych kontrolerów, takich jak szybkości transmisji danych, które są wielokrotnościami ich własnych częstotliwości zegara, a niektóre układy USB-port szeregowy mogą obsługiwać dowolną podwielokrotność liczby całkowitej 3 000 000 b / s, więc prędkości takie jak 1 000 000 b / s lub 1 500 000 b / s będą prawdopodobnie urządzeń do łączenia się z komputerami PC przez chipy USB.
Przy okazji, warto wspomnieć o jeszcze jednej szybkości: 31,250bps to szybkość używana dla standardowego MIDI.
Odpowiedź
Oryginalny IBM PC miał UART 8250. To wymagało zegara 1,8432 MHz i podzieliło to przez pewną liczbę całkowitą, aby wygenerować wewnętrzny zegar, i ten zegar działa z 16 cyklami do bitu.
Ustawienie 1 w rejestrze dzielnika daje 115 200, 2 daje 57 600, 3 dostaje 38 400, 6 dostaje 19 200 itd.
Najlepiej jest użyć zegara, który pracuje z pewną wielokrotnością 1,8432 MHz z DSPIC.