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.

P/N TL16C750, UART, setting the 64 byte FIFO enable (FCR register bit 5)

I have reviewed the datasheet regarding wetting this part into 64 byte FIFO mode.  We are polling the part, and the baud is 115.2k, 1 start, no parity 2 stop, and 8 data.

Our code currently has LCR MSB=0 before these two writes to FCR:

FCR = 0xF1

1msec delay

FCR = 0xF7

When reading back FCR we read 0xC1, so bit 5 is not set when LCR MSB = 0

on page 23 of datasheet: Access to FCR bit 5 require LCR bit 7 = 1, on page 24, in Bit 5: A write to FCR bit 5 is protected by setting the line control register(LCR) bit7  = 1.  This is ambiguous.  

I have also tried:

LCR = 0x80

FCR = 0x1

FCR = 0x21

then used the existing code

LCR = 7

FCR = 0xF1

1msec delay

FCR = 0xF7

But again bit 5 is not set.  Is the FCR register able to read all the bits, because what was read back was 0x12.

 

Please advise to the correct procedure to writing to this register, reading it, and especially setting bit 5.

Thanks,

 

 

 

 

 

 

 

 

 

  • Hello,

    You might select 64-byte mode as shown in the example below:

    outportb(LCR_UART1, 0x80); /* Enable divisor access */
    outportb(DLL_UART1, 0x01); /* Set div to F */
    outportb(DLM_UART1, 0x00);
    outportb(FCR_UART1, 0xE7); /* Set 64 byte mode */
    outportb(LCR_UART1, 0x03); /* Set 8,N,1 data */

    Then, by reading the IIR register you can verify that 64-byte mode is chosen. Bits 5, 6, and 7 should be enabled.

    Regards,
    Joel

  • Then I need to change when the baud rate config happens, which should be downstream from

    the above, np.

     

    I'll give it a shot. 

     

    Where in the data sheet does it mention that LSB of DLL needs to be set also?