Data timeout UART

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Data timeout UART

1,077 Views
lpcware
NXP Employee
NXP Employee
Content originally posted in LPCWare by Albert on Fri Apr 01 09:36:52 MST 2011
Hi all,

Someone can tell me which is the data timeout on UART? (LPC1700).

Thanks!!
0 Kudos
Reply
2 Replies

789 Views
lpcware
NXP Employee
NXP Employee
Content originally posted in LPCWare by Albert on Sun Apr 03 14:38:19 MST 2011
Hi jharwood,

I think I didn't do a question too clear because my english  skill.

The data (caracter) timeout is controlled by hardware where if the Rx FIFO had at least one caracter and no caracter is read or write on a specific time an interrupt is triggered automaticly.

Now I found this time in the user manual and this time is 3,5 to 4,5 caracter times.

Thanks for  the reply.
0 Kudos
Reply

789 Views
lpcware
NXP Employee
NXP Employee
Content originally posted in LPCWare by jharwood on Sat Apr 02 19:12:05 MST 2011
Hi Albert,
Now that's a very vague question :confused:  Usually, you post very astute questions.

Perhaps you are a bit unfamiliar with UARTs, I don't know if that's the case, so maybe the following will sound somewhat condescending. Apologies in advance.

Basically, the UART control block will either give you (the application programmer) an indication of either a mis-read of an incoming character, or a perfect read of an incoming character. You can determine the difference by either inspecting the UART's Line Status Register in a polled application, or by reacting to the various interrupts produced by the the UART block. There are a number of different reasons why a character from the serial connection would not be passed to the application.

I'm guessing that your question relates to: "how can I determine that my application hasn't received a valid character within an expected time frame?"

If this is the case, you have to set up one of the timers to work in parallel with the UART. Perhaps the neatest way to do this would involve designing your application to run on top of an RTOS.

static portTASK_FUNCTION( vUartTask, pvParameters )
{
    char recv;
    for(;;)
    {
        if( xQueueReceive( xUART0RXQueue, &( recv ), timeoutValue ) )
        {
            // process incoming character
        }
        else
        {
            // oops!  - timed out
        }
    } 
}
0 Kudos
Reply