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.

AM335x ICE UART4 sends but doesn't receive

Hi,

In a previous thread e2e.ti.com/.../382121 the code and pin muxing for UART4 was detailed.
Using that code and the uartecho example and setting the uart to 4 instead of 3 the program runs and outputs data to UART4. But it will not receive.

Using uart3 the example runs and does get input.  I also observe in detail the UART's being initialized in plat_uart.c.  The code here is identical for any UART, the only difference is that a different base address is used depending on the UART.  Both UART4 and UART3 are set up identically.  

UART3 0x481A6000

UART4 0x481A8000

After UART initialization on UART3 I see interrupts for both transmit and receive.  But on UART4 I don't get any receive interrupts. The only thing I can think of is I don't have the MUX correct.

The MUX settings for UART4 are:

// RX mode FAST RX PUllUP & Disabled Mode 1 See Ref Manual section 9.3.51
// 0 1 1 0 01
// 0x019
#define UART4_RX_MODE1 (0x0000019u)
// TX mode FAST TX Pullup & Disabled Mode 1
// 0 0 1 0 01
// 0x9
#define UART4_TX_MODE1 (0x000009u)

/* Pin Mux for UART4_RX Pin */
HWREG(SOC_CONTROL_REGS + CONTROL_CONF_UART_CTSN(0)) = UART4_RX_MODE1

/* Pin Mux for UART4 TX Pin */
HWREG(SOC_CONTROL_REGS + CONTROL_CONF_UART_RTSN(0)) = UART4_TX_MODE1;

The interrupts are setup identically and the TX interrupt works on both, only the UART4 receive doesn't work.


case 3:
/* Enabling the specified UART interrupts. */
UARTIntEnable(SOC_UART_3_REGS, (UART_INT_LINE_STAT | UART_INT_THR |
UART_INT_RHR_CTI));
break;

case 4:
/* Enabling the specified UART interrupts. */
UARTIntEnable(SOC_UART_4_REGS, (UART_INT_LINE_STAT | UART_INT_THR |
UART_INT_RHR_CTI));
break;

Finally observing the UART registers directly I do not see any characters being received and this leads me to suspect the MUXing but that seems to agree with other examples I have seen in this discussion.

Any suggestions ?

--jim schimpf