Actualizado el 21 de Marzo del 2018 (Publicado el 9 de Noviembre del 2017)
791 visualizaciones desde el 9 de Noviembre del 2017
2,5 MB
28 paginas
Creado hace 15a (15/07/2009)
INTERFACE DE
COMUNICACION
SERIE
(SCI)
Módulo Serial
Asincrónico
Curso de Microcontroladores
Familia HC908 Flash de Freescale
Parte II
ING. DANIEL DI LELLA
Serial Communication Interface Module
Clock
Generation
Module
(CGM)
Serial
Communications
Interface
(SCI)
System
Integration
Module
(SIM)
LVI
IRQ
COP
BREAK
68HC08
CPU
RESET
Timer
Interface
Module
(TIM)
Direct
Memory
Access
Module
(DMA)
Internal Bus (IBUS)
Serial
Peripheral
Interface
(SPI)
Random
Access
Memory
(RAM)
Electronically
Programmable
ROM
Monitor
ROM
SCI o
UART
Full duplex, Alta Velocidad, asincrónico programable
•
8 o 9 bit largo de caracter.
•
•
•
•
Dos métodos de “ receiver wakeup”.
Pedidos de Interrupción separados para Rx y Tx .
Habilitación separada del Transmisor y el Receptor.
Polaridad programable de la salida del Transmisor.
Curso de Microcontroladores
Familia HC908 Flash de Freescale
•Operación dirigida por INT’S con ocho Flags de interr.:
•Transmitter Empty
•Transmission Complete
•Receiver Full
•Idle Receiver Input
•Receiver Overrun
•Noise Error
•Framing Error
•Parity Error
•Modo de operación “Low power”
•Framing Error Detection en el receptor
•Checkeo de Paridad por Hardware
Parte II
ING. DANIEL DI LELLA
Sistema Doble “Buffer”
TRANSMISOR:
DATA IN
RECEPTOR:
T8
TDR BUFFER
DATA
IN
SHIFT REGISTER
SHIFT REGISTER
DATA
OUT
R8
RDR BUFFER
•
SCTE Flag se setea cada vez
que un nuevo dato es transferido
desde el TDR Buffer al
transmit serial shift register.
DATA OUT
•
SCRF Flag se setea cada vez
que un nuevo dato es transferido
desde el serial shift register al
RDR Buffer.
SCDR : Un SOLO
registro que…..
Al “escribir” el SCDR – Se escribe el TDRx Buffer
Al “leer” el SCDR --- Se lee el RDRx Buffer
Curso de Microcontroladores
Familia HC908 Flash de Freescale
Parte II
ING. DANIEL DI LELLA
Lo básico en comunicaciones seriales...
Formato de Datos SCI
Formato de datos 8 - Bits
(10 bit largo total)
START
BIT
BIT 0
BIT 1
BIT 2
BIT 3
BIT 4
BIT 5
BIT 6
BIT 7
NEXT
START
BIT
STOP
BIT
Stop Bit o Parity Bit Extra
Formato de Datos 9 - Bit
(11 bit largo total)
BIT 0
BIT 1
BIT 2
BIT 3
BIT 4
BIT 5
BIT 6
BIT 7
BIT 8
START
BIT
NEXT
START
BIT
STOP
BIT
Stop Bit o Parity Bit Extra
Curso de Microcontroladores
Familia HC908 Flash de Freescale
Parte II
ING. DANIEL DI LELLA
Lo básico en comunicaciones seriales...
Caracteres de Datos Especiales:
Break - No tiene Start o Stop bits, existe como un “cero” lógico por un tiempo de 10
ó 11 bit (Formato de Datos de 8 o 9 bits respectivamente)
Idle - No tiene Start o Stop bits, existe como un “uno” lógico por un tiempo de 10
ó 11 bit (Formato de Datos de 8 o 9 bits respectivamente)
Preambulo - Un carácter “idle” de sincronismo
Curso de Microcontroladores
Familia HC908 Flash de Freescale
Parte II
ING. DANIEL DI LELLA
Registros I/O del SCI
Siete registros I/O controlan y monitorean la operación del SCI
• SCI Control Register 1 (SCC1)
• SCI Control Register 2 (SCC2)
• SCI Control Register 3 (SCC3)
• SCI Status Register 1 (SCS1)
• SCI Status Register 2 (SCS2)
• SCI Data Register (SCDR)
• SCI Baud Rate Register (SCBR)
El módulo de SCI de la flia. HC908, es una versión mejorada de los módulos de SCI de la flia.
HC705. Las mejoras introducidas van desde un mejor manejo automático de la recepción de
información serial con paridad (implementada por hardware interno) , mayor velocidad de TX / RX
por medio de dos alternativas de Clocks de sincronismo (Fbus y External Clock) , hasta un mejor
manejo de comunicaciones serial del tipo “Network” o Red con múltiples nodos.
Curso de Microcontroladores
Familia HC908 Flash de Freescale
Parte II
ING. DANIEL DI LELLA
Selección del Baud Rate
SCBR
READ:
WRITE:
RESET:
0
0
SCI Baud Rate Register
SCP1
0
SCR2
0
0
SCP0
0
SCR1 SCR0
0
0
• Selecciona el baud rate para el transmisor del SCI
• SCI baud rate prescaler bits (SCP1,SCP0)
– Divide la frecuencia de referencia de clock (FBus o CGMXCLK) por un
multiplo de 64
1, 3, 4, or 13
• SCI baud rate select bits (SCR2 - SCR0)
– Selecciona el baud rate de transmisión desde el “prescaler output”
– Divide la frecuencia de la salida del prescaler
1, 2, 4, 8, 16, 32, 64, o 128
Curso de Microcontroladores
Familia HC908 Flash de Freescale
Parte II
ING. DANIEL DI LELLA
Ejemplo de selección del Baud Rate :
Tabla Prescaler
(Frequencia del BUS = 4.9152 MHz)
(Como ejemplo)
SCP1
SCP0
0
0
1
1
0
1
0
1
Divisor
1
3
4
13
Máximo Baud Rate
76.80K Baud
25.833K Baud
19.20K Baud
5.908K Baud
Frequencia del Bus = 4.9152 Mhz
Máximo Baud Rate
(desde tabla prescaler )
SCR2
SCR1
SCR0
0
0
1
1
0
0
1
1
0
0
1
0
0
0
1
0
0
1
1
1
0
1
1
1
Curso de Microcontroladores
Familia HC908 Flash de Freescale
Divisor
1
2
4
8
16
32
64
128
76.80K Baud
76.80K Baud
38.40K Baud
19.20K Baud
9600 Baud
4800 Baud
2400 Baud
1200 Baud
600 Baud
19.20K Baud
19.20K Baud
9600 Baud
4800 Baud
2400 Baud
1200 Baud
600 Baud
300 Baud
150 Baud
Parte II
ING. DANIEL DI LELLA
SCC1
WRITE:
RESET:
• SCI Enable (ENSCI)
0
0
0
0
– Habilita al SCI y al SCI baud rate generator
– Permite al SCI ser deshab. para lower power
1 = SCI habilitado
0 = SCI deshabilitado
• Character Length Select (M)
1 = 9-bit SCI characters
0 = 8-bit SCI characters
SCC2
READ:
WRITE:
0
0
0
• Parity Enable (PEN)
0
1 = habilitado
0 = Deshabilitado
• Parity Type (PTY)
1 = Odd Parity
0 = Even Parity
Interrupciones & configuración del Tx del SCI
READ:
LOOPS ENSCI TXINV M WAKE ILTY PEN PTY
SCTIE TCIE SCRIE ILIE TE RE RWU SBK
RESET:
0
0
0
0
0
• SCI Transmit Interrupt Enable (SCTIE)
– Interrupción cuando Tx Data Register pasa a vacio
– El prox. byte puede ser cargado en el tx data register
1 = Habilita interrupción
0 = Deshabilita interrupción
•
Transmission Complete Interrupt Enable (TCIE)
– Interrupción cuando Tx está Completa
– Un byte há sido enviado
1 = Habilita interrupción
0 = Deshabilita interrupción
Curso de Microcontroladores
Familia HC908 Flash de Freescale
0
0
Transmitter Enable (TE)
0
•
– Habilita la operación de TX
– Envia “preambulo”
1 = Habilita el transmisor
0 = Deshabilita el transmisor
Parte II
ING. DANIEL DI LELLA
Selección del largo de caracter
M
0
1
0
0
1
1
PEN
PTY
Character Length
0
0
1
1
1
1
x
x
0
1
0
1
1 start + 8 (7) data + 1 (2) stop
1 start + 9 (8) data + 1 (2) stop
1 start + 7 data + Even +1 stop
1 start + 7 data + Odd +1 stop
1 start + 8 data + Even +1 stop
1 start + 8 data + Odd +1 stop
Con estos 3 bits (M,PEN, PTY), en el módulo de SCI, se puede setear el “largo” del caracter, si
lleva paridad o no y de que tipo, y si se utiliza 1 o 2 bits de stop.
Se debe destacar que, en los módulos de SCI de los MCUs HC908, cuando se trabaja con
paridad (par ó impar), la misma es generada (en la TX) y decodificada (en la RX) en forma
automática por el mismo. No ocurre ello en los módulos de SCI de la flia. HC705, ya que si bién
en la transmisión la paridad es generada en forma automática, en la recepción hay que
implementar algorítmos, por soft, de decodificación de la paridad.
Curso de Microcontroladores
Familia HC908 Flash de Freescale
Parte II
ING. DANIEL DI LELLA
Diagrama de Flujo de la Inicialización
Configurar M, PEN, y PTY
Basado en la FBUS o Fxtal
Según lo elegido en el registro
Calcular el Baud Rate
CONFIG2 (SCIBDSRC)
Habilitar SCI
(Bits TE,RE, SCTIE,
SCRIE y ENSCI)
Curso de Microcontroladores
Familia HC908 Flash de Freescale
Parte II
ING. DANIEL DI LELLA
Flags de estado del Transmisor
READ: SCTE TC SCRF IDLE OR NF FE PE
SCS1
WRITE:
0
0
0
0
0
0
1
1
SCI Status Register 1 (SCS1)
RESET:
• SCI Transmitter Empty (SCTE)
– Indica que el contenido del SCI Data Register há sido movido al Tx serial shift register
– Limpiado por la lectura del SCS1 luego de escrito el SCDR
1 = Data register vacio
0 = Data register no vacio
• Transmission Complete (TC)
– Indica que el SCDR está vacio y no hay transmisión en progreso
– Limpiado por la lectura del SCS1 y luego la escritura del SCDR
1 = No hay transmisión en progreso
0 = Transmisión en progreso
SCDR
READ:
R7
WRITE: T7
SCI Data Register
R6
T6
T4
R5
T5
R4 R3 R2 R1 R0
T3 T2 T1 T0
RESET:
UNAFFECTED BY RESET
SCI Data Register (SCDR)
• Buffers de datos para el TX/RX shift registers
• Escribiendo en el SCDR se escribe datos a ser transmitidos
– Inicia la operación de transmisión.
Curso de Microcontroladores
Familia HC908 Flash de Freescale
Parte II
ING. DANIEL DI LELLA
Diagrama de Flujo de Transmisión
Habilitar el Transmisor
Cargar el Byte a trans.
Más
Datos?
Si
NO
TX
Completa?
Si
SCTE?
NO
Deshabilitar Transmisor
Curso de Microcontroladores
Familia HC908 Flash de Freescale
Parte II
ING. DANIEL DI LELLA
Interrupciones & estados del RX del SCI
SCC2
READ:
WRITE:
SCTIE TCIE SCRIE ILIE TE RE RWU SBK
RESET:
0
0
0
0
0
0
0
0
SCI Control Register 2 (SCC2)
SCI Receive Interrupt enable (SCRIE)
– Interrupción cuando se completa el Receive
Data Register
– Se ha recibido un byte transmitido
1 = Habilita la interrupción
0 = Deshabilita la interrupción
• Receiver Enable (RE)
– Habilita la operación del receptor
1 = Habilita el receptor
0 = Deshabilita el receptor
SCS1
READ:
WRITE:
SCTE
TC
SCRF
IDLE
OR
NF
FE
PE
RESET:
1
1
0
0
0
Comentarios de: HC908 FLASH, SERIAL COMMUNICATION INTERFACE (SCI) (0)
No hay comentarios