Tiempo para la transmisión de datos en serie (UART)

0

Queridos, tengo una pregunta muy sencilla sobre la transmisión de datos en serie.

signed int NUM;//32 bit
NUM=235;

la configuración en serie es:

  • 115200 velocidad en baudios
  • 1 inicio
  • 1 parada
  • sin paridad.

¿Cuánto tiempo tomará transmitir este número (NUM) a través del puerto serie?

además, envío los datos de dos maneras como sigue. Mi IDE es Keil Microvision. 1 > use printf ("% d / n", NUM);

2 > He escrito una función

    void Send_Info(uint32 count1)
{
      int k;
        static uint8 NumPos[6]={0};

    NumPos[0]= count1 / 10000 + 0x30;        //tenthousand1
    NumPos[1]= count1 % 10000 / 1000 + 0x30; //thousand1
    NumPos[2]= count1 % 1000 / 100 + 0x30;   //hundred1 
    NumPos[3]= count1 % 100 / 10 + 0x30;     //decimal1 
    NumPos[4]= count1 % 10 + 0x30;           //unit1 
    NumPos[5]= 0x0D;                         //CR
     for(k = 0; k < 6; k++)
    {
            (void)stdout_putchar(NumPos[k]);
    }
}

Toda la transmisión se produce dentro de una interrupción que se produce en cada 0,5 segundos.

    
pregunta litun bls

2 respuestas

5

El número de bits a transmitir es 32. Además, hay 1 inicio y 1 bit de parada por 8 o 9 bits (dependiendo de lo que se seleccione para # bits de datos), suponiendo 8 bits de datos, hay 4 bits de inicio 4 bits de parada, por lo que en total 32 + 4 + 4 = 40 bits.

115200 baudios significa 11500 bits / s, por lo que 40 bits tomarán 40/115200 = aprox. 0.000347 s = 347 us.

Sin embargo, puede haber una leve sobrecarga / demora para el procesamiento en sí, pero esto es altamente despreciable.

ACTUALIZAR

La pregunta parece haber sido editada. Lo anterior es cierto para el envío de 4 bytes (32 bits) de datos reales (que dan como resultado 40 bits). En el ejemplo anterior, se envían 6 bytes, pero la fórmula permanece igual.

    
respondido por el Michel Keijzers
4

Parece que estás transmitiendo 6 caracteres ASCII. No dice si se envían como caracteres de 7 u 8 bits, pero suponga 8 bits por carácter, en el peor de los casos. Así que hay 6 cuadros que consisten en 1 bit de inicio, 8 bits de datos y 1 bit de parada, para un total de 60 bits. 60 bits / 115200 baudios = 521us. Esto supone que el búfer de transmisión se está recargando antes de que finalice el carácter anterior para que no haya retrasos entre las tramas.

    
respondido por el user28910

Lea otras preguntas en las etiquetas