Post on 13-Jun-2015
MICROCONTROLADORES
CLASE No 9
Objetivos
• Conocer el funcionamiento de los sistemas de comunicación seriales del microcontrolador PIC 16F877.
• Aprender los procesos de configuración y administración del puerto serial sincrónico.
• Aprender los procesos de configuración y administración del USART.
Preguntas generadoras
• ¿cómo se desarrollan los procesos de comunicación seriales en el Mcu PIC 16F877?
• ¿cuáles son las características mas importantes de los sistemas SSP y USART?
• ¿cómo se configuran y administran estos sistemas?
Interfaz Serial Sincrónica Maestra MSSP
Sistema sincrónico
Características generales
Transferencia sincrónica de tres hilos Full duplex anillo.Configurable como maestro o esclavo.Operación en dos modos.
Interfaz serial periférica (SPI)Circuito Inter-integrado (I2C)
Formato de la secuencia de comunicación programable.Posibilidad de solicitud de interrupciones.Detección de errores de comunicación por colisión.
Modo de operación SPI
Este modo posibilita la comunicación sincrónica de datos de 8 bits, utilizando dos registros de cambio que en conjunto transmisor-receptor forman un registro de anillo que posibilita la comunicación sobre 4 líneas físicas, gobernadas por la sincronía de una señal de reloj.
Entrada
Salida
Habilitar
Reloj
* TRIS
* Modulo
DirecciónPrimariaDe datos
Registros de administración en modo SPI
• Registro de datos Donde se envían o reciben los datos (SSPBUF : 0x13 banco 0)
• Registro de estado Permite conocer el estado de la comunicación
del subsistema. (SSPSTAT : 0x14 banco 1)
• Registro de configuración Permite configurar el subsistema (SSPCON : 0x14 banco 0)
• Registros TRIS
Registro SSPSTAT
Registro SSPCON
Modo de operación I2C
• Este modo permite comunicar múltiples dispositivos en un único bus utilizando el protocolo de Circuito inter-integrado, que fue desarrollado por Philips Inc. Para la transferencia de datos entre circuitos integrados, la cual se lleva a cabo sobre dos líneas físicas una para la sincronía (SCL) y la otra para los datos (SDA).
• El sistema I2C permite soportar un maestro y múltiples esclavos o bien muchos maestros, los cuales tienen la responsabilidad de controlar la señal de sincronía.
Secuencia de operación I2C
• Transmisor Maestro 1) Configurar parámetros 2) Iniciar secuencia de comunicación
(Start) y verificar su inicio 3) Enviar dirección del esclavo y
verificar su recepción (Read/Write) 4) Enviar dato/datos al esclavo y
verificar su recepción (Read/Write) 5) Terminar secuencia de
comunicación (Stop) y verificar su finalizacion
Secuencia de operación I2C
• Receptor Maestro 1) Configurar parámetros 2) Iniciar secuencia de comunicación (Start)
y verificar su inicio 3) Enviar dirección del esclavo y verificar su
recepción (Read/Write) 4) Activar la recepción y esperar por un
dato recibido (RCEN) 5) Confirmar o no el dato recibido
(NACK/ACK) y verificar su envio 6) Terminar secuencia de comunicación
(Stop) y verificar su finalizacion 7) Leer el dato e iniciar una nueva
secuencia si se requiere
Secuencia de operación I2C
• Receptor Esclavo 1) Configurar parámetros 2) Esperar inicio secuencia de comunicación
(Start) 3) Recibir dirección, si coincide con la
configurada continuar la secuencia de lo contrario ignorarla
4) Esperar bandera de recepción de datos 5) Leer el dato recibido y limpiar la bandera
de recepción, y esperar por nuevo dato. 6) Esperar por terminación secuencia de
comunicación (Stop)
Secuencia de operación I2C
• Transmisor Esclavo 1) Configurar parámetros 2) Esperar inicio secuencia de comunicación
(Start) 3) Recibir dirección, si coincide con la
configurada continuar la secuencia de lo contrario ignorarla
4) Retener la señal de reloj para cargar el dato a transmitir (CKP)
5) Cargar el dato a transmitir y liberar la señal de reloj. (repetir la secuencia para cada dato a transmitir)
6) Esperar por terminación secuencia de comunicación (Stop)
Registros de administración en modo I2C
Registro de datos Donde se envían o reciben los datos (SSPBUF : 0x13 banco 0)
Registro de estado Permite conocer el estado de la comunicación del
subsistema. (SSPSTAT : 0x14 banco 1)
Registros de configuración Permite configurar el subsistema (SSPCON : 0x14 banco 0) (SSPCON2 : 0x11 banco 1)
Registro de dirección y baud rate (maestro) (SSPADD)
Controlan la velocidad del subsistema y el ID del mismo
Registro SSPSTAT
Registro SSPCON
Registros SSPCON2
Formas de onda del modo esclavo
Formas de onda del modo Maestro
Transmisor/receptor universal sincrónico y asincrónicoUSART
Características generales
Formato de comunicación NRZ compatible con el estándar RS232.
Métodos de detección de error.
Operación en Full duplex en modo asincrónico (SCI)
Operación en Half duplex en modo sincrónico
Velocidad de comunicación programable
Longitud de la trama variable
Posibilidad de disparar solicitud de interrupción
Transmisión en modo asincrónico
Configurar la velocidad (SPBGR).Habilitar el modo asincrónico y el subsistema USART.Configurar la longitud de tramaHabilitar el transmisorSi utiliza tramas largas poner el noveno bit en el bit TX9D.Cargar el dato en el registro TXREG para iniciar la transmisión.
Diagrama del transmisor SCI
Recepción en modo asincrónico
• Configurar la velocidad (SPBGR).• Habilitar el modo asincrónico y el subsistema USART.• Configurar la longitud de trama• Habilitar el receptor• Esperar el indicador de trama recibida.• Leer el noveno bit si se configuro trama larga• Leer el dato recibido en RCREG para iniciar la
transmisión.• Verificar errores en la comunicación y hacer los ajustes
necesarios
Diagrama del receptor SCI
Modo sincrónico
• El modo sincrónico funciona en halfduplex lo que implica que únicamente necesita de dos líneas una para la señal de reloj y la otra para los datos, los cuales no pueden enviarse y recibirse al mismo tiempo, con lo que el subsistema puede tener 4 posibles estados. TXMaster, RXMaster, TXSlave y RXSlave
Transmisor maestro
• Configurar la velocidad• Configurar el modo sincrónico maestro.• Configurar la longitud de trama• Habilitar la transmisión.• Escribir el noveno bit si se enviara una
trama larga.• Iniciar la transmisión escribiendo en el
registro TXREG.• Esperar que la transmisión de complete
para enviar un nuevo dato
Receptor maestro
• Configurar la velocidad• Configurar el modo sincrónico maestro.• Configurar la longitud de trama• Configurar la admisión de un noveno bit en caso de
recibir tramas largas. • Habilitar la recepción.• Esperar la bandera de recepción completa.• Leer el noveno bit si se uso trama largas• Leer el registro de recepción RCREG.• Verificar que no se desarrollo ningún error durante
la recepción.• Esperar la siguiente trama
Transmisor esclavo
• Configurar el modo sincrónico esclavo.• Configurar la longitud de trama• Habilitar la transmisión.• Escribir el noveno bit si se enviara una
trama larga.• Iniciar la transmisión escribiendo en el
registro TXREG.• Esperar que la transmisión de complete
para enviar un nuevo dato
Receptor esclavo
• Configurar el modo sincrónico esclavo.• Configurar la longitud de trama• Configurar la admisión de un noveno bit en caso
de recibir tramas largas. • Habilitar la recepción.• Esperar la bandera de recepción completa.• Leer el noveno bit si se uso trama largas• Leer el registro de recepción RCREG.• Verificar que no se desarrollo ningún error
durante la recepción.• Esperar la siguiente trama
Registros para administrar el USART
Registro de datos Donde se envían o reciben los datos (TXREG : 0x19 banco 0), (RCREG : 0x1A banco 0)
Registro de estado y control Permite configurar y administrar el estado de la
comunicación del subsistema . (TXSTAT : 0x18 banco 1), (RCSTAT : 0x18 banco 0)
Registro de Baud Rate Permite configurar la velocidad del subsistema . (SPBRG : 0x19 banco 1).
Registros de estado y control
Registros de estado y control
Lecturas recomendadas
• Capítulos 17 y 18 del manual de referencia del PIC16F877
• Capítulos 9 y 10 del manual técnico del PIC16F877