Programación del microcontrolador: Comunicación serial síncrona y asíncrona
Introducción
¡Hola!
Qué gusto poder encontrarte en esta nueva sesión, espero que sigas descubriendo este curso de Microprocesadores y Microcontroladores, y lo sigas viendo fascinante. Por lo tanto, te doy la más cordial bienvenida a esta clase digital 6.
En esta clase terminamos con las prácticas 7 y 8. Ambas prácticas presentan la comunicación serial. La práctica 7 utiliza el módulo de comunicación serial asíncrona, esto es, sin una señal de reloj que sincronice el envío o recepción de datos (de ahí su nombre, asíncrona o, sin sincronía). Este tipo de comunicación es muy utilizada, tanto para transmitir datos por cable mediante señales eléctricas, como por medio de ondas electromagnéticas para comunicación inalámbrica o, incluso, mediante señales ópticas infrarrojas o láser.
El módulo de comunicación serial asíncrona del microcontrolador está basado en el estándar RS232 por lo que no trabaja a razones de transferencia muy altas, siendo la máxima 115200 baudios por segundo. Y, aunque en las computadoras actuales este estándar ha sido sustituido por el estándar USB, el estándar RS232 sigue teniendo muchas aplicaciones, como la transferencia de información entre un microcontrolador y un módulo Bluetooth.
El microcontrolador maneja dos protocolos para la comunicación serial síncrona, el protocolo I2C y el protocolo SPI. Estos protocolos tienen una gran cantidad de aplicaciones, pues siguen siendo utilizados para la transferencia de información dentro de aparatos electrónicos como las televisiones digitales y permiten la comunicación entre los microcontroladores y una gran cantidad de dispositivos electrónicos como brújulas de estado sólido, controladores de motores, pantallas LCD, transmisores de radiofrecuencia, controladores de LEDs, etc.
Sin más preámbulo, ¡comencemos!
¡Éxito!
Desarrollo del tema
El módulo de comunicación serial síncrona/asíncrona es una versión mejorada, de ahí su nombre: ENHANCED UNIVERSAL SYNCHRONOUS ASYNCHRONOUS RECEIVER TRANSMITTER (EUSART). Se puede configurar como sistema asíncrono “full-duplex” para comunicarse con dispositivos periféricos como módulos de radiofrecuencia, equipos con puerto RS232, BlueTooth, etc. También se puede configurar como sistema síncrono “half-duplex” para comunicarse con dispositivos periféricos como circuitos A/D y D/A, EEPROMs seriales, etc.
Los registros que utiliza son los siguientes:
- TXSTA1 – Configura el módulo y la transmisión.
- RCSTA1 – Configura el módulo y la recepción
- TXREG1 – Este registro guarda el byte a transmitir
- RCREG1 – Este registro guarda el byte que se recibe
- BAUDCON1 – Este registro configura el control de la razón de baudios.
- SPBRGH1 – Es el registro alto para la definición de la razón de baudios.
- SPBRG1 – Es el registro bajo para la definición de la razón de baudios
Se pueden generar interrupciones tanto para avisar cuando se termina de enviar un byte como para cuando llega un nuevo byte. Ambas interrupciones se pueden definir como de alta o baja prioridad (consulte los registros de interrupción INTCON, PIR1, PIE1, IPR1).
Para determinar el modo de operación y la razón de baudios se aplica la siguiente tabla, donde los modos de 8 y 16 bits se refieren al número de bits a utilizar para definir la razón de baudios:
Los bits SYNC y BRGH se encuentran dentro del registro TXSTA y el bit BRG16 en el registro BAUDCON.
Los valores de razón de baudios ya están definidos y son, en miles de baudios por segundo: 0.3, 1.2, 2.4, 9.6, 19.2, 57.6 y 115.2. En las tablas de la hoja de especificaciones se indica el valor con que se deben cargar los registros SPBRG y SPBRGH para generar una razón de baudios determinada. Este valor depende de la frecuencia de operación del microcontrolador. También se presenta el error entre la razón de baudios ideal y la real.
El módulo de comunicación serial síncrona es una interfaz serial. Es útil para comunicarse con otros microcontroladores así como dispositivos periféricos como circuitos A/D y D/A, EEPROMs seriales, etc.
Se puede configurar para trabajar en dos modos:
- Interfaz serial periférica (Serial Peripheral Interface, SPI).
- Circuito Inter-Integrado (Inter-Integrated Circuit, I2C).
Los registros que utiliza son los siguientes:
- SSPSTAT – Configura el módulo.
- SSPCON1 – Configura y controla el módulo.
- SSPCON2 – Configura y controla el módulo.
- SSPBUF – Buffer de recepción/Registro de transmisión.
Se pueden generar interrupciones tanto para avisar cuando se termina de enviar un byte como para cuando llega un nuevo byte.
Ambas interrupciones se pueden definir como de alta o baja prioridad (consulte los registros de interrupción INTCON, PIR1, PIE1, IPR1).
Hay dos modos de utilización: maestro y esclavo. El maestro es el que genera la señal de reloj y hay 4 opciones de configuración mediante los bits SSPM3:SSPM0 del registro SSPCON1:
- Fosc/64
- Fosc/16
- Fosc/4
- Salida del TMR2/2
De esta forma, si se utiliza una frecuencia de reloj de 4 MHz se tendría una razón de transferencia máxima de 1 Mbps.
Los pines que se utilizan para el modo SPI, que será el implementado en esta práctica son:
- SDI – Se pondrá a 1 el bit TRISB,0
- SDO – Se pondrá en 0 el bit TRISC,7
- SCK – (modo maestro) Se pondrá en 0 el bit TRISB,1
- SCK – (modo esclavo) Se pondrá en 1 el bit TRISB,1
- SS – (modo esclavo) Si se utiliza debe ponerse en 1 el bit TRISA,5
Conclusión
Al concluir la práctica 7 pudiste comprobar el envío de datos desde un microcontrolador hasta otro microcontrolador mediante un solo cable, aunque debes observar que ambos microcontroladores deben tener una tierra común para que los valores de voltaje que representan un 1 lógico (5V) y un 0 lógico (0V) puedan ser transmitidos. Esto implica que si se quieren enviar y recibir datos entre dos microcontroladores separados y que no compartan una misma fuente, entonces debe haber tres cables, el de transmisión, el de recepción y la tierra. También debes asegurarte que compartan el mismo nivel de tierra.
Con el desarrollo de la práctica 8 has observado que, además de los cables de datos (en el protocolo SPI hay un cable para transmisión y otro para recepción) y de tierra se tiene el cable de la señal de reloj que genera el microcontrolador configurado como maestro. En cualquier dispositivo que esté configurado para trabajar como esclavo hay una señal de entrada que debe activarse en bajo (poner a 0V o 0 lógico). Esto implica utilizar un pin del microcontrolador, configurado como salida digital, para cada dispositivo que esté conectado mediante este protocolo.
Te felicito por llegar hasta aquí con ese ímpetu tan incontrolable por saber cada día un poco más, continúa así y no dejes que ese ánimo decaiga. Revisa el material complementario y realiza las actividades correspondientes. Te encuentro próximamente.