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.

TL16C754C, not able to receive the data

Hi,

We are using TL16C754CP quad UART chip in auto-RS485 mode. The problem is that we are not able to receive the data (i.e we were able to transmit data and receive data in loop back mode, but with out loop back we are not able to receive data ) . Using an oscilloscope we probed the Rx and DTR/ signals to the UART and both of them are fine. i.e DTR/ is low and we see the receive data appearing on the Rx pin. Our code is as follows

   /*  To set Baud rate to 9600
    */
    Read_comm_board_reg(uart, 3, &lcr_temp);                       // copy LCR value to temp
    Write_comm_board_reg(uart, 3, 0x80);                                 // set LCR to 0X80
    Write_comm_board_reg(uart, 0, 0x48 - REDUCTION);      // Osc is 11.0592 Mhz. Set DLL to 0x48 for 9600 baud. Reduce by 1 to overcome errata issue.
    Write_comm_board_reg(uart, 1, 0x00);                                 //  set DLH to 0x00 for 9600 baud.
    Write_comm_board_reg(uart, 3, lcr_temp);                         //  set LCR value back to temp

    /* set auto RS-485 mode
    */    
    
     Write_comm_board_reg(uart, 3, 0x9D);                               // set LCR to 0X9D for AFR access
     Write_comm_board_reg(uart, 2, 0x04);                               // set AFR to 0x04
     Write_comm_board_reg(uart, 3, 0x03);                               // set LCR value to     Set 8,N,1 data
     Write_comm_board_reg(uart, 4, 0x0);                                 // set MCR to NORMAL mode
    
     /*  Clear Fifos (both Tx and Rx). */

     Write_comm_board_reg(uart, 2, 0x06);                               // Clear Tx and Rx FIFOs
     Write_comm_board_reg(uart, 2, 0x00);                               // Disable FIFO mode and select DMA mode 0.
     Write_comm_board_reg(uart, 4, 0x08);                               // Enable irq  bit of MCR
     Write_comm_board_reg(uart, 1, 0x0F);                               // Enable all interrupts
    
Am I missing something in the register configuration?

Regards,

Rajdinesh.S.R

  • Hello Rajdinesh,

    UART support has moved to the Consumer and Computing group. I will loop in Diego Cortes to help with this issue.

    Are you initializining all four (4) UART channels? From your code above it does not appear that you are enabling/configuring all four channels and setting the baud rate for all channels.

    Best Regards,

    Joe