Any ideas on what I am missing to get UART2 to work? I believe I have modified the following three functions correctly to get UART2 working. Is there some other clock I need to enable? This is on my own board that is wired to use UART2 ---- this is not EVM or Beagle
UART0ModuleClkConfig
UARTPinMuxSetup
UARTStdioInitExpClk
Thanks
Turns out that CONTROL_CONF_UART_RXD(n) and CONTROL_CONF_UART_TXD(n) don't give the correct offset for UART2 and UART3. Have to use the offsets
CONTROL_CONF_MII1_TXCLK
CONTROL_CONF_MII1_RXCLK
CONTROL_CONF_MII1_RXD2
CONTROL_CONF_MII1_RXD3
Hello Brad,
I see that you have targeted the right functions to change to port to UART2 instance. I suppose you are referring to these two files:
The changes that need to be made are:
This function has to be ported to UART2 instance. Note that UART0 is in Wake-up domain and UART2 is in Peripheral domain. You have to refer to Control Module chapter in AM335x TRM to find the registers relevant to UART2 and set the appropriate bits.
As it is obvious, the StaterWare package has not provided the code to pin multiplex UART2 pins. The UART2 pins namely UART2_TXD and UART2_RXD are available on different pins and in different Mux modes. The offset addresses of each of these pins are different.
To give you an example:
‘uart2_rxd_mux2’ and ‘uart2_txd_mux2’ pins are available with offset addresses 0x0900 and 0x0904 respectively. The multiplexing mode is Mode3.
‘uart2_rxd_mux1’ and ‘uart2_txd_mux1’ pins are available with offset addresses 0x090C and 0x0910 respectively. The multiplexing mode is Mode6.
You have carefully do the correct pin multiplexing.
This function need not be changed. The file ‘uartConsole.c’ mentioned above uses the UART0 Base address for the various UART functions.
#define UART_CONSOLE_BASE (SOC_UART_0_REGS)
You have to change the right-hand macro to SOC_UART_2_REGS to use UART2 registers.
Please revert if you have any queries.
Thanks and Regards.
Gurudutt.