This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TL16C752B: Error flag [7] of LSR

Hi all,
In Non FIFO mode, when reading the LSR after receiving data, usually the LSR value is 0x61.
However sometimes, the LSR value is 0xA1.
Why is LSR[7] set in spite of no error (PE, FE and  Break)?

Regards,
Toshi


 

  • Hi Toshi

    This device, in this mode, has an small problem with a timing anomaly. This problem only occurs under a special set of circumstances
    (in non-FIFO mode) and can be worked around by using certain timing. When using the non-FIFO (single byte) mode of operation, it is
    possible that valid data could be reported as available by either the line status register (LSR) or the interrupt identification
    register (IIR), before the receiver holding register (RHR) can be read. For more detailed, you can check page 22 in datasheet.
    Your current LSR status is:
    61 01100001 THR and TSR empty|THR empty| Data in receiver
    A1 10100001 Error in Rx FIFO| THR empty| Data in receiver
    If you consider your current configuration, you are not work in FIFO mode, hence I would think that you would have A1 in LSR.

    If possible, please Can you share your current configuration of registers?

    Regards
    Francisco
  • Hi, Francisco-san,
    Thanks for your reply.
    I would like to explain about my customer's condition when the error occurred.
    Before getting 0xA1 of the LSR, FE or PE has occurred in succession.
    And after that, the FIFO error of LSR is reset by resetting FCR [2-1].
    Why is the FIFO error (LSR[7]) occurred in spite of Non-FIFO mode?

    Current configuration of registers are as follows;

    ①IER= 0x7 ; RHR,THR and RXE are on
    ②IIR ; read only
    ③FCR=0x00 ; FIFO disable
    ④LCR=0x1B ; 8bit data + EP + 1ST
    ⑤MCR=0x08 ; Forces the INT(A-B) outputs to the active state
    ⑥SPR=0x00 ; default
    ⑦DLL=0x0A ; set Baud rate 125k
    ⑧DLH=0x00 ;
    ⑨EFR=default
    ⑩XON1 = default
    ⑪XON2 =default
    ⑫XOFF1=default
    ⑬XOFF2=default
    ⑭TCR =default
    ⑮TLR=default
    ⑯FIFOR=default

    Thanks and regards,
    Toshi
  • Hi Toshi-san

    I can see that your current configuration is right, but I recommend you that your customer makes a test following all steps in programmer's guide and set all registers values (all that you said default) as well. This part is important because when you don't set the values, the registers get other values. I also recommend you to take a look into the errata (www.ti.com/.../sllz049.pdf) that it mention with more detailed the problems with this device and the solutions. On the other hand, we have a new version of this device that I recommend you to use (www.ti.com/.../tl16c752d.pdf). In this version you won't have this kind of problems.
    Please, make test and send me your feedback.

    Best Regards
    Francisco