Un bus de datos en diseño electrónico hace referencia a las líneas de conexión que comunican dos o más dispositivos electrónicos y como toda comunicación requiere de cuatro partes fundamentales
- Emisor: es quien emite el mensaje o el dato que se quiere transmitir
- Receptor: es quien recibe el mensaje
- Mensaje: es el dato que se envía y tanto el receptor como el emisor deben hablar el mismo “idioma” o “protocolo” para poder interpretarlo
- Canal (capa física): Es el medio por el cual se envía el mensaje, en electrónica tenemos muchos medios pero los mas comunes son las pistas que tiene un PCB o tarjeta electrónica y los cables de conexión que se usan para interconectar
En electrónica la comunicación es fundamental debido a que siempre tenemos que conectar cosas entre si, por ejemplo si tienes un microcontrolador y a este le vas a conectar una memoria adicional, esta conexión se hará por medio de un bus de datos, donde el emisor puede ser el microcontrolador, el receptor la memoria el protocolo SPI y el medio las pistas que los unen en una tarjeta electrónica,
Los buses de datos se pueden clasificar de múltiples formas dependiendo de su aplicación, en el caso de diseño electrónico la clasificación más común hace referencia al conexionado y con esta encontramos los buses:
- Seriales: En la comunicación serial los datos se envían usando un solo cable o línea de comunicación, en este tipo de datos normalmente si requieres enviar por ejemplo 8 bits ( 1 byte) tienes que enviar bit por bit es decir uno al tiempo
- Paralelos: En la comunicación en paralelo los datos se envían al mismo tiempo, pero para esto necesitas tantas lineas de datos como datos a enviar por ejemplo si envías 8bits (1 byte) requieres por lo menos 8 lineas de datos una por cada dato a enviar.
Características:
Bus de datos paralelo: Este bus es el más rápido y por ende el más utilizado en las arquitecturas internas de los microcontroladores, MPUs, microprocesadores, etc es decir todos estos integrados de control actualmente tienen buses de datos internos que comunican los diferentes sub sistemas, en procesadores es común tener hoy 64bits en bus de datos y en los microcontroladores con arquitectura ARM tenemos buses de datos internos de 32bits, sin embargo por fuera de los circuitos integrados este bus no es tan común, se usa para control de display, pantallas, adquirir datos RAW de sensores.
Las características más importantes de este bus son
- Cantidad de datos: Baja, se requiere una linea de conexión por cada dato esto limita la cantidad de datos máxima
- Velocidad de transmisión: Alta, puede transmitir múltiples datos al tiempo
- Distancia de transmisión: Baja, el dato al propagarse por un conductor eléctrico va perdiendo potencia
- Numero de receptores: Bajo, normalmente es uno a uno, sin embargo en ocasiones se maneja una señal de habilitador para conectar varios dispositivos, pero esto agrega una linea de control por cada dispositivo
- Sincronismo: Requiere una señal de sincronismo para saber en que momento leer el dato
Bus de datos serial: Este bus es el más utilizado en comunicación entre sistemas de control y periféricos, por ejemplo una microcontrolador Atmega328 y una Oled, por tanto en diseño electrónico es muy común encontrar buses de datos seriales, sin embargo estos por su naturaleza donde los datos viajan por una sola linea requieren “idiomas” específicos, es decir el emisor debe enviar los datos de una forma en la cual el receptor los pueda interpretar, a esto le llamamos protocolos de datos y en ellos encontramos las características para poder enviar o recibir datos. Entre los protocolos más usados tenemos
- UART (Universal Asynchronous Receiver-Transmitter) también llamado serial, es el bus más fácil de implementar tanto a nivel de hardware como de software, en su versión más básica usa 2 pines de conexión uno para envió de datos y uno para recepción, en este protocolo se requiere que la tierra sea igual tanto en el receptor como en el emisor
Características
-
- Cantidad de datos: Baja, este protocolo solo envía de 8 bits por vez
- Velocidad de transmisión: Media, puede transmitir hasta 1Mbps el tipo de comunicación puede ser half duplex o full duplex. debido a que tiene un canal de recepción de datos Rx y otro de transmisor de datos Tx separados
- Distancia de transmisión: Media, puede viajar unos metros antes de tener ruido por perdidas
- Numero de receptores: Bajo, normalmente es uno a uno, sin embargo existen arquitecturas donde se usa este protocolo modificando su capa física para conectar hasta 254 dispositivos
- Sincronismo: es un protocolo asincronico no tiene señal de reloj esto implica que el emisor y el receptor deben tener la misma velocidad de lectura entre las cuales la más común es 9600bps
Aplicaciones:
-
- Configuración: Se usa como interfase para comunicarse con otro dispositivo y seleccionar sus características o modo de operación
- Monitoreo: Como en el caso del monitor serial de arduino se usa para visualizar datos
- Comunicación con sensores: Sensores como GPS normalmente tiene los datos de salida por puerto serial esto debido a que envían varios datos como altitud, latitud, tiempo, etc y estos datos no se podrían enviar como un dato analógico o usando pines digitales en modo paralelo
- Comunicación con otro periféricos: Se usa para conectar 2 sistemas de control entre si, donde estos deban compartir datos, por ejemplo un conversor de serial a ethernet
- SPI (Serial Peripheral Interface): entre los protocolos seriales es el de más alta velocidad, su implementación en hardware no requiere acondicionamientos adicional, a nivel de software tiene mayor complejidad que el puerto serial, en su versión estándar usa 4 pines uno para enviar datos, otro para recibir, otro para reloj y finalmente uno para habilitar, con este ultimo se logra que SPI pueda manejar más de un dispositivo, esto lo logra habilitando el dispositivo a usar y des habilitando los otros habitualmente no se tienen más de 3 dispositivos conectados por el mismo SPI
Características
-
- Cantidad de datos: Alta, este protocolo esta diseñado para envió de trama de datos
- Velocidad de transmisión: Alta, puede transmitir hasta 60Mbps ademas el tipo de comunicación es full duplex es decir puede enviar y recibir datos al mismo tiempo ya que tiene un pin para enviar datos llamado MOSI (Master Output Slave Input) y un pin para recibir datos llamado MISO (Master Input Slave Output)
- Distancia de transmisión: Media, puede viajar unos 10 metros máximo
- Numero de receptores: Bajo, normalmente es uno a uno, pero puede usar un pin de habilitación llamado SS (slave select) donde normalmente se llega a manejar unos 3 dispositivos
- Sincronismo: es un protocolo sincrónico usa una pin de reloj llamado SCLK
Aplicaciones:
-
- Pantallas: Para controlar pantallas cuando no van por puertos dedicados, debido a que se tienen que enviar muchos datos por segundo el protocolo más usado para esto es SPI, como el caso de varias pantallas para Arduino, Raspberry, entre otros
- Cámaras: Sucede lo mismo que las pantallas las cámaras envían muchos datos pro segundo y si no se usa un puerto dedicado SPI es la mejor alternativa
- Comunicación con sensores: Sensores que tiene envió de datos de alta frecuencia como algunos IMU, radares lidar, entre otros
- Comunicación con memorias: Para almacenar datos en memorias SD u otro tipo de memorias externas el SPI es el protocolo más usado
- Comunicación Ethernet, WiFi: Para adicionar periféricos de comunicación que requieren gran cantidad de datos SPI es la mejor alternativa
- I2C (Inter-Integrated Circuit): De los 3 protocolos seriales más usados I2C es el único que esta diseñado para conectar multiples dispositivos al mismo bus de datos y esto hace que tenga mayor complejidad en hardware y en software, ademas solo requiere dos pines un pin de datos y un pin de reloj
-
- Cantidad de datos: Alta, este protocolo esta diseñado para envió de trama de datos
- Velocidad de transmisión: Media, puede transmitir hasta 3Mbps en hs-mode, sin embargo lo más común son velocidades bajas en modo estándar 100khz y en modo alta velocidad 400khz, esta comunicación es half duplex eso quiere decir que solo puede transmitir un dato a la vez ya sea de lectura o de escritura y esto por que solo tiene una linea para datos SDA (Serial Data)
- Distancia de transmisión: Media, puede viajar unos 8 metros máximo
- Numero de receptores: Alto, este protocolo esta diseñado para conectar varios dispositivos al mismo bus de datos a un máximo de 127 cuando se maneja direccionamiento de 7 bits
- Sincronismo: es un protocolo sincrónico usa una pin de reloj llamado SCL (Serial Clock)
-
- Comunicación con sensores: Es la aplicación más común sobre todo cuando se quiere hacer una red de sensores o cuando se tienen múltiples sensores, esto por que reduce el conexionado
- Comunicación con periféricos: Los periféricos que no necesitan altas frecuencia de refresco por ejemplo las LCD 2X16 se pueden conectar con conversores I2C
Por supuesto existen más protocolos seriales como MBus, 1 Wire, CAN entre otros pero no son tan usados como los que acabamos de ver, ademas existen por aplicación otros protocolos como los industriales, pero estos los veremos en otro Vlog, muchas gracias por leernos