PSoC5 UART RTS Flow Control

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Anonymous
Not applicable

 I am wondering about the Request To Send (RTS) output from the UART component.

   

The data sheet says it is de-asserted when the input buffer is full, but it doesn't say when it is re-asserted; does anyone know?

   

This is related to a bigger issue that may warrent an enhancement to the UART Component...

   

If the device that I am trying to hold off still sends the byte in progress, or maybe even a couple more, before it can honor the RTS line, then I miss those bytes. For an experiment I am going to manually control RTS to de-assert when the buffer is 80% full.

   

If the device that I am receiving from has some delay before starting again (assuming RTS is re-asserted when the buffer is empty) then I timeout on no data input. For my experiment I will re-assert RTS when the buffer is 20% full.

   

Any thoughts on this will be appreciated.

   

- Jim

0 Likes
1 Solution
Bob_Marlowe
Level 10
Level 10
First like given 50 questions asked 10 questions asked

Jim-

   

In UART datasheet on page 46 you can see in the timing-diagrams that rts_n is directly coupled to FIFO full and it will be de-asserted as soon as there is room in the buffer for at least one byte.

   

Since you are in PSoC5 world it is easy to gate the rts_n signal with some logic and a control register to meet the timing with the needs of your sending device.

   

 

   

Bob

View solution in original post

0 Likes
3 Replies
Bob_Marlowe
Level 10
Level 10
First like given 50 questions asked 10 questions asked

Jim-

   

In UART datasheet on page 46 you can see in the timing-diagrams that rts_n is directly coupled to FIFO full and it will be de-asserted as soon as there is room in the buffer for at least one byte.

   

Since you are in PSoC5 world it is easy to gate the rts_n signal with some logic and a control register to meet the timing with the needs of your sending device.

   

 

   

Bob

0 Likes
Anonymous
Not applicable

Thanks for the note, Bob.

   

What I did was to gate the signal like you suggeste, but controlled by software; when the buffer gets almost full, I tell the sender to stop.

   

This works great, but after some more playing it appears that I was having another problem that was the true source of difficulty, and maybe I don't need the software control.

   

However, it works so nice the way it is, I am disinclined to change it... 😉

0 Likes
Bob_Marlowe
Level 10
Level 10
First like given 50 questions asked 10 questions asked

Thank you for your feedback, you are always welcome.

   

 

   

Bob

0 Likes