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.

TL16C754B FIFO mode issue

Other Parts Discussed in Thread: TL16C754B

I have issue FIFO mode operation for TL16C754B

The issue is next:

Nevertheless which threshold level is set  the !RXRDY signal is going to low directly after first byte has received. 

Does anybody met such behaviour?

Below there is the short description of the initial condition:
    a) Supply power = 3.3V
    b) Clock is determined by Crystal oscillator with frequency 14.7456MHz
    c) Baudrate 115.2kbps
    d) there is loop between chanel A(Tx) and channel B (Rx)
    e) !RTS  and !CTS signals are not used

The initialization code is next:

LCR=0x80        // enable divisor latch
DLL=0x08        // baud rate 115 200 bpsс
DLH=0
LCR=0x1B        // 8N1, even parity control
IER=0x01        // RX data available - interrupt
MCR=0x0С        // IRQ enable, FIFO ready enable
FCR=0x0F        // Reset Rx & Tx FIFO
FCR=0x09        // DMA mode select, FIFO enable


LCR=0xBF        // EFR enable
EFR=0x10        // Enable enhanced functions
LCR=0
MCR=0x4С        // TCR & TLR enable
TLR=0x10        // TLR value – RX threshold level 4byte
LCR=0xBF        // EFR enable
EFR=0           // Enhanced functions disable
LCR=0x1B        // 8N1, even parity control
MCR=0x0С        // IRQ enable, FIFO ready enable

 

 

  • Hello Oleksiy,

    I will look in to this FIFO issue. It will take a couple of days to get the test set up and see if I can reproduce the problem.

    Best Regards,

    Joe

  • Hello Oleksiy,

    the TCR register is accessible only when EFR[4] = 1 and MCR[6] = 1. In the initialization code it appears they enable the EFR write a '1' to bit 4, then disable the EFR by writing 0x00 back to the LCR. After doing this, the TCR register is not accessible and any write to the TCR fails:

     

    LCR=0xBF        // EFR enable
    EFR=0x10        // Enable enhanced functions
    LCR=0

     

    Best Regards,

    Joe

  • Hello Joe,

    I'm afraid that I not fully understand you or this mean that there is some mistype in the data sheet

    The code which is  mentioned above is made according to the "TL16C754B Programmer's Guide" :

    Set xmt and rcv FIFO thresholds to VALUE:

     Read LCR (03), save in temp1
    Set LCR (03) to BF
    Read EFR (02), save in temp2
    Set EFR (02) to 10 + temp2
    Set LCR (03) to 00
    Read MCR (04), save in temp3
    Set MCR (04) to 40 + temp3

    Set TLR (07) to VALUE
    Set LCR (03) to BF
    Set EFR (02) to temp2
    Set LCR (03) to temp1
    Set MCR (04) to temp3

    Am I understand you correctly that set of the MCR register should be before  set LCR =0? In this case do you know why we need to reset LCR register in the given initialization sequence.

    Am I correct that we could change sequence in the data sheet to the next one without intermediate  "Set LCR (03) to 00" and "Set LCR (03) to BF" rows:

     Read LCR (03), save in temp1
    Set LCR (03) to BF
    Read EFR (02), save in temp2
    Set EFR (02) to 10 + temp2
    Set LCR (03) to 00
    Read MCR (04), save in temp3
    Set MCR (04) to 40 + temp3
    Set TLR (07) to VALUE
    Set LCR (03) to BF
    Set EFR (02) to temp2
    Set LCR (03) to temp1
    Set MCR (04) to temp3

    best regards,

    Oleksiy