• TI Thinks Resolved

TL16C754C: Data loss when reading data from FIFO

Intellectual 1820 points

Replies: 5

Views: 106

Part Number: TL16C754C

Hi team,

   It is nice to know you here. My customer is evaluating TL16C754C. And they met below issue,

  • The TX data can be received by PC;
  • When PC sending data to this device, such as "11 22 33 44 55 66 77...", and they check LSR register statue every time they read one byte, they can only get"11 61 33 f5 55..."
  • If TL16C554A is used, no issue happen;

Please help look into this issue and find the root cause. Thanks. 

  • Hey Lin,

    What you are likely seeing is a framing error related to the errata for this device:

    The work around is also described in the document above^^

    -Bobby

  • In reply to BOBBY:

    Hi Bobby,

       Thank you for your help here. From our test, we think this is not the bit errata problem. If we do not read register value during reading FIFO data, we can get all the data. The main question is how we make sure that we have read all the data in the FIFO? The main method we use is to read the LSR register to check the statue. 

  • In reply to Lin_Charles:

    Hey Lin,

    Just to confirm, you mean when they read the LSR after they send a byte and then read the byte it's incorrect but if they ignore the LSR (don't read it) until all the data is sent, they get the correct values?

    Also, how many values are they sending maximum (and minimum)?

    Thanks,

    -Bobby

  • In reply to BOBBY:

    Hi Bobby,

       You are right.  No matter how much data sent, the result is the same. However, if TL16C554A is used, no issue happen. So we may need your help to find the root cause.Thanks. 

  • In reply to Lin_Charles:

    Hey Lin,

    MY apologies, I seemed to have overlooked this thread. Are you still having issues with this?

    To answer another question you had, you can check to see if all the bytes from the RX FIFO is read by also checking the RXRDY pin of the device.

    Is it possible to add some delays in your code to read the bytes with more breaks in between? (Maybe wait a few miliseconds before pulling IOR low?)

    Thanks,

    -Bobby