Jak mogę ustawić prędkość UART?

12

Jak ustawić szybkość transmisji w UART

Pytanie dodatkowe: Jakie prędkości transmisji są dostępne w RPi?

Edycja : Od czasu przeczytania odpowiedzi Steve'a odkryłem, że są dostępne dwa UART.

Mini-UART może pracować do 32 Mb / s, ale ma mały bufor i dlatego potrzebowałby dużo procesora, aby nadążyć.

Istnieje również pełniej funkcjonalny UART z większymi buforami, nie znalazłem jeszcze minimalnej / maksymalnej prędkości dla niego.

John La Rooy
źródło
Czy chcesz ustawić szybkość transmisji w czasie wykonywania, aby połączyć się z innym urządzeniem, czy w czasie rozruchu, aby móc zalogować się do Pi przez jego port szeregowy?
Malvineous
@Malvineous, czas uruchamiania jest w porządku, ale środowisko uruchomieniowe jest również przydatne. Jestem zainteresowany rozmową z innymi urządzeniami.
John La Rooy,

Odpowiedzi:

9

Według skróconego przewodnika Farnell domyślna szybkość transmisji wynosi: 115200 . Dość szczegółową dyskusję na temat ustawień i możliwości UART można znaleźć w tym poście na blogu Więcej na temat portów szeregowych Raspberry Pi . Bardziej szczegółowe szczegóły implementacji / wyzwania związane z pracą z portem szeregowym można znaleźć w blogu Przygotowanie mojego Raspberry Pi do szybkiej komunikacji szeregowej UART .

Nie wspominasz, z której dystrybucji korzystasz, ale zakładając, że korzystasz z Debiana, możesz ustawić szybkość transmisji, wykonując następujące czynności:

Zauważ, że Raspberry Pi używa UART dla komunikatów konsoli (w tym komunikatów rozruchowych) i getty, abyś mógł zalogować się przez port szeregowy. Aby korzystać z tego portu szeregowego do własnych celów, należy wyłączyć te usługi.

Aby zmienić szybkość transmisji w konsoli, edytuj /boot/cmdline.txt relacing 115200 z żądaną szybkością transmisji (pamiętaj, że to tylko jedna linia).

dwc_otg.lpm_enable = 0 konsola = ttyAMA0,115200 kgdboc = ttyAMA0,115200 konsola = tty1 root = / dev / mmcblk0p2 rootfstype = ext4 rootwait

następnie edytuj / etc / inittab, aby zmienić szybkość transmisji getty (powinieneś znaleźć linię podobną do następującej z szybkością transmisji 115200, zmień ją na żądaną prędkość transmisji)

2: 23: respawn: / sbin / getty -L ttyAMA0 115200 vt100

i pamiętaj, aby obserwować napięcie pinów, aby uniknąć obrażeń Pi.

Dodatkowe referencje:

http://www.andremiller.net/content/raspberry-pi-and-arduino-via-gpio-uart

Steve Robillard
źródło
3

Wątek ten ma rozwiązanie dla dowolnej (niestandardowej) szybkości transmisji: /programming/12646324/how-to-set-a-custom-baud-rate-on-linux/21960358

Najpierw wykonując manipulacje POSIX, a następnie to, aby ustawić niestandardową prędkość, działa dobrze na wbudowanym UART Raspberry Pi, aby uzyskać prędkość 250 kb. Więc oprócz standardowych stawek POSIX, możesz mieć prawie dowolny współczynnik całkowity wynoszący 16 mln, do co najmniej 1 mln ( http://fw.hardijzer.nl/?p=138 dla rzeczy bardzo szybkich)

RichardAshAudacity
źródło