Hello, I'm working to test UART3 of MX535 based on WinCE7, i have used the different pins as RXD and TXD pin on customer board (originally on Freescale board, treat PATA_CS_1 as RXD, and PATA_CS_0 as TXD, now on our customer board, EIM_D25 as RXD, and EIM_D24 as TXD), though I have modifed IOMUX in the file of bspserial.c (changed PATA_CS_1 as EIM_D25, and PATA_CS_0 as EIM_D24), but I still failed, does anyone succeed it and share your experience? Thx.
I am using the MX51 with Linux but this functionality may be similar. I add the following code to the setup_uart() function in mx51_bbg.c in the U-Boot section of LTIB -
mxc_request_iomux(MX51_PIN_EIM_D25, IOMUX_CONFIG_ALT3); // uart3 rx
mxc_iomux_set_pad(MX51_PIN_EIM_D25, pad | PAD_CTL_SRE_FAST);
mxc_request_iomux(MX51_PIN_EIM_D26, IOMUX_CONFIG_ALT3); // uart3 tx
mxc_iomux_set_pad(MX51_PIN_EIM_D26, pad | PAD_CTL_SRE_FAST);
Michael, thanks for comments, we are working with WinCE7 , and Linux is working well when use your similar setting. thanks.
Check Catalog Item, Third Party -> BSP -> Freescale <Target Platform>: ARMV7 -> Device Drivers -> Serial ->
UART3 serial port support
Also, BSP environment variable BSP_SERIAL_UART3 =1
Please remember that UART3 TX pin is used as DEVELOP_MODE_SW pin and RX pin is used as LVDS1 CABC_EN1 function.
More information on the section 23 of the Wince BSP reference manual
Thanks for Bio_TICFSL comment, because UART3 TX pin is used as DEVELOP_MODE_SW pin and RX pin is used as LVDS1_CABC_EN1, so we IOMUX them to EIM_D25 as UART3 RXD pin and EIM_D24 as UART3 TXD bin, and modify IOMUX in bspserial.c file as below:
case CSP_BASE_REG_PA_UART3:
// DCE mode
//DDKIomuxSetPinMux(DDK_IOMUX_PIN_PATA_CS_1, DDK_IOMUX_PIN_MUXMODE_ALT4, DDK_IOMUX_PIN_SION_REGULAR);//RXD
//DDKIomuxSetPadConfig(DDK_IOMUX_PAD_PATA_CS_1, DDK_IOMUX_PAD_SLEW_FAST, DDK_IOMUX_PAD_DRIVE_HIGH, DDK_IOMUX_PAD_OPENDRAIN_DISABLE,DDK_IOMUX_PAD_PULL_UP_100K, DDK_IOMUX_PAD_HYSTERESIS_DISABLE,DDK_IOMUX_PAD_VDOEN_NULL,DDK_IOMUX_PAD_OUTVOLT_NULL);
//DDKIomuxSelectInput(DDK_IOMUX_SELECT_INPUT_UART3_IPP_UART_RXD_MUX, 0x3);
//DDKIomuxSetPinMux(DDK_IOMUX_PIN_PATA_CS_0, DDK_IOMUX_PIN_MUXMODE_ALT4, DDK_IOMUX_PIN_SION_REGULAR);//TXD
//DDKIomuxSetPadConfig(DDK_IOMUX_PAD_PATA_CS_0, DDK_IOMUX_PAD_SLEW_FAST, DDK_IOMUX_PAD_DRIVE_HIGH, DDK_IOMUX_PAD_OPENDRAIN_DISABLE,DDK_IOMUX_PAD_PULL_UP_100K,DDK_IOMUX_PAD_HYSTERESIS_DISABLE,DDK_IOMUX_PAD_VDOEN_NULL,DDK_IOMUX_PAD_OUTVOLT_NULL);
DDKIomuxSetPinMux(DDK_IOMUX_PIN_EIM_D25, DDK_IOMUX_PIN_MUXMODE_ALT2, DDK_IOMUX_PIN_SION_REGULAR);
DDKIomuxSetPadConfig(DDK_IOMUX_PAD_EIM_D25, DDK_IOMUX_PAD_SLEW_FAST, DDK_IOMUX_PAD_DRIVE_HIGH, DDK_IOMUX_PAD_OPENDRAIN_DISABLE,DDK_IOMUX_PAD_PULL_UP_100K,DDK_IOMUX_PAD_HYSTERESIS_DISABLE,DDK_IOMUX_PAD_VDOEN_NULL,DDK_IOMUX_PAD_OUTVOLT_NULL);
DDKIomuxSelectInput(DDK_IOMUX_SELECT_INPUT_UART3_IPP_UART_RXD_MUX, 0x3);
DDKIomuxSetPinMux(DDK_IOMUX_PIN_EIM_D24, DDK_IOMUX_PIN_MUXMODE_ALT2, DDK_IOMUX_PIN_SION_REGULAR);//TXD
DDKIomuxSetPadConfig(DDK_IOMUX_PAD_EIM_D24, DDK_IOMUX_PAD_SLEW_FAST, DDK_IOMUX_PAD_DRIVE_HIGH, DDK_IOMUX_PAD_OPENDRAIN_DISABLE,DDK_IOMUX_PAD_PULL_UP_100K, DDK_IOMUX_PAD_HYSTERESIS_DISABLE,DDK_IOMUX_PAD_VDOEN_NULL,DDK_IOMUX_PAD_OUTVOLT_NULL);
break;
also i set BSP environment varialbe BSP_SERIAL_UART3=1, but UART3 is still not working, and UART1 and UART2 are working well. do you know anywhere else we need modify too? thx.