5 votos

La comunicación entre 2 diferentes microcontroladores

Mi Arduino funciona a 16MHz velocidad de reloj; otro microcontrolador ejecuta a la velocidad de reloj de 13MHz. Si puedo enviar la salida digital directamente desde un pin de salida de la primera a la clavija de entrada de este último, habrá una pérdida de datos y la transmisión será dañado.

Pregunta 1: ¿Cómo puedo obtener el Mcu para transmitir adecuadamente los datos sin ningún tipo de corrupción? ¿Necesito sincronizar con ellos de alguna manera, o debo usar otro dispositivo de en medio, como una especie de buffer (o tal vez para enviar datos a una tasa menor)?

Pregunta 2: Si me puedes enviar los datos a una tasa más baja de MCU#1 a MCU#2 ¿habrá una diferencia de fase que podría resultar en la corrupción de los datos?

6voto

pipe Puntos 314

Tienes toda la razón en su análisis de un problema, y es, por supuesto resuelto.

La solución es un protocolo de serie de su elección. Un microcontrolador usualmente tienen uno o más de los comunes inter-IC protocolos de comunicación:

UART es "clockless" de modo que cada lado tiene que decidir en una velocidad de reloj. La velocidad es lo suficientemente bajo para que cada receptor puede encontrar a la derecha los bits y resuelve la "fase" problema mediante la inserción de bits adicionales que siempre va a ser bajo o alto, junto a un poco de la polaridad opuesta.

SPI y I2C tiene un reloj en adición a los datos. El receptor sólo actuará en los datos cuando el reloj cambia. Generalmente el hardware se encarga de todo. I2C tiene un estándar de reloj de límite de velocidad, mientras que el SPI no tiene ningún tipo de límite.

Entre estos, el SPI es sin duda el más fácil de implementar en discretos de hardware. Es esencialmente no más de un registro de desplazamiento, y se puede interactuar directamente con un número de hoteles y lógica común fichas. También hay no menos de límite de velocidad, y la fluctuación no es un problema, ya que es impulsado únicamente por el reloj, por lo que es fácil de implementar en software en un procesador lento.

5voto

Surendra Patil Puntos 11

Los puntos que usted hace son absolutamente válidas. Lo que faltan son algunos de los detalles que se podrían obtener por la lectura más sobre los protocolos de comunicación. Aquí están algunos de ellos.

  1. La velocidad de comunicación siempre debe ser elegido de la máxima requerida de la velocidad, no la que se puede lograr.

La razón de esto es que, con algunas excepciones (transceptores, tampones, etc.) los datos transferidos deben ser obtenidos o procesados de alguna manera. Entrada de interfaz humana ciertamente funciona en época completamente diferente dimensión. Y si su controlador tarda varios segundos en proceso de 1 MB de datos, sería inútil para su traslado a las 16 Mbps de velocidad.

  1. Porque la señal-a-ruido disminuye con la distancia, el máximo alcanzable de ancho de banda disminuye demasiado.

No hay término "ancho de banda de la distancia de producto" a menudo se utiliza en la comunicación. Esta es otra razón por la directa MCU-a-MCU conexiones rara vez uso que las altas tasas de datos.

  1. En la moderna Mcu las velocidades de comunicación son a menudo independiente de la CPU relojes.

Por ejemplo, Xmega Mcu periférica relojes en funcionamiento en 2 o incluso 4 veces las velocidades de CPU. Además, los controladores con interfaces USB a menudo tienen sus propias osciladores.

  1. Diversos protocolos de comunicación son ahora compatibles con el hardware.

Protocolos síncronos como (SPI o I2C en el esclavo lado) tienen sus señales de reloj proveniente de los diferentes MCU. Así, el hardware puede utilizar el reloj para cambiar los datos a/desde el buffer y solo involucran el procesador al final de un mensaje. Más avanzada Mcu con la compatibilidad DMA puede incluso mover los datos entre los diferentes periféricos de memoria o sin la participación de la CPU.

Asincrónica protocolos como UART o PUEDE requerir que se sincronizan los relojes. Que comience a contar el tiempo en el bit de inicio y, a continuación, muestra las entradas una vez aproximadamente en la mitad del reloj de punto (UART) o hasta tres veces alrededor de 75% de reloj de pulso (CAN). Obviamente la integridad de los datos depende de la sincronización de la precisión. Mientras que PUEDE que los controladores pueden ajustar sus relojes mediante cambio de fase de información, más simples, UARTs no se puede.

Una práctica común para lograr una mejor UART de sincronización es el uso de cristales con frecuencias fácilmente divisible comunes de la serie de tasas de baudios. Por ejemplo, en lugar de correr antes mencionados Xmega controladores que se encuentran en su máximo de 32 MHz se puede ver a menudo con 14.7456 cristales, corriendo a 29.5 MHz.

Independientemente del protocolo, la combinación de hardware de almacenamiento en búfer y transferencias de DMA realizar la transferencia de ancho de banda de una manera bastante independiente de la CPU relojes.

  1. Finalmente, cuando la comunicación se sube la velocidad es más común ver a independiente chips de controlador en lugar de la conexión directa a la MCU.

No sólo eso, sino que normalmente se puede ver en paralelo conexión de autobús entre el MCU y de alta velocidad de transceptores como LAN o pantalla LVDS. Esto es debido a que el bus de comunicación de rendimiento se vuelve más rápido de lo que pueden pasar en la serie comedero solo MCU pin.

Usted ha mencionado Ethernet en uno de sus comentarios. Usted debe darse cuenta de que con Ethernet de 1 Gbps, las velocidades no 16 MHz MCU, tendrá una oportunidad de procesamiento que la avalancha de tráfico. Para esas velocidades usted debe buscar en mucho más capaz de hardware, similar a la utilizada en el RPi, por ejemplo.

Por cierto, este último punto es simplemente otra forma de punto #1, es decir, si no se puede reducir la velocidad de datos a algo que tu MCU puede manejar, es lógico que usted necesita un procesador más rápido para lidiar con el flujo de datos.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X