Cursos / Eletrônica / Projeto de Sistemas RF / Aula

arrow_back Aula 06 - Programação para Comunicação Serial

Configurando a Velocidade de Transmissão

A taxa de transmissão é controlada pelo módulo chamado BRG – Baud Rate Generator. Para configurar a velocidade, vamos mexer no registrador SPBRG e nos bits BRGH e SYNC no registrador TXSTA. O bit SYNC define se a transmissão vai ser síncrona (nível lógico '1') ou assíncrona (nível lógico '0'). O bit BRGH define se queremos utilizar uma alta velocidade de transmissão (nível lógico '1') ou uma baixa velocidade de transmissão (nível lógico '0'), permitindo uma maior flexibilidade na hora de configurar a velocidade.

A velocidade de transmissão é definida a partir do valor do registrador SPBRG e do bit BRGH, através das fórmulas:

$$ Taxa \, de \, Transmissão = \frac{F_{osc}}{(16 \times (SPBRG+1))}, se \, SYNC = 0, \, BRGH = 1 $$ $$ Taxa \, de \, Transmissão = \frac{F_{osc}}{(64 \times (SPBRG+1))}, se \, SYNC = 0, \, BRGH = 0 $$ $$ Taxa \, de \, Transmissão = \frac{F_{osc}}{(4 \times (SPBRG+1))}, se \, SYNC = 1, \, BRGH = X $$

Nas equações anteriores $ F_{osc} $ é a frequência de oscilação do PIC. Note que em uma transmissão assíncrona (SYNC = 0), para um mesmo valor de $ F_{osc} $ e SPBRG, temos uma taxa de transmissão maior se o BRGH estiver em '1', ou seja, se o módulo estiver configurado para alta velocidade de transmissão. As transmissões síncronas só têm uma fórmula de cálculo da taxa de transmissão, independente do valor de BRGH. Essas fórmulas são importantes para o projetista, mas normalmente você vai querer saber qual valor colocar no registrador SPBRG para conseguir uma determinada taxa de transmissão. Para isso, você pode utilizar essas fórmulas:

$$ SPBRG = \frac{F_{osc}}{16 \times Taxa \, de \, Transmissão} - 1, se\, SYNC = 0, BRGH = 1 $$ $$ SPBRG = \frac{F_{osc}}{64 \times Taxa \, de \, Transmissão} - 1, se\, SYNC = 0, BRGH = 0 $$ $$ SPBRG = \frac{F_{osc}}{4 \times Taxa \, de \, Transmissão} - 1, se\, SYNC = 1, BRGH = X $$

O registrador SPBRG pode ter valores de 0 a 255 e deve sempre ser um valor inteiro. Quando o valor calculado de SPBRG não for inteiro, deve-se utilizar o valor inteiro mais próximo e logo vai haver uma diferença entre a taxa de transmissão desejada e a que realmente vai ser utilizada. Você pode calcular a taxa de transmissão real utilizando uma das duas primeiras fórmulas, e encontrando o erro da taxa de transmissão, e então verificar se o erro é aceitável para a sua aplicação. Vamos a um exemplo para deixar as coisas mais claras.

Versão 5.3 - Todos os Direitos reservados