Error al leer datos de UART en PIC32

3

Estoy intentando comunicarme con PIC32 UART. Soy capaz de transmitir cualquier dato pero tengo problemas para leer los datos. En PIC32 hay una función putsUART2("") que puede transmitir cualquier dato y hay una función getsUART1(5, myBuffer, 123); . Los parámetros para esta función son:

1)length: This is the length of the string to be received
2)buffer: This is the pointer to the location where the data
          received have to be stored.
3)uart_data_wait: This is the time-out count for which the module
                  has to wait before return.  If the time-out count is ‘N’,
                  the actual time out would be about (19 * N – 1) instruction cycles.

Ahora lo que estoy haciendo en mi código es

if((U2STAbits.URXDA)!=0)  //if data received,then
{
    getsUART2(5,RxBuffer , 123); //storing the data in RxBuffer
    putsUART2(">>Data Received\r\n");
    U2STAbits.URXDA = 0; 
    U2STAbits.OERR = 0;                     
    putsUART2(RxBuffer); //transmitting the data back to the terminal
}

Ahora cuando escribo 'A', >>Data Received está impreso en el terminal y estoy recuperando datos en el terminal. pero como el tamaño de RxBuffer es 5 , solo almacena un carácter. ¿Alguien puede ayudarme con esto? Realmente quiero escribir una cadena y recuperarla en la terminal.

Por favor ayuda, gracias.

    
pregunta Aircraft

1 respuesta

3

Su código se activa tan pronto como el UART haya recibido al menos un carácter . Luego, trata de recuperar tantos caracteres del búfer de UARTs, con un máximo de 5 caracteres y esperando un máximo de 122 * 19 ciclos de instrucción. Aparentemente, ese límite de tiempo no es suficiente para recibir el siguiente carácter, por lo que terminas con solo un carácter que se recibió completamente. Si desea recibir más caracteres, tendrá que volver a llamar a este código (y nuevamente ...), o debe especificar un tiempo de espera que sea suficiente para recibir todos los caracteres (pero eso requiere que sepa si el remitente envía todos los caracteres de vuelta). -para-atrás, que en general no puedes saber).

    
respondido por el Wouter van Ooijen

Lea otras preguntas en las etiquetas