2. 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.
3. 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?
5. 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.
6. 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.
7. Dirección
Entrada Primaria
De datos
Salida
* TRIS
* Modulo
Habilitar
Reloj
8. 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
11. 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.
12. 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
13. 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
14. 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)
15. 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)
16.
17. 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
24. 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
25. Transmisió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 transmisor
Si utiliza tramas largas poner el noveno bit
en el bit TX9D.
Cargar el dato en el registro TXREG para
iniciar la transmisión.
27. 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
29. 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
30. 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
31. 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
32. 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
33. 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
34. 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).