Quais são as taxas UART padrão?

Eu sei 9600, 19200, 38400, 57600, 115200 e 1,8432 Mbaud, mas nenhum outro. Por que esses valores são usados? Eles estão simplesmente dobrando a cada vez ou há algo mais complexo acontecendo (por exemplo, 38400 quadruplicado não é 115200 baud?)

A razão de eu fazer esta pergunta é que estou projetando algo que pode ter que interagir com uma variedade de taxas de baud diferentes. Ele será inicializado em 9600 e, em seguida, mudará para uma taxa de baud específica. Mas não posso suportar taxas arbitrárias porque o dsPIC33F que estou usando não suporta taxas arbitrárias como é limitado a um contador descendente de BRG de 16 bits. É semelhante a muitos outros processadores neste aspecto.

Comentários

  • Na prática, um contador de 16 bits mais pré / pós scalers é mais do que suficiente para obter ” perto o suficiente ” de taxas de baud arbitrárias. UART serial pode tolerar pequenas incompatibilidades de taxa de baud.
  • uart começa no meio do bit START e deve ficar próximo ao bit STOP após serializar 7-10 bits. O que torna uma precisão de clock mínima de cerca de 2-3%, de preferência melhor para lidar com ruído, jitter, desvios no frequência da fonte …

Resposta

Tudo começou há muito, muito tempo, com teletipos – acho que 75 baud . Então, tem praticamente dobrado desde então, com alguns múltiplos fracionários (x1,5), por exemplo 28.800, onde havia restrições na tecnologia de modem de linha telefônica que não permitiam que dobrasse.

Os valores de cristal padrão vieram dessas taxas de transmissão iniciais e sua disponibilidade y dita as taxas futuras. Por exemplo,

\ $ \ begin {align} {7,3728 \, \ mathrm {MHz} \ over 16} & = 460.800 \; \ text {baud} \\\\ {7.3728 \, \ mathrm {MHz} \ over 64} & = 115.200 \, \ text {baud}. \ end {align} \ $

A maioria dos UARTS usa um relógio de \ $ 2 ^ n \ vezes 16 \ $ da taxa de transmissão, partes mais modernas (por exemplo, NXP LPC) têm divisores fracionários para obter uma faixa mais ampla usando múltiplos não binários.

Outros padrões comuns são 31.250 (MIDI) e 250K (DMX), ambos provavelmente escolhidos como bons múltiplos de relógios “redondos” como 1 MHz etc.

Comentários

  • Eu não ‘ não penso em divisores fracionários são para obter taxas de bits fora do padrão, mas sim taxas de bits padrão de frequências de relógio MCU fora do padrão.
  • Eu recondicionei teletipos de dois anos de 1926, na faculdade (1976) e sim eles funcionavam a cerca de 75 baud. Eles foram rotulados como teletipos baudot. Conectado a 110vac e um motor fornecia o sincronismo, com conexão elétrica entre eles. Mergulhei-os na gasolina para limpá-los. (Dá um tempo – eu tinha 18 anos. Mas funcionou!) Ctrl-G tocou um sino honesto para o outro. Infelizmente, eu não ‘ nem me lembro para quem os dei. 🙁 Então, sim, você ‘ d digita no teclado mecânico, ele serializa mecanicamente suas teclas e abre e quebra um contato que o outro lado lê.
  • Yay, the Roaring ‘ 20 ‘ s! Que tecnologia de qualidade para durar 50 anos e acabar em John Silva ‘ s galpão em Hayward, Califórnia.
  • @DougNull Desculpe pelo salto – Pergunta para 115200 bps. Então você pegou o clock IC (7,3728 MHz) e o dividiu pelo que ? Como você conseguiu 64?

Resposta

RealTerm, um programa freeware de terminal do Windows, lista essas taxas UART em seu menu Baud:

110, 150, 300, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600

No entanto, estes são na verdade bits por segundo (bps), não baud – veja abaixo.

110 baud foi usado por teletipos de 8 níveis como o ASR-33. Não sei onde 150 Baud foi usado, mas é uma duplicação de 75 baud, normalmente nós ed (junto com 60 baud) para TTYs de 5 níveis.

300 bps foi o padrão para os primeiros modems de telefone amplamente usados na década de 1960. Vários terminais de 30 caracteres por segundo apareceram ao mesmo tempo.

Acima de 300 bps / 300 baud, que usava chaveamento de mudança de frequência simples (FSK), os valores para bps e baud (símbolos ou tons por segundo ) não são os mesmos. Por exemplo, um modem de 1200 bps realmente funciona a 600 bauds e um modem de 4800 bps funciona a 1600 bauds. Consulte a tabela em Larguras de banda neste artigo . A diferença é porque, além de usar um certo número de pulsos de tom por segundo, o chaveamento de mudança de fase e outros métodos são usados para extrair largura de banda adicional do mesmo baud taxa para obter bps cada vez mais altos. (Portanto, um modem de 56K só funciona a 8000 bauds.)

Como você pode ver, a lista de taxas UART essencialmente começou em 75 e dobrou continuamente (pulando 600), até chegar a 38400, onde foi multiplicado por 1,5 para obter 57600.56 K bps é o limite para uma linha telefônica analógica. As taxas mais altas de 115200 para cima (mais uma vez dobrando a partir de 57600) são usadas para conexões com fio.

Como mikeselectricstuff mencionado, 14400 e 28800 bps foram introduzidos como 1,5 x 9600 e 1,5 x 19200 quando as velocidades dos modems não podiam “podem ser duplicados no momento, mas raramente são usados mais.

Comentários

  • Não quero ser pedante, mas o programa só pode suportar quais velocidades o hardware permite. Pode nem mesmo se preocupar em perguntar e apenas listar as velocidades padrão. Perguntando ao meu hardware, zip(*serial.Serial('COM10').getSupportedBaudrates()), ele responde: (50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800, 9600, 19200, 38400, 57600, 115200)
  • Eu usei um acoplador acústico half duplex de 600 bit / s nos anos 80. 75 bit / s foi usado no sistema BTX alemão na direção de upload por um longo tempo, o download era de 1200 bit / s.
  • Eu ‘ também vi 62,5 kbaud. Na verdade, também depende do seu relógio principal, você pode calcular quais taxas de transmissão levarão a um erro suficientemente baixo.

Resposta

Por muito tempo, foi comum usar submúltiplos de 115.200 para comunicação – submúltiplos potência de dois de 38.400 ou então 57.600 ou 115.200. A maioria dos hardwares de PC oferece suporte a essas taxas. Alguns hardwares de PC podem suportar 230.400 ou 460.800. Observe que muitos controladores incorporados, como taxas de dados que são submúltiplos de suas próprias velocidades de clock, e alguns chips USB para serial podem suportar qualquer submúltiplo inteiro de 3.000.000bps, então velocidades como 1.000.000bps ou 1.500.000bps provavelmente se tornarão mais comuns para dispositivos para se conectar a PCs através de chips USB.

A propósito, uma outra taxa que vale a pena mencionar: 31.250 bps é a taxa usada para MIDI padrão.

Resposta

O IBM PC original tinha um UART 8250. Isso pegou um relógio de 1,8432 MHZ e o dividiu por algum inteiro para gerar seu relógio interno, e esse relógio funciona a 16 ciclos com o bit.

Definir 1 no registro divisor resulta em 115.200, 2 obtém 57.600 3 obtém 38.400, 6 obtém 19.200, etc.

Sua melhor aposta é usar um relógio que funciona em algum múltiplo de 1,8432 MHz com o DSPIC.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *