Você está na página 1de 27

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ

DEPARTAMENTO ACADÊMICO DE ELETROTÉCNICA


CURSO DE ENGENHARIA INDUSTRIAL ELÉTRICA

Módulo de comunicação serial

Prof. Amauri Assef - amauriassef@utfpr.edu.br


paginapessoal.utfpr.edu.br/amauriassef

UTFPR – Campus Curitiba


1
Prof. Amauri Assef
Sistemas Embarcados
 Visão global do módulo de comunicação serial
 As interfaces de comunicação permitem a transferência de dados
entre sistemas de diferentes arquiteturas
 O módulo UART (Universal Asynchronous Receiver/Transmitter ) é um
dos muitos módulos de interfaces disponíveis no Kinetis K60
 O UART suporta os padrões RS-232 e RS-485 que podem ser
configurados para comunicação com um terminal (PC)

 Objetivos da aprendizagem
 Este módulo irá auxiliar na aprendizagem do módulo UART do K60 com
um terminal em um PC

UTFPR – Campus Curitiba


2
Prof. Amauri Assef
Sistemas Embarcados
 Pré-requisitos
 Para utilizar o módulo UART é necessário:
 Compreender e saber como configurar o Módulo Gerador de
Relógio Multiuso (MCG – Multipurpose Clock Generator)
 PC com uma porta serial de 9 pinos

 Mais recursos e informações


 K60 Sub-Family Reference Manual for 100MHz devices in 144 pin
packages
 TWR-K60N512-SCH_D: TWR-K60N512 Schematics (rev D)
 TWR-SER_SCH: Serial Module Schematics

UTFPR – Campus Curitiba


3
Prof. Amauri Assef
Sistemas Embarcados
 Comunicação entre dispositivos
 As comunicações entre os dispositivos podem ser realizadas por meio
de dois tipos de interfaces:
 Interfaces seriais: os dados são serializados para que possam ser enviados
por um único fio. Isto reduz o número de conexões utilizadas, mas
também significa que menos bits são enviados ao mesmo tempo
 Interfaces paralelas: usam múltiplas conexões paralelas e pode transmitir
múltiplos bits ao mesmo tempo. Para as interfaces paralelas não é preciso
serializar e desserializar os dados.
 A comunicações serial requer um mínimo de apenas dois ou três fios de
acordo com o padrão
 O padrão RS-232 é capaz de operar em modo full-duplex ao usar três fios: Tx
(transmissão), Rx (recepção) e referência (GND)
 O padrão RS-485 opera usando sinalização diferencial através de dois fios +
referência (até 1200 m), possibilitando múltiplos transceivers

UTFPR – Campus Curitiba


4
Prof. Amauri Assef
Sistemas Embarcados
 Esses padrões diferem em seus níveis de tensão, mas utilizam os mesmos
formatos de dados e velocidades de transmissão (bps – bits/segundo)
 RS-232 – ponto a ponto
 RS-485 – multiponto

UTFPR – Campus Curitiba


5
Prof. Amauri Assef
Sistemas Embarcados
 Padrão RS-232
 A interface serial ou porta serial, também conhecida como RS-232, é
uma porta de comunicação comumente usada em PCs para conectar
modems, impressoras, scanners e outros equipamentos de hardware

 RS-232 (EIA RS-232C ou V.24) é um padrão para troca serial de dados


binários entre um DTE (Data Terminal Equipment) e um DCE (Data
Communication Equipment)

 Os dados são enviados através da porta serial em quadros (frames).


Cada quadro começa com um bit de início, 7, 8 ou 9 bits de dados, um
bit de paridade opcional, e um ou mais bits de parada

UTFPR – Campus Curitiba


6
Prof. Amauri Assef
Sistemas Embarcados
 Exemplo de quadro 8N1 (8 de dados, sem paridade, 1 bit de parada)

Exemplo de
comunicação
com 8 bits
(mesmo para
RS-232 ou
RS-485)

UTFPR – Campus Curitiba


7
Prof. Amauri Assef
Sistemas Embarcados
 A IBM ao utilizar o padrão para o seu projeto do IBM-PC, definiu que
apenas 9 pinos seriam necessários

UTFPR – Campus Curitiba


8
Prof. Amauri Assef
Sistemas Embarcados
 BAUD RATE - Taxa de transmissão
 Para dois dispositivos se comuniquem com êxito, devem ser
configurados com a mesma taxa de transmissão
 Taxas de transmissão padrão suportados pela maioria das portas seriais
são 110, 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800,
38400, 56000, 57600 e 115200 bps
 O K60 usa um contador de módulo de 13 bits e um contador de 5 bits
fracionário de ajuste fino para gerar a taxa de transmissão calculada
pelas equações:
UARTmod ule _ clock BRFA4 : 0 
UARTbaud _ rate  BRFD 
16  SBR12 : 0   BRFD  32

 Onde SBR[12:0] é o divisor de clock de 13-bit e BRFA é o ajuste fino.

UTFPR – Campus Curitiba


9
Prof. Amauri Assef
Sistemas Embarcados
 Dados do
manual do
K60

 6 UARTs
 UART0 a UART5

UTFPR – Campus Curitiba


10
Prof. Amauri Assef
Sistemas Embarcados
 Dados do manual do K60 (capítulo 5)

UTFPR – Campus Curitiba


11
Prof. Amauri Assef
Sistemas Embarcados
 Conexão da UART do TWR-K60 com o TWR-SER
Conexão com
o K60
(TWR_K60)

Conexão das
UARTS 3 e 4
no conector
primário (J7A)

Conexão da
UART3 no
conector J1 da
placa TWR_SER

UTFPR – Campus Curitiba


12
Prof. Amauri Assef
Sistemas Embarcados

UTFPR – Campus Curitiba


13
Prof. Amauri Assef
Sistemas Embarcados
 Jumpers de configuração do RS-232 no TWR_SER

UTFPR – Campus Curitiba


14
Prof. Amauri Assef
Sistemas Embarcados
 Registradores do módulo UART
 O módulo UART oferece muitos recursos que são suportados através de
um número de registros no K60. Muitos desses registros podem ser
ignorados para comunicação serial básicas
 Há cinco registros de controle (UARTx_Cn) utilizados para configurar o
K60 UART
 Os Registros de Controle 1 e 2 (UARTx_C1 e UARTx_C2) contêm os
campos para definir as configurações de quadros e habilitação
 Os Registros de Controle 3, 4 e 5 (UARTx_C3, UARTx_C4 e UARTx_C5)
contêm campos para as opções de interrupção extras e outras
características do UART

 Onde x=0..5 (6 canais)

UTFPR – Campus Curitiba


15
Prof. Amauri Assef
Sistemas Embarcados
 Registrador UARTx_C1

 Registrador UARTx_C2

 A taxa de transmissão do UART é configurado usando três registros:


UARTx_BDH, UARTx_BDL e UARTx_C4
 BDH e BDL são usados ​para configurar o campo SBR 13-bit, e C4 é usado
para configurar a taxa de transmissão ajuste fino

UTFPR – Campus Curitiba


16
Prof. Amauri Assef
Sistemas Embarcados
 Registrador UARTx_BDH

 Registrador UARTx_BDL

 Registrador UARTx_C4

UTFPR – Campus Curitiba


17
Prof. Amauri Assef
Sistemas Embarcados
 Todas as interfaces de comunicação têm registros de dados para ler e
escrever a partir da interface
 Interfaces seriais costumam usar um estruturas de buffer FIFO (First-In
First-Out) para permitir que os dados continuem fluindo entre frames
 A leitura do registro de dados irá automaticamente retornar o primeiro
valor a partir do buffer de recepção (RX)
 Escrevendo para o registro de dados irá carregar o valor no buffer de
transmissão (TX) e enviado logo que possível
 O registro de dados para o UART é UARTx_D

UTFPR – Campus Curitiba


18
Prof. Amauri Assef
Sistemas Embarcados
 Há dois registros de status no UART
UARTx_S1 contém os flags que são necessários para a comunicação
serial básica

UARTx_S2 contém outros flags e recursos que podem ser ignorados


para este laboratório

UTFPR – Campus Curitiba


19
Prof. Amauri Assef
Sistemas Embarcados
Exemplo:
1) Considerando a velocidade de clock de 50 MHz e que a baud rate é 115200,
quais registers devem ser atualizados e com quais valores para a taxa desejada?
UARTmod ule _ clock BRFA4 : 0 
UARTbaud _ rate  BRFD 
16  SBR12 : 0   BRFD  32

a) Considerar BRFD igual a 0 e calcular SBR:

50 M
115200   SBR  27 ,12  27
16  SBR  0 
b) Calcular BRFD e BRFA para o valor de SBR arredondado para baixo :

50 M BRFA4 : 0  UARTx_BDH = 0;
115200  BRFD 
16  27  BRFD  32 UARTx_BDL = 27;
BRFD  0 ,126736 BRFA  0 ,126736 * 32  4 UARTx_C4 = 4;

UTFPR – Campus Curitiba


20
Prof. Amauri Assef
Sistemas Embarcados
 Passos para configuração do UART
1) Antes de usar a UART para comunicação serial , o UART deve estar
devidamente configurado. O primeiro passo é configurar a taxa de
transmissão. Calcular os valores necessários para atualização dos
registros BDH em primeiro lugar, seguido pelo BDL. Atualizar o
UARTx_C4 com o BRFA calculado. O próximo passo é configurar as
opções de quadro do UART no UARTx_C1 . Por último, permitir a
recepção e transmissão no registro UARTx_C2
2) Para enviar dados através da porta serial , o flag S1[TDRE] deve ser
verificado primeiro para garantir que o buffer de transmissão está
vazio. Se não está vazio, esperar até que ele esteja vazio ( polling ) ,
verificando o flag antes de escrever para UARTx_D . Uma vez vazio,
escrevendo para UARTx_D começará a transmissão de dados e
automaticamente limpará o flag S1[TDRE]. Uma vez que o registro de
dados está vazio, o flag S1[TDRE] será setado

UTFPR – Campus Curitiba


21
Prof. Amauri Assef
Sistemas Embarcados
3) Para receber dados da porta serial, verificar primeiro o flag S1[RDRF]
para ver se há dado esperando para ser lido. Se os dados estão
disponíveis, a partir de uma leitura UARTx_D após a verificação do flag
este será zerado.

Exemplo:
Escrever uma biblioteca simples para a porta serial (polling) que permita
enviar uma string a um terminal. O PuTTY é um aplicativo gratuito que
pode ser usado como um terminal.

UTFPR – Campus Curitiba


22
Prof. Amauri Assef
Sistemas Embarcados
 Código final

#include "derivative.h" /* include peripheral declarations */


#include "mcg.h"
#include "io.h"
#include "uart.h“

int main(void)
{
unsigned int counter = 0;

// Configura o MCG para rodar no modo BLPE(50 MHz)


MCG_FEI_BLPE();

// Habilita os clocks dos PORTs A e E


SIM_SCGC5 = SIM_SCGC5_PORTA_MASK | SIM_SCGC5_PORTE_MASK;

// Configura os pinos TX e RX do UART3 (placa TWR_SER)


SIM_SCGC5 |= SIM_SCGC5_PORTC_MASK;
PORTC_PCR16 = PORT_PCR_MUX(0x03);
PORTC_PCR17 = PORT_PCR_MUX(0x03);

UTFPR – Campus Curitiba


23
Prof. Amauri Assef
Sistemas Embarcados
//Configura MUX para função GPIO
PORTA_PCR11 = 0x00000100;// LED LARANJA
PORTA_PCR28 = 0x00000100;// LED AMARELO
PORTA_PCR29 = 0x00000100;// LED VERDE
PORTA_PCR10 = 0x00000100;// LED AZUL
PORTA_PCR19 = PORT_PCR_MUX(0x01) | PORT_PCR_PE_MASK | PORT_PCR_PS_MASK; ;// CHAVE 1 - habilita o pull-up
PORTA_PCR26 = PORT_PCR_MUX(0x01) | PORT_PCR_PE_MASK | PORT_PCR_PS_MASK; ;// CHAVE 2 - habilita o pull-up

//Configura direção dos pinos


GPIOA_PDDR = (1 << 11) | (1 << 28) | (1 << 29) | (1 << 10);// pinos PTA10, PTA11, PTA28, PTA29 - saída
GPIOA_PDDR &= ~(1 << 19);// pino PTA19 configurado como entrada
GPIOE_PDDR &= ~(1 << 26);// pino PTE26 configurado como entrada
GPIOA_PSOR = (1 << 11) | (1 << 28) | (1 << 29) | (1 << 10);// desliga LEDs

printf("Hello (Kinetis) World in 'C' from MK60N512VMD100 derivative! \n\r");

for(;;) {
while(char_present() == 0); // espera receber um dado válido
printf("Tecla pressionada '%c'\n\r", in_char()); // envia tecla pressionada
}
return 0;
}

UTFPR – Campus Curitiba


24
Prof. Amauri Assef
Sistemas Embarcados

 Observação

Instalar driver da empresa COMTAC ou


compatível!

UTFPR – Campus Curitiba


25
Prof. Amauri Assef
Sistemas Embarcados
 Placa TWR-K60D100M – Conector E/S e pinagem

UTFPR – Campus Curitiba


26
Prof. Amauri Assef
Sistemas Embarcados
 Referências:
1) www.freescale.com/TWR-K60N512
2) www.freescale.com/kinetis
3) TWR-K60N512-QSG: Quick Start Guide
4) TWR-K60N512-SCH: Schematics
5) TWR-K60N512-PWA: Design Package
6) TWRPI-SLCD-SCH: Schematics
7) TWRPI-SLCD-PWA: Design Package
8) K60 Family Product Brief
9) K60 Family Reference Manual
10) Kinetis Quick Reference User Guide (QRUG)
11) Tower Configuration Tool

 Agradecimento:
 Freescale Semiconductor, Inc
 Sra. Damaris Ochoa, Coordenadora do Programa Universitário da Freescale na América
Latina

UTFPR – Campus Curitiba


27
Prof. Amauri Assef