Convertidor de interfaz USB_comunicación multimáquina basada en SPI, interfaz
[Resumen]: Este artículo presenta un método de comunicación y expansión de múltiples microprocesadores confiable y de alta velocidad basado en la interfaz SPI, incluido el principio de implementación, la conexión de hardware y la implementación de software del método. [Palabras clave]: interfaz SPI, comunicación, extensión
1 Introducción
En el campo de la medición y el control modernos, los productos electrónicos industriales a menudo no existen de forma aislada, sino que deben poder para compartir datos, para realizar la función de comunicación entre múltiples máquinas, por lo que los problemas de comunicación y expansión de múltiples máquinas deben considerarse en el diseño de la mayoría de los productos electrónicos. Por ejemplo, en diversos sistemas de control que utilizan microprocesadores, se requiere realizar una expansión flexible de múltiples microprocesadores y comunicación de datos entre ellos. Este artículo toma como ejemplo un sistema maestro y dos esclavos compuestos por un microcontrolador AVR para presentar un método de comunicación y expansión de múltiples microprocesadores confiable y de alta velocidad basado en la interfaz SPI, incluido el principio de implementación, la conexión de hardware y la implementación de software de este método.
2 Selección de la interfaz de comunicación
La selección de la interfaz de comunicación está relacionada con la composición de toda la expansión multimáquina y el diseño de la solución de comunicación. Los métodos de comunicación de los microcontroladores incluyen comunicación paralela y comunicación en serie. Los métodos de comunicación en serie incluyen interfaz de comunicación SPI, interfaz de comunicación UART, interfaz de comunicación I2C, etc. En la selección de la interfaz de comunicación, se debe dar máxima prioridad a la confiabilidad de la comunicación. Debido a la interferencia mutua entre canales de comunicación paralelos, cuando ocurre un error de transmisión, los datos deben retransmitirse y deben llegar al extremo receptor al mismo tiempo. Sin embargo, a menudo es difícil garantizar una verdadera coherencia entre los canales debido a. diferentes longitudes de cableado y otras razones. Además, el método de comunicación paralela consume más recursos de E/S y no es adecuado para sistemas pequeños, por lo que este artículo elige el método de comunicación en serie. Basado en las ventajas de la interfaz de comunicación SPI, que es relativamente rápida, el protocolo de comunicación es relativamente simple y relativamente estable, este diseño utiliza la interfaz SPI para lograr la comunicación entre múltiples máquinas.
La interfaz SPI es una interfaz periférica serie síncrona full-duplex que adopta una arquitectura en modo maestro-esclavo y admite aplicaciones en modo maestro único y esclavo múltiple. El reloj está controlado por el host. Bajo el pulso de cambio de reloj, los datos se transmiten bit a bit y la entrada y salida son métodos de comunicación full-duplex. La conexión maestro-esclavo y el método de transmisión de datos durante la comunicación de datos SPI se muestran en la Figura 1.
Figura 1 Conexión maestro-esclavo y método de transmisión de datos durante la comunicación de datos SPI
Como se puede ver en la Figura 1, el sistema de transmisión de datos SPI está compuesto por un host y un esclavo; Principalmente se compone de dos registros de desplazamiento en ambos lados del maestro y esclavo y el generador de reloj SPI del host. El host es el controlador de la transmisión de datos SPI. NSS es el pin de selección del dispositivo esclavo. Es inútil para el host. Se puede configurar como un puerto GPIO para seleccionar el esclavo. Notifica al esclavo que ingrese al estado de transmisión y luego el host inicia el generador de reloj para generar el sincronismo. señal de reloj SCK Hay dos registros de desplazamiento por adelantado. Los datos que contiene realizan una operación de desplazamiento circular impulsada por SCK para completar el intercambio de datos entre el maestro y el esclavo. Los datos transmitidos son de 8 bits y se transmiten bit a bit.
SPI sincroniza el maestro y el esclavo a través de un reloj SCK. Los datos del maestro ingresan al esclavo a través de MOSI y, al mismo tiempo, los datos del esclavo ingresan al host a través de MISO. Por lo tanto, su intercambio de datos en serie no necesita agregar bits de inicio, bits de parada y otros bits de formato para la sincronización. Los datos a transmitir se escriben directamente en el registro de datos de transmisión SPI del host. Este proceso de escritura inicia automáticamente el proceso de transmisión del host. . Para el esclavo, los datos que aparecen en el pin MOSI también se mueven bit a bit al registro de desplazamiento del esclavo bajo el ritmo de SCK. Después de recibir un bloque de datos completo, se establece el indicador de interrupción para notificar al esclavo que el bloque de datos. ha sido Una vez completada la recepción, el contenido recibido por el registro de desplazamiento se copia al registro de datos de recepción SPI del esclavo. Se puede ver que la programación del usuario solo necesita escribir datos en el registro de datos de transmisión SPI al enviar datos y leer el registro de datos de recepción SPI al recibir datos. El resto del cambio, sincronización y configuración del indicador del transceptor y otras tareas. son realizados automáticamente por el módulo SPI incorporado.
3 Principios de implementación de la expansión y comunicación de múltiples máquinas
Tome la estructura del sistema de un maestro y dos esclavos y use el microcontrolador Atmega128 como ejemplo para presentar la expansión de múltiples máquinas. y esquema de comunicación. El diagrama de bloques del sistema se muestra en la Figura 2. El maestro está conectado a las interfaces SPI de los dos esclavos respectivamente. Además, se agrega una línea de habilitación de asignación de dirección AD entre el maestro y los esclavos.
En teoría, este método de expansión puede realizar la expansión y comunicación de innumerables máquinas esclavas.
Figura 2 Diagrama de bloques del sistema
3.1 Asignación de direcciones
En un sistema de comunicación de múltiples máquinas, el host accede a cada esclavo a través de la dirección del esclavo. es obligatorio. Cada esclavo tiene una dirección única. Para garantizar la unicidad y confiabilidad de la dirección, las máquinas esclavas deben tener direcciones uniformes.
El método de direccionamiento común es conectar el interruptor DIP a la E/S de la máquina esclava y utilizar la marcación manual para lograr el direccionamiento. La apertura y el cierre del interruptor DIP representan 0 y 1 respectivamente, lo que también representa ciertos datos. Estos datos son la dirección de la máquina esclava. Este método de direccionamiento duro es simple y fácil de operar, pero consume los recursos de E/S de la máquina esclava. Cuando aumenta el número de esclavos, los puertos de E/S utilizados para los interruptores DIP también aumentan en consecuencia y el direccionamiento requiere operación manual, lo cual es muy inconveniente en aplicaciones prácticas.
Este artículo diseña un método de direccionamiento de software que utiliza el host para asignar direcciones automáticamente a los esclavos. En términos de hardware, esto se puede lograr simplemente agregando una línea de habilitación de asignación de direcciones basada en la interfaz de comunicación SPI, como se muestra en la Figura 2. El principio de implementación es: el host envía la señal de habilitación de asignación de dirección de procesamiento al esclavo 1 a través de la línea AD. Al mismo tiempo, el esclavo 1 deshabilita la habilitación de asignación de dirección del esclavo 2 a través de la línea AD para garantizar que solo haya una asignación de dirección. habilitar en un momento determinado durante el período de asignación de direcciones. La máquina esclava realiza el procesamiento de información de direcciones. El host envía información de asignación de direcciones a cada esclavo a través de la interfaz SPI y los esclavos reciben la información de dirección del host. Sin embargo, en este momento solo la asignación de direcciones del esclavo 1 está habilitada, por lo que solo el esclavo 1 realiza la información de asignación de direcciones. Al procesarlo, la dirección se asigna al esclavo 1 mediante la siguiente secuencia:
① El maestro envía el identificador inicial de asignación de dirección '(' al esclavo, diciéndole que realice la operación de asignación de dirección en este momento. y el esclavo 1 El host devuelve la información de confirmación
② El host envía la dirección al esclavo y el esclavo 1 almacena la dirección y devuelve la información de confirmación al host
<; p>③ El host envía el indicador de fin de asignación de dirección al símbolo ')' para informarle que la asignación de dirección se ha completado.Después de que el host asigna con éxito la dirección al esclavo 1, el host desactiva la habilitación de asignación de direcciones del esclavo 1 y el esclavo 1 activa la habilitación de asignación de direcciones del esclavo 2. De manera similar, de acuerdo con la secuencia anterior , el host Completa la asignación de direcciones a todos los esclavos.
3.2 Consulta de datos
Después de que el host se dirige uniformemente a todos los esclavos, cada esclavo tiene una dirección única, de modo que el host y los esclavos puedan realizar consultas de datos y operaciones de envío. Durante la operación de consulta de datos, primero el maestro envía la dirección del esclavo que desea consultar a todos los esclavos. Después de que todos los esclavos reciben la dirección enviada por el maestro, la comparan con su propia información de dirección. responder al maestro y enviar los datos al host, completando así la consulta de datos del host para un esclavo. La secuencia de tiempo de la operación de consulta de datos es:
① El host envía el identificador de inicio de la consulta de datos '[' al esclavo, y el esclavo lo reconoce como una operación de consulta de datos
② El host envía el identificador de inicio de la consulta de datos '[' al esclavo. El esclavo envía el valor de la dirección de la consulta de datos. El esclavo recibe la información de la dirección y la compara con su propia dirección. se realizarán las siguientes operaciones si es diferente, no se realizará ninguna operación
③ El esclavo de la dirección correspondiente envía datos al host y el host los recibe
<; p>④ El esclavo envía el identificador de final de datos ']' al host para informarle que la transmisión de datos se ha completado.Según el tiempo, el host puede consultar datos de todos los esclavos o de un esclavo determinado.
3.3 Envío de datos
Durante la operación de envío de datos, primero el host envía información de dirección a todos los esclavos que necesitan enviarle datos. Después de que todos los esclavos reciben la dirección enviada por el host. y Compare su propia información de dirección, y el esclavo con la dirección coincidente responderá al host y estará listo para recibir datos. Esto completa el proceso de envío de datos del host a un esclavo. El momento de la transmisión de datos es:
① El maestro envía datos y el identificador de inicio "" al esclavo para informarle que la transmisión de datos se ha completado.
Según el tiempo, el host puede enviar datos a todas o a una determinada máquina esclava según sea necesario.
4 Conclusión
Este artículo presenta un método para implementar la expansión y comunicación de múltiples máquinas. Este método agrega una línea de E/S ordinaria a la interfaz SPI estándar y utiliza el método de direccionamiento de software. realiza la asignación de direcciones al esclavo. En comparación con el método de direccionamiento de hardware, ahorra recursos de E / S y es simple y fácil de implementar. Basado en la interfaz SPI, la velocidad de comunicación de transmisión de consultas de datos es más rápida. artículo El método de comunicación y expansión de múltiples máquinas es simple, factible, seguro y confiable, y digno de promoción.
Referencias:
[1] Hu Hancai. Principios de microcontroladores y tecnología de interfaz[M]. Beijing: Tsinghua University Press, 2004.
[2] Zhao Kai, Huang Shan. Aplicación de TLl6C550 en comunicación en serie entre TMS320VC5402 y PC [J]. Componentes electrónicos extranjeros, (9): 17-20.
[3] Xu Ming, Du Guoliang. Implementación de tecnología de expansión de puerto serie transparente bidireccional en sistemas integrados [J Information Technology, 2009, (14): 31-34.
[4] Ma Zhongmei C del lenguaje de microcomputadora de un solo chip. Diseño de aplicaciones [M] Beijing: Prensa de la Universidad de Aeronáutica y Astronáutica de Beijing, 2007.