Como posso definir a velocidade do UART?

12

Como você deve definir a taxa de transmissão do UART

Pergunta de bônus: Quais taxas de transmissão estão disponíveis no RPi?

Edit : Desde a leitura da resposta de Steve, descobri que existem dois UARTs disponíveis.

O mini-UART pode trabalhar até 32Mbaud, mas possui um pequeno buffer e, portanto, precisaria de muita CPU para acompanhar.

Há também um UART mais completo com buffers maiores, ainda não encontrei a velocidade mínima / máxima para ele.

John La Rooy
fonte
Deseja definir a taxa de transmissão no tempo de execução, para fazer interface com outro dispositivo ou no momento da inicialização, para que você possa efetuar login no Pi pela porta serial?
Malvineous
@ Malvineous, o tempo de inicialização está ok, mas o tempo de execução também é útil. Estou interessado em conversar com outros dispositivos.
John La Rooy

Respostas:

9

De acordo com o Guia de início rápido da Farnell , a taxa de transmissão padrão é: 115200 . Uma discussão bastante detalhada das configurações e recursos do UART pode ser encontrada nesta postagem do blog Mais sobre portas seriais do Raspberry Pi . Detalhes / desafios de implementação mais específicos do trabalho com a porta serial podem ser encontrados na postagem do blog Como configurar o meu Raspberry Pi para comunicação UART serial de alta velocidade .

Você não menciona qual distribuição você está executando, mas assumindo que você esteja executando o Debian, você pode definir a taxa de transmissão fazendo o seguinte:

Observe que o Raspberry Pi usa o UART for Console Messages (incluindo mensagens de inicialização) e getty para que você possa fazer login via serial. Para usar esta porta serial para seus próprios usos, você precisará desativar esses serviços.

Para alterar a taxa de transmissão do console, edite /boot/cmdline.txt relacionando 115200 com a taxa de transmissão desejada (observe que esta é uma linha).

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

edite / etc / inittab para alterar a taxa de transmissão do getty (você deve encontrar uma linha como a seguinte com a taxa de transmissão de 115200, altere-a para a taxa de transmissão desejada)

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

e lembre-se de observar as tensões dos pinos para evitar danos ao seu Pi.

Referências adicionais:

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

Steve Robillard
fonte
3

Este encadeamento possui uma solução para uma taxa de transmissão arbitrária (não padrão): /programming/12646324/how-to-set-a-custom-baud-rate-on-linux/21960358

Fazendo manipulações POSIX primeiro, depois isso para definir a velocidade personalizada, funciona bem no UART interno do Raspberry Pi para obter uma taxa de transmissão de 250k. Assim como as taxas padrão POSIX, você pode ter praticamente qualquer fator inteiro de 16M, até pelo menos 1M ( http://fw.hardijzer.nl/?p=138 para itens de velocidade muito alta)

RichardAshAudacity
fonte