Todo lo que necesita saber sobre los interfaces serie


 

Interfaces en paralelo transfieren múltiples bits al mismo tiempo. Por lo general requieren buses de datos – la transmisión a través de ocho, dieciséis o más cables. Los datos se transfieren en grandes, rompiendo las olas de 1 y 0 de.

Generalización Paralelo

Un bus de datos de 8 bits, controlado por un reloj, la transmisión de un byte de cada pulso de reloj. Se utilizan 9 cables.

Interfaces serie de flujo de sus datos, un solo bit a la vez. Estas interfaces pueden operar con tan solo un sólo  hilo, por lo general nunca más de cuatro.

Generalización de serie

Ejemplo de una interfaz serie, la transmisión de un bit cada pulso de reloj. !Sólo son requeridos  2 cables !

Piense en las dos interfaces como una corriente de coches: una interfaz paralela sería la 8+ carril mega-autopista, mientras que una interfaz en serie es más como una de dos carriles la carretera rural del país. Durante un periodo de tiempo, la red de carreteras de mega potencialmente pone a más personas a sus destinos, pero que las zonas rurales de dospistas sirve a su propósito y cuesta una fracción de los fondos para construir.

Comunicación paralela ciertamente tiene sus beneficios. Es rápida, sencilla y relativamente fácil de implementar. Pero requiere muchas más líneas de entrada / salida (E / S). Si alguna vez ha tenido que mover un proyecto a partir de un básico Arduino Uno a un mega, usted sabe que las líneas de E / S en un microprocesador pueden ser preciosos y pocos. Así, a menudo optamos por comunicación serie, sacrificando velocidad potencial de los bienes raíces pin.

Serial Asíncrona

Con los años, decenas de protocolos de serie han sido diseñados para satisfacer las necesidades particulares de los sistemas integrados. USB (bus serie universal) y Ethernet, un par de los informáticos interfaces seriales más conocidos. Otras interfaces serie muy comunes incluyen SPI, I 2 C, y el estándar de serie que estamos aquí para hablar de la actualidad. Cada una de estas interfaces en serie se pueden clasificar en dos grupos: síncrono o asíncrono.

Una interfaz serie síncrona siempre se empareja su línea de datos (s) con una señal de reloj, por lo que todos los dispositivos de una cuota de bus serie síncrona un reloj común. Esto hace que para una transferencia más sencilla, a menudo más rápido en serie, pero también requiere al menos un cable adicional entre dispositivos de comunicación.Los ejemplos de las interfaces síncronos incluyen SPI, y 2 C.

Asíncrona significa que los datos se transfieren sin el apoyo de una señal de reloj externo. Este método de transmisión es perfecto para minimizar los cables necesarios y pines I / O, pero sí significa que tenemos que poner un poco de esfuerzo extra en la transferencia y recepción de datos de forma fiable. El protocolo serie vamos a estar discutiendo en este tutorial es la forma más común de las transferencias asíncronas. Es tan común, de hecho, que cuando la mayoría de la gente dice “serial” que están hablando de este protocolo (algo que probablemente te darás cuenta de lo largo de este tutorial).

El protocolo serie del reloj menos vamos a estar discutiendo en este tutorial es ampliamente utilizado en la electrónica embarcada. Si usted está mirando para agregar un módulo GPS, Bluetooth, XBee de, los LCD de serie, o muchos otros dispositivos externos al proyecto, es probable que tengas que sacar de repente alguna serie-fu.

Reglas de serie

El protocolo serie asíncrono tiene una serie de reglas incorporadas – mecanismos que ayudan a asegurar la transferencia de datos robustos y libres de errores. Estos mecanismos, que obtenemos para evitando la señal de reloj externo, son los siguientes:

  • Los bits de datos,
  • Bits de sincronización,
  • Bits de paridad,
  • y velocidad de transmisión.

A través de la variedad de estos mecanismos de señalización, usted encontrará que no hay una manera de enviar datos en serie. El protocolo es altamente configurable. La parte fundamental es asegurarse de que los dos dispositivos en un bus serie están configurados para utilizar los mismos protocolos exactos.

Velocidad en baudios

La velocidad de transmisión de datos rápida especifica cómo se envía a través de una línea serie. Por lo general se expresa en unidades de bits por segundo (bps). Si invierte la velocidad de transmisión, puede averiguar cuánto tiempo se tarda en transmitir un solo bit. Este valor determina el tiempo que el transmisor tiene una línea serial de alta / baja o en lo que las muestras de dispositivos que reciben periodo de su línea.

Velocidades de transmisión pueden ser casi cualquier valor dentro de lo razonable. El único requisito es que ambos dispositivos funcionan a la misma velocidad. Una de las velocidades de transmisión más comunes, especialmente para las cosas simples, donde la velocidad no es crítica, es de 9600 bps. Otros baudios “estándar” son 1.200, 2.400, 4.800, 19.200, 38.400, 57.600 y 115.200.

Cuanto mayor sea la velocidad de transmisión se va, los datos más rápido se envía / recibe, pero hay límites a la rápida de datos se pueden transferir. Generalmente, usted no verá velocidades superiores a 115 200 – que es rápido para la mayoría de los microcontroladores. Son muy altos, y usted comenzará a ver los errores en el extremo receptor, como relojes y períodos de muestreo simplemente no pueden mantener el ritmo.

Enmarcar los datos

Cada bloque (normalmente un byte) de los datos transmitidos se envía en realidad en un paquete o trama de bits.Marcos se crean añadiendo sincronización y de paridad de bits a nuestros datos.

Paquete de serie

Un marco de serie. Algunos símbolos de la trama tienen tamaños bits configurables.

Vamos a entrar en los detalles de cada una de estas piezas del marco.

Trozo de Datos

La carne real de cada paquete de serie es que los datos que lleva. Nos ambiguamente llamamos este bloque de datos de un trozo, porque su tamaño no se indica específicamente. La cantidad de datos en cada paquete se puede configurar para cualquier cosa, desde 5 a 9 bits. Ciertamente, el tamaño de los datos estándar es el byte de 8 bits básico, pero otros tamaños tienen sus usos. Un fragmento de datos 7 bits puede ser más eficiente que 8, especialmente si usted está transfiriendo caracteres ASCII de 7 bits.

Después de ponerse de acuerdo sobre una longitud de caracteres, los dos dispositivos en serie también tienen que ponerse de acuerdo en el orden de bits de sus datos. ¿Está de datos enviado bit más significativo (MSB) a menos, o viceversa? Si no se indica lo contrario, por lo general puede asumir que los datos se transfieren bit menos significativo (LSB) primero.

Bits de sincronización

Los bits de sincronización son dos o tres bits especiales transferidos a cada fragmento de datos. Son el bit de inicio y el bit (s) de parada. Fiel a su nombre, estos bits marcan el comienzo y el final de un paquete. Siempre hay un solo bit de inicio, pero el número de bits de parada es configurable para uno o dos (aunque comúnmente se fue a la una).

El bit de inicio siempre se indica mediante una línea de datos inactivo va de 1 a 0, mientras que el bit (s) Parada pasará de nuevo al estado de reposo manteniendo la línea en 1.

Bits de paridad

La paridad es una forma de comprobación de errores muy simple, de bajo nivel. Viene en dos sabores: pares o impares. Para producir el bit de paridad, se suman todos los 5-9 bits del byte de datos, y la uniformidad de la suma decide si el bit está activado o no. Por ejemplo, suponiendo que la paridad se establece en uniforme y estaba siendo añadido a un byte de datos como 0b01011101 que tiene un número impar de 1 ‘s (5), el bit de paridad se establece en 1 A la inversa, si el modo de paridad se establece en impar, el bit de paridad sería 0

La paridad es opcional, y no muy ampliamente utilizado. Puede ser útil para transmitir a través de medios ruidosos, pero va también frenar sus datos transfieren un poco y requiere tanto el emisor y el receptor para implementar control de errores (por lo general, los datos recibidos que falla debe ser re-envían).

9600 8N1 (un ejemplo)

9600 8N1 – 9600 baudios, 8 bits de datos, sin paridad y 1 bit de parada – es uno de los protocolos de serie más comúnmente utilizados. Así que, ¿cuáles serían un paquete o dos de 9600 los datos 8N1 parece? Vamos a echar un ejemplo!

Un dispositivo que transmite los ASCII caracteres ‘O’ y ‘K’ tendría que crear dos paquetes de datos. El valor ASCII deO (que es mayúscula) es de 79, que se descompone en un valor binario de 8 bits de 01001111 mientras que el valor binario K ‘s es 01001011 Todo lo que queda es añadiendo bits de sincronización.

No se dice expresamente, pero se asume que los datos se transfieren bit menos significativo primero. Observe cómo cada uno de los dos bytes se envía como se lee de derecha a izquierda.

Paquete "OK"

Ya que estamos transfiriendo a 9600 bps, el tiempo dedicado a la celebración de cada uno de los bits de alta o baja es 1 / (9600 bps) o 104 mu s por bit.

Para cada byte de datos transmitidos, en realidad hay 10 bits que se envían: un bit de inicio, 8 bits de datos, y un bit de parada. Así, a 9600 bps, en realidad estamos enviando 9600 bits por segundo o 960 (9600/10) bytes por segundo.


Ahora que sabe cómo construir paquetes de serie, podemos pasar a la sección de hardware. No vamos a ver cómo se implementan los la velocidad de transmisión de 1 y de 0 y en un nivel de la señal!

Cableado y Hardware

Un bus serie consta de sólo dos cables – uno para el envío de datos y otra para recibir. Como este tipo de dispositivos, de serie deben tener dos pasadores de serie: el receptor, RX y el transmisor, TX.

Cableado serie

Es importante señalar que esas etiquetas RX y TX son con respecto al propio dispositivo. Así que la RX de un dispositivo debe ir a la TX de la otra, y viceversa. Es raro si estás acostumbrado a conectar VCC a VCC, GND a GND, MOSI a MOSI, etc., pero tiene sentido si se piensa en ello. El transmisor debe estar hablando con el receptor, no a otro transmisor.

Una interfaz en serie donde ambos dispositivos pueden enviar y recibir datos es o full-duplex o half-duplex. Full-duplex significa ambos dispositivos pueden enviar y recibir simultáneamente. Comunicación semidúplex significa dispositivos serie deben turnarse para enviar y recibir.

Algunos buses seriales pueden salirse con sólo una única conexión entre un dispositivo de envío y recepción. Por ejemplo, nuestras pantallas LCD Habilitado Serial son todo oídos y realmente no tienen ningún dato para retransmitir de nuevo al dispositivo de control. Esto es lo que se conoce como comunicación serie simplex. Todo lo que necesita es un solo cable de TX del dispositivo maestro a la línea RX del oyente.

Implementación Hardware

Hemos cubierto serie asíncrona de un lado conceptual. Sabemos que los cables que necesitamos. Pero, ¿cómo es la comunicación serie aplica realmente a un nivel de señal? En unas formas de variedades, en realidad. Hay todo tipo de normas para la señalización de serie. Echemos un vistazo a un par de las implementaciones de hardware más populares de serie: a nivel de la lógica (TTL) y RS-232.

Cuando microcontroladores y otros circuitos integrados de bajo nivel se comunican en serie por lo general lo hacen a un TTL existen (lógica transistor-transistor) Nivel de señales de serie TTL entre rango de alimentación de tensión de un microcontrolador -. General 0V a 3.3V o 5V. Una señal en el nivel VCC (3.3V, 5V, etc.) indica ya sea una línea libre, un poco de valor 1, o un bit de parada. Una señal de 0V (GND) representa bien un bit de inicio o un bit de datos de valor 0.

TTL Señal

RS-232, que se pueden encontrar en algunos de los más antiguos ordenadores y periféricos, es como serie TTL vuelta en su cabeza. Señales RS-232 por lo general oscilan entre -13V y 13V, aunque la especificación permite para cualquier cosa de +/- 3V a +/- 25V. En estas señales de bajo voltaje (-5V, -13V, etc.) indica ya sea la línea de espera, un bit de parada, o un bit de datos de valor 1. Una señal de alta RS-232 significa o bien un bit de inicio, o una 0- bit de datos de valor. Eso es un poco lo contrario de TTL serie.

RS-232 Señal

Entre las dos normas señal en serie, TTL es mucho más fácil de implementar en circuitos integrados. Sin embargo, los niveles de baja tensión son más susceptibles a las pérdidas a través de líneas de transmisión largas. RS-232, o normas más complejas como RS-485, se adaptan mejor a largo alcance transmisiones seriales.

Cuando se va a conectar dos dispositivos en serie juntos, es importante asegurarse de que sus tensiones de señal coinciden. No se puede interactuar directamente un dispositivo serie TTL con un bus RS-232. Vas a tener quecambiar las señales!


Continuando, vamos a explorar la herramienta de microcontroladores utilizan para convertir sus datos en un bus paralelo hacia y desde una interfaz en serie. UART!

UART

La última pieza de este rompecabezas de serie es encontrar algo que tanto crear los paquetes de serie y control de esas líneas de hardware físico. Introduzca la UART.

Un receptor asíncrono / transmisor universal (UART) es un bloque de circuitería responsable de implementar la comunicación en serie. En esencia, la UART actúa como intermediario entre las interfaces paralelo y serie. En un extremo de la UART es un bus de ocho o lo que las líneas de datos (además de algunos pines de control), en el otro es los dos cables de serie – RX y TX.

UART simplificado

Super-simplificada interfaz UART. Paralelas sobre un extremo, de serie en la otra.

UART existen como circuitos integrados independientes, pero son más comúnmente encontrado en el interior microcontroladores. Usted tendrá que comprobar ficha técnica de su microcontrolador para ver si tiene alguna UART.Algunos no tienen ninguno, algunos tienen uno, algunos tienen muchos. Por ejemplo, el Arduino Uno – basado en el “Old Faithful” ATmega328 – tiene apenas un solo UART, mientras que el Arduino Mega – construido sobre un Atmega2560 – tiene la friolera de cuatro UART.

A medida que la R y T en el dictado siglas, UART son responsables de envío y recepción de datos en serie. Por el lado de transmisión, una UART debe crear el paquete de datos – añadiendo sincronización y bits de paridad – y enviar ese paquete a cabo la línea TX con sincronización precisa (según la velocidad de transmisión set). En el extremo de recepción, el UART tiene que probar la línea RX a tasas de acuerdo a la velocidad de transmisión de esperar, seleccionar los bits de sincronización, y escupir los datos.

UART interna

Diagrama de bloques UART interna (cortesía de la ficha técnica Exar ST16C550)

Más UART avanzados pueden tirar sus datos recibidos en un buffer, donde puede permanecer hasta que el microcontrolador trata de conseguirlo. UART suele liberar sus datos almacenados en un primero en entrar, primero en salir (FIFO). Los tampones pueden ser tan pequeño como unos pocos bits, o tan grande como miles de bytes.

UART Software

Si un microcontrolador no tiene un UART (o no tiene suficiente), la interfaz serial puede ser poco-golpeó – directamente controlado por el procesador. Este es el enfoque bibliotecas Arduino como SoftwareSerial toman. Bit golpearse es intensivo del procesador, y no suele ser tan preciso como una UART, pero funciona en un apuro!

Errores comunes

Eso es todo lo que hay a la comunicación serial. Me gustaría dejar con algunos errores comunes que son fáciles para un ingeniero de cualquier nivel de experiencia para hacer:

-RX-a TX, TX-a-RX

Parece bastante simple, pero es un error que yo sé que he hecho más de un par de veces. Por mucho que usted quiere sus etiquetas coinciden, asegúrese siempre de cruzar las líneas RX y TX entre dispositivos serie.

Aplicación de serie de la vida real

FTDI Básica programación de un Pro Mini. Nota RX y TX de cruzados!

Contrariamente a lo que el estimado Dr. Egon Spengler sería advertir, cruzar los arroyos.

Baud Rate Mismatch

Velocidades de transmisión son como las lenguas de comunicación serie. Si dos dispositivos no están hablando a la misma velocidad, los datos pueden ser mal interpretadas o bien, o completamente perdidas. Si todo el dispositivo receptor ve en su línea de recepción es basura, compruebe para asegurarse de que las velocidades de transmisión coinciden.

Baud Discrepancia

Los datos transmitidos a 9600 bps, pero recibieron a 19200 bps. Baud desajuste = basura.

Contención de bus

Comunicación serie está diseñada para permitir sólo dos dispositivos se comuniquen a través de un bus de serie. Si más de un dispositivo está tratando de transmitir en la misma línea serie se podía ejecutar en autobús de la discordia.Dun dun dun ….

Por ejemplo, si se conecta un módulo GPS a tu Arduino, sólo puede conectar la línea TX de ese módulo la línea RX del Arduino. Pero que el pin de Arduino RX ya está conectado al pin TX del conversor de USB a serie, que se utiliza cada vez que se programa el Arduino o utilizar el Serial Monitor. Esto configura la situación potencial que tanto el módulo GPS y el chip FTDI están tratando de transmitir en la misma línea al mismo tiempo.

Ejemplo de contención autobús

Dos transmisores que envían a un solo receptor establece la posibilidad de que la contención de bus.

Dos dispositivos tratando de transmitir datos al mismo tiempo, en la misma línea, es malo! En la “mejor” ni de los dispositivos se llega a enviar a sus datos. En el peor, líneas de transmisión de ambos dispositivos van puf (aunque eso es raro, y por lo general protegidos en contra).

Puede ser segura para conectar varios dispositivos de recepción a un único dispositivo de transmisión. En realidad, no hasta SPEC y probablemente mal visto por un ingeniero endurecido, pero funcionará. Por ejemplo, si va a conectar una pantalla LCD de serie hasta un Arduino, el enfoque más fácil puede ser la de conectar la línea RX del módulo LCD a la línea TX del Arduino. TX del Arduino ya está conectado a la línea RX del programador USB, pero que aún deja un solo dispositivo de control de la línea de transmisión.

Implementación segura pero dudoso de un transmisor / dos receptores

La distribución de una línea TX como esto todavía puede ser peligroso desde el punto de vista del firmware, porque no se puede escoger y elegir qué dispositivo escucha lo que la transmisión. La pantalla LCD terminar recibiendo datos no destinados para ello, lo que podría comandar a entrar en un estado desconocido.

En general – un bus de serie, dos dispositivos de serie!

Recursos y Más Allá

Con esta brillante, nuevo conocimiento de la comunicación en serie, hay un montón de nuevos conceptos, proyectos y tecnologías para explorar.

¿Le gustaría aprender más sobre otros estándares de comunicación? Tal vez algo sincrónica?

Muchas tecnologías hacen un uso intensivo de la comunicación en serie:

 

 

Fuente aqui

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s