Hi,
I wan't to use UART3 instead of UART0 on starterware but it doesn't work.
First thing, I replace in uartConsole.c init function
void UARTConsoleInit(void) { /* Configuring the system clocks for UART3 instance. */ UART3ModuleClkConfig(); /* Performing the Pin Multiplexing for UART3 instance. */ UARTPinMuxSetup(3); UARTStdioInitExpClk(BAUD_RATE_115200, 1, 1); }
Second, I change mux pins in Uart.c
void UARTPinMuxSetup(unsigned int instanceNum) { if(0 == instanceNum) { /* RXD */ HWREG(SOC_CONTROL_REGS + CONTROL_CONF_UART_RXD(0)) = (CONTROL_CONF_UART0_RXD_CONF_UART0_RXD_PUTYPESEL | CONTROL_CONF_UART0_RXD_CONF_UART0_RXD_RXACTIVE); /* TXD */ HWREG(SOC_CONTROL_REGS + CONTROL_CONF_UART_TXD(0)) = CONTROL_CONF_UART0_TXD_CONF_UART0_TXD_PUTYPESEL; } if(3 == instanceNum) { /* RXD */ HWREG(SOC_CONTROL_REGS + CONTROL_CONF_SPI0_CS1) = (CONTROL_CONF_UART3_RXD_CONF_UART3_RXD_PUTYPESEL | CONTROL_CONF_UART3_RXD_CONF_UART3_RXD_RXACTIVE); /* TXD */ HWREG(SOC_CONTROL_REGS + CONTROL_CONF_ECAP0_IN_PWM0_OUT) = CONTROL_CONF_UART3_TXD_CONF_UART3_TXD_PUTYPESEL; } }
Other I make a new function for clock config
void UART3ModuleClkConfig(void) { HWREG(SOC_CM_PER_REGS + CM_PER_L3S_CLKSTCTRL) = CM_PER_L3S_CLKSTCTRL_CLKTRCTRL_SW_WKUP; while((HWREG(SOC_CM_PER_REGS + CM_PER_L3S_CLKSTCTRL) & CM_PER_L3S_CLKSTCTRL_CLKTRCTRL) != CM_PER_L3S_CLKSTCTRL_CLKTRCTRL_SW_WKUP); HWREG(SOC_CM_PER_REGS + CM_PER_L3_CLKSTCTRL) = CM_PER_L3_CLKSTCTRL_CLKTRCTRL_SW_WKUP; while((HWREG(SOC_CM_PER_REGS + CM_PER_L3_CLKSTCTRL) & CM_PER_L3_CLKSTCTRL_CLKTRCTRL) != CM_PER_L3_CLKSTCTRL_CLKTRCTRL_SW_WKUP); HWREG(SOC_CM_PER_REGS + CM_PER_L3_INSTR_CLKCTRL) = CM_PER_L3_INSTR_CLKCTRL_MODULEMODE_ENABLE; while((HWREG(SOC_CM_PER_REGS + CM_PER_L3_INSTR_CLKCTRL) & CM_PER_L3_INSTR_CLKCTRL_MODULEMODE) != CM_PER_L3_INSTR_CLKCTRL_MODULEMODE_ENABLE); HWREG(SOC_CM_PER_REGS + CM_PER_L3_CLKCTRL) = CM_PER_L3_CLKCTRL_MODULEMODE_ENABLE; while((HWREG(SOC_CM_PER_REGS + CM_PER_L3_CLKCTRL) & CM_PER_L3_CLKCTRL_MODULEMODE) != CM_PER_L3_CLKCTRL_MODULEMODE_ENABLE); HWREG(SOC_CM_PER_REGS + CM_PER_OCPWP_L3_CLKSTCTRL) = CM_PER_OCPWP_L3_CLKSTCTRL_CLKTRCTRL_SW_WKUP; while((HWREG(SOC_CM_PER_REGS + CM_PER_OCPWP_L3_CLKSTCTRL) & CM_PER_OCPWP_L3_CLKSTCTRL_CLKTRCTRL) != CM_PER_OCPWP_L3_CLKSTCTRL_CLKTRCTRL_SW_WKUP); HWREG(SOC_CM_PER_REGS + CM_PER_L4LS_CLKSTCTRL) = CM_PER_L4LS_CLKSTCTRL_CLKTRCTRL_SW_WKUP; while((HWREG(SOC_CM_PER_REGS + CM_PER_L4LS_CLKSTCTRL) & CM_PER_L4LS_CLKSTCTRL_CLKTRCTRL) != CM_PER_L4LS_CLKSTCTRL_CLKTRCTRL_SW_WKUP); HWREG(SOC_CM_PER_REGS + CM_PER_L4LS_CLKCTRL) = CM_PER_L4LS_CLKCTRL_MODULEMODE_ENABLE; while((HWREG(SOC_CM_PER_REGS + CM_PER_L4LS_CLKCTRL) & CM_PER_L4LS_CLKCTRL_MODULEMODE) != CM_PER_L4LS_CLKCTRL_MODULEMODE_ENABLE); HWREG(SOC_CM_PER_REGS + CM_PER_UART3_CLKCTRL) &= ~CM_PER_UART3_CLKCTRL_MODULEMODE; HWREG(SOC_CM_PER_REGS + CM_PER_UART3_CLKCTRL) |= CM_PER_UART3_CLKCTRL_MODULEMODE_ENABLE; while((HWREG(SOC_CM_PER_REGS + CM_PER_UART3_CLKCTRL) & CM_PER_UART3_CLKCTRL_MODULEMODE) != CM_PER_UART3_CLKCTRL_MODULEMODE_ENABLE); while(!(HWREG(SOC_CM_PER_REGS + CM_PER_L3S_CLKSTCTRL) & CM_PER_L3S_CLKSTCTRL_CLKACTIVITY_L3S_GCLK)); while(!(HWREG(SOC_CM_PER_REGS + CM_PER_L3_CLKSTCTRL) & CM_PER_L3_CLKSTCTRL_CLKACTIVITY_L3_GCLK)); while(!(HWREG(SOC_CM_PER_REGS + CM_PER_OCPWP_L3_CLKSTCTRL) & (CM_PER_OCPWP_L3_CLKSTCTRL_CLKACTIVITY_OCPWP_L3_GCLK | CM_PER_OCPWP_L3_CLKSTCTRL_CLKACTIVITY_OCPWP_L4_GCLK))); while(!(HWREG(SOC_CM_PER_REGS + CM_PER_L4LS_CLKSTCTRL) & (CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_L4LS_GCLK | CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_UART_GFCLK))); /*UART3 IDLEST*/ while((CM_PER_UART3_CLKCTRL_IDLEST_FUNC << CM_PER_UART3_CLKCTRL_IDLEST_SHIFT) != (HWREG(SOC_CM_PER_REGS + CM_PER_UART3_CLKCTRL) & CM_PER_UART3_CLKCTRL_IDLEST)); }
And I change base UART in uartconsole.c
#define UART_CONSOLE_BASE (SOC_UART_3_REGS)
I have nothing on tx with scope.
I forget something ?
Thanks