Hi,
Here is how I set TX-RX trigger levels , please suggest me if something wrong here as I am not getting the trigger level RHR inerrupt :
RX :
/// To write to FCR[5:4] , need to enable UART_EFR[4] = 1
/// Set configuration Mode B = (OFS_LINE_CONTROL = 0xbf) to enable config to UART_EFR register
store_lcr_reg_val = SIB_DIAG_UART_READ(OFS_LINE_CONTROL);
SIB_DIAG_UART_WRITE(OFS_LINE_CONTROL,(SIB_DIAG_UART_READ(OFS_LINE_CONTROL)| 0xBF));
/// enable special character detect with ENHANCED_EN_ENABLE bit in Enhanced feature register (EFR[5])
SIB_DIAG_UART_WRITE(OFS_UART_EFR,(SIB_DIAG_UART_READ(OFS_UART_EFR)| EFR_ENHANCED_EN_ENABLE));
read_efr_reg = (SIB_DIAG_UART_READ(OFS_UART_EFR));
/// operational Mode ,OFS_MODEM_CONTROL[6] to enable access to TLR register
SIB_DIAG_UART_WRITE(OFS_LINE_CONTROL,store_lcr_reg_val);
store_mcr_reg = SIB_DIAG_UART_READ(OFS_MODEM_CONTROL);
SIB_DIAG_UART_WRITE(OFS_MODEM_CONTROL,(SIB_DIAG_UART_READ(OFS_MODEM_CONTROL)| 0x40));
/// go back to configuration mode B
SIB_DIAG_UART_WRITE(OFS_LINE_CONTROL,(SIB_DIAG_UART_READ(OFS_LINE_CONTROL)| 0xBF));
switch(triggerLevelMethod) {
case 1:
/// To set rigger level =8, UART_SCR[7] =0 and UART_TLR[7:4]=0 and UART_FCR[6:7]=00
SIB_DIAG_UART_WRITE(OFS_UART_SCR, SIB_DIAG_UART_READ(OFS_UART_SCR) & UART_RXFIFO_TRIGGERLEVEL_M1_SET_SCR);
SIB_DIAG_UART_WRITE(OFS_UART_TLR, SIB_DIAG_UART_READ(OFS_UART_TLR) | UART_RXFIFO_TRIGGERLEVEL_M1_SET_TLR);
/// Restore MCR and LCR, thus operational Mode
SIB_DIAG_UART_WRITE(OFS_LINE_CONTROL,store_lcr_reg_val);
SIB_DIAG_UART_WRITE(OFS_MODEM_CONTROL,store_mcr_reg);
/// FCR can be writtern in operational Mode or in configuration mode A
SIB_DIAG_UART_WRITE(OFS_FIFO_CONTROL, SIB_DIAG_UART_READ(OFS_FIFO_CONTROL) & UART_RXFIFO_TRIGGERLEVEL_M1_SET_FCR);
//printf(" TLR = %x,read_efr_reg = %x,MCR =%x \n",SIB_DIAG_UART_READ(OFS_UART_TLR),read_efr_reg,SIB_DIAG_UART_READ(OFS_MODEM_CONTROL));
break;
case 2:
/// To set rigger level =8, UART_SCR[7] =0 and UART_TLR[4:7]=1000
SIB_DIAG_UART_WRITE(OFS_UART_SCR, SIB_DIAG_UART_READ(OFS_UART_SCR) & UART_RXFIFO_TRIGGERLEVEL_M1_SET_SCR);
SIB_DIAG_UART_WRITE(OFS_UART_TLR, SIB_DIAG_UART_READ(OFS_UART_TLR) | UART_RXFIFO_TRIGGERLEVEL_M2_SET_TLR);
/// Restore MCR and LCR, thus operational Mode
SIB_DIAG_UART_WRITE(OFS_LINE_CONTROL,store_lcr_reg_val);
SIB_DIAG_UART_WRITE(OFS_MODEM_CONTROL,store_mcr_reg);
break;
}