¿La comunicación serie stm32 detecta bordes o niveles?
Normalmente, ambos datos deben detectarse en la comunicación del puerto serie STM32.
Introducción a la comunicación serie
Clasificación según la dirección de transmisión de datos
Simplex: La transmisión de datos solo admite la transmisión de datos en una dirección
Medio Dúplex: Permite transmitir datos en ambas direcciones. Sin embargo, en un momento determinado, los datos solo pueden transmitirse en una dirección. En realidad, es una comunicación simple que cambia de dirección y no requiere extremos de recepción y envío independientes, y los dos se pueden fusionar y usar juntos para usar uno; puerto p>
Full duplex: Permite transmitir datos en ambas direcciones simultáneamente. Por lo tanto, la comunicación full-duplex es una combinación de dos métodos de comunicación simplex y requiere extremos de recepción y transmisión independientes
como se muestra en a, byc en la siguiente figura.
Clasificados según métodos de comunicación
Comunicación síncrona: transmisión de señal síncrona con reloj. Por ejemplo: interfaz de comunicación SPI, IIC
Comunicación asíncrona: sin señal de sincronización de reloj. Por ejemplo: UART (Receptor-Transmisor Asíncrono Universal), bus único
En la comunicación síncrona, se utiliza una línea de señal encima del dispositivo transceptor para transmitir señales. Impulsado por la señal del reloj, las dos partes se coordinan y sincronizan. datos. Por ejemplo, en la comunicación, ambas partes generalmente estipulan que la línea de datos se muestree en el flanco ascendente o descendente de la señal del reloj.
En la comunicación asíncrona, las señales de reloj no se utilizan para la sincronización de datos. Intercalan directamente algunos bits de señal para la sincronización en la señal de datos, o empaquetan los datos en cuestión y los transmiten en el formato de una trama de datos. En la comunicación, ambas partes también deben ponerse de acuerdo sobre la velocidad de transmisión de datos (es decir, la velocidad en baudios) para una mejor sincronización. Las velocidades de baudios comúnmente utilizadas incluyen 4800bps, 9600bps, 115200bps, etc.
En la comunicación síncrona, la mayor parte del contenido transmitido por la señal de datos son datos válidos, mientras que la comunicación asíncrona contendrá varios identificadores del marco de datos, por lo que la comunicación síncrona es altamente eficiente, pero la comunicación síncrona El error permitido de los relojes de ambas partes son pequeños. Un ligero error de reloj puede causar confusión en los datos. El error permitido de los relojes de ambas partes en la comunicación asincrónica es grande.
Conceptos básicos de la comunicación serie STM32
STM32 tiene dos interfaces de comunicación serie, a saber: UART (receptor-transmisor asíncrono universal) y USART (receptor-transmisor asíncrono síncrono universal). Para los chips de la serie STM32F10x de gran capacidad, hay 3 USART y 2 UART respectivamente.
Método de conexión de pin UART
RXD: pin de entrada de datos, recepción de datos
TXD: pin de transmisión de datos, transmisión de datos
Para el Conexión entre dos chips, GND de los dos chips está conectado a tierra, mientras que TXD y RXD están conectados de forma cruzada. La conexión cruzada aquí significa que el RxD del chip 1 está conectado al TXD del chip 2, y el RXD del chip 2 está conectado al TXD del chip 1. De esta forma, se puede realizar una comunicación a nivel TTL entre los dos chips.
Si el chip está conectado a una PC (o computadora host), excepto a tierra, no se puede realizar una conexión cruzada directa de esta manera. Aunque tanto la PC como el chip tienen pines TXD y RXD, la PC (u computadora host) generalmente usa la interfaz RS232 (generalmente el paquete DB9), por lo que no se puede conectar directamente. La interfaz RS232 es de 9 pines (o pin), que generalmente se obtiene mediante la conversión de nivel de TxD y RxD. Por lo tanto, para que el chip se comunique directamente con la interfaz RS232 de la PC, es necesario convertir los puertos de entrada y salida del chip al tipo RS232 y luego realizar una conexión cruzada.
Después de la conversión de nivel, los estándares de nivel del puerto serie del chip y RS232 son diferentes:
El microcontrolador es un nivel TTL: 5 V significa 1, 0 V significa 0
RS232 es un nivel lógico negativo, -3~-15V es 1, 3~15V es 0
El diagrama de estructura de comunicación entre dispositivos del puerto serie estándar del protocolo de comunicación RS-232 es el siguiente:
Por lo tanto, la comunicación entre el puerto serie del microcontrolador y el puerto serie de la PC debe seguir el siguiente método de conexión: entre el puerto serie del microcontrolador y el puerto RS232 proporcionado por la computadora host, un circuito de conversión de nivel (como el El chip Max232 en la figura siguiente) se utiliza para realizar el nivel TTL y la conversión entre niveles RS232. El P10 en la imagen de abajo es el DB9 mencionado anteriormente.
Características UART de STM32
Comunicación asíncrona full-duplex;
El sistema generador de velocidad en baudios fraccional proporciona una velocidad en baudios precisa. Velocidad de transmisión programable para envío y recepción, hasta 4,5 Mbits/s;
Longitud de palabra de datos programable (8 o 9 bits);
Bits de parada configurables (admite 1 o 2 bits de parada)
Comunicación configurable mediante multibúfer DMA;
Bits de habilitación de transmisor y receptor separados
Indicadores de detección: ① Aceptar búfer ② Enviar búfer vacío ③ Transmisión end flag;
Múltiples fuentes de interrupción con indicadores activan interrupciones;
Otros: control de verificación, cuatro indicadores de detección de errores.
Proceso de comunicación serie
Parámetros UART en STM32
El paquete de datos de comunicación serie se transmite desde el dispositivo emisor a través de su propia interfaz TXD a la interfaz RXD de el dispositivo receptor Comunicación Los formatos de paquetes de datos de ambas partes deben ser consistentes para enviar y recibir datos normalmente. Parámetros que deben definirse para la comunicación asíncrona del puerto serie en STM32: bit de inicio, bit de datos (8 o 9 bits), bit de paridad (noveno bit), bit de parada (1, 15, 2 bits), configuración de velocidad en baudios.
El paquete de datos de la comunicación serie UART está en una unidad de trama. La estructura de trama comúnmente utilizada es: 1 bit de inicio, 8 bits de datos, 1 bit de paridad (opcional), 1 bit de parada. Como se muestra en la siguiente figura:
El bit de paridad se divide en dos tipos: verificación impar y verificación par, que es un método simple de verificación de errores de datos. La paridad impar significa que en cada cuadro de datos, el número de unos en los 9 bits, incluidos los bits de datos y los bits de paridad, debe ser un número impar. La paridad significa que en cada cuadro de datos, incluidos los bits de datos y los bits de paridad, el número; de unos en los 9 bits debe ser un número par.
Además de la verificación impar (impar) y la verificación par (par), los métodos de verificación también pueden incluir: 0 verificación (espacio), 1 verificación (marca) y sin verificación (noparidad). Paridad 0/1: no importa cuál sea el contenido de los datos válidos, el bit de paridad siempre es 0 o 1.
Diagrama de bloques UART
Este diagrama de bloques está dividido en tres partes: superior, media e inferior. Para obtener más información, consulte la descripción en el "Manual de referencia chino STM32".
En la parte superior del diagrama de bloques, los datos ingresan al registro de desplazamiento de recepción desde RX, luego ingresan al registro de datos de recepción y finalmente son leídos por la CPU o DMA y los datos se pasan desde la CPU; o DMA e ingresa al registro de datos de transmisión, luego ingresa al registro de desplazamiento de transmisión y finalmente se envía a través de TX.
Sin embargo, la transmisión y recepción UART requieren control de la velocidad en baudios. ¿Cómo se controla la velocidad en baudios?
Esto nos lleva a la parte inferior del diagrama de bloques. Hay una flecha entrante en el registro de desplazamiento de recepción y el registro de desplazamiento de transmisión, que están conectados al control del receptor y al control del transmisor respectivamente. Los dos están conectados al reloj del receptor y al reloj del transmisor. En otras palabras, aunque la comunicación asíncrona no tiene una señal de sincronización de reloj, se proporciona una señal de reloj para control dentro del puerto serie.
¿Cómo se controlan el reloj del receptor y el reloj del transmisor?
Como puedes ver, el reloj del receptor y el reloj del transmisor están conectados a la misma unidad de control, lo que significa que utilizan un generador de velocidad en baudios. Al mismo tiempo, también puede ver el método de cálculo del reloj del receptor (reloj del generador) y el método de cálculo de USRRTDIV.
Necesita conocer un punto de conocimiento aquí:
Reloj UART1: PCLK2 (alta velocidad)
Reloj UART2, UART3, UART4: PCLK1 (baja velocidad)