Hi,
On our i.mx6DL based design, we have the following IOMUX settings for UART2:
UART2_RX ----> goes to PAD SD4_DAT4
UART2_TX ----> goes to PAD SD4_DAT7
The routing from signal to pad is easy...just set the following MUX registers:
37.3.208 Pad Mux Register (IOMUXC_SW_MUX_CTL_PAD_SD4_DATA4) ---> ALT2
and
37.3.211 Pad Mux Register (IOMUXC_SW_MUX_CTL_PAD_SD4_DATA7) --->. ALT2
So far so good.
Now, since these two signals (UART2_RX and UART2_TX) can be driven by different PADs, we need to use a select input register. The problem is that there is a UNIQUE input register for the two signals. Specifically:
IOMUXC_UART2_UART_RX_DATA_SELECT_INPUT (section 37.3.572 in the user manual) (See picture)
So how can we correctly select the input for these two signals?
Thanks a lot
-jf simon
Solved! Go to Solution.
Refer to iMX6 Reference Manual 35.2.3 "Daisy Chain". IOMUX_INPUT register is used to select a particular source for a function module input. In this case, RXD of UART2. It is confusing that IOMUX_INPUT provides selection to choose TXD as input source. This is only used for loop-back test. So in your case, configure 110 to select SD4_DAT4 as UART2 RXD input will work fine.
It is more confusing for RTS/CTS, because iMX6 (and iMX5) defines RTS as input and CTS as output, which is usually used in opposite way (in fact iMX28 defines RTS as output, CTS as input).
Refer to iMX6 Reference Manual 35.2.3 "Daisy Chain". IOMUX_INPUT register is used to select a particular source for a function module input. In this case, RXD of UART2. It is confusing that IOMUX_INPUT provides selection to choose TXD as input source. This is only used for loop-back test. So in your case, configure 110 to select SD4_DAT4 as UART2 RXD input will work fine.
It is more confusing for RTS/CTS, because iMX6 (and iMX5) defines RTS as input and CTS as output, which is usually used in opposite way (in fact iMX28 defines RTS as output, CTS as input).
Hi Yuji,
Thanks a lot for y answer
-jfs