Hello,
Does anybody have an example using the UART of LPC4357? I'm searching but with no success.
Any tip will be very helpful, Thanks.
To use UART3, i added this define before the board configuration:
#define BOARD_KEIL_MCB_18574357 #if defined(BOARD_HITEX_EVA_18504350) #define UARTNum 0 #elif defined (BOARD_KEIL_MCB_18574357) #define UARTNum 3 #elif defined (BOARD_NGX_XPLORER_18304330) #define UARTNum 0
Is that right?
I connected a USB-TTL converter to J12 pins to watch the data: www.element14.com/.../pastedImage_1.png
Looks right.
But you still need to check something like:
/* Initialize UART pins */ void Board_UART_Init(LPC_USART_T *pUART) { if (pUART == LPC_USART0) { Chip_SCU_PinMuxSet(0x2, 0, (SCU_MODE_PULLDOWN | SCU_MODE_FUNC1)); /* P2.0 : UART0_TXD */ Chip_SCU_PinMuxSet(0x2, 1, (SCU_MODE_INACT | SCU_MODE_INBUFF_EN | SCU_MODE_ZIF_DIS | SCU_MODE_FUNC1)); /* P2.1 : UART0_RXD */ } else if (pUART == LPC_USART3) { Chip_SCU_PinMuxSet(0x2, 3, (SCU_MODE_PULLDOWN | SCU_MODE_FUNC2)); /* P2.3 : UART3_TXD */ Chip_SCU_PinMuxSet(0x2, 4, (SCU_MODE_INACT | SCU_MODE_INBUFF_EN | SCU_MODE_ZIF_DIS | SCU_MODE_FUNC2)); /* P2.4 : UART3_RXD */ } }
Do you use P2.3 and P2.4?
That was my mistake! Thanks!
I was trying to use UART3 in P2_3 and P2_4, but they are connected to a USB port. The UART3 pins in the jumper of the kit are P9_3 and P9_4. Do you know how can I change the code so they work with the right pins?
-> change the code so they work with the right pins Sounds like it is your work.
But I can do that for you later when I have some time.
/** * SCU function and mode selection definitions * See the User Manual for specific modes and functions supoprted by the * various LPC18xx/43xx devices. Functionality can vary per device. */ #define SCU_MODE_PULLUP (0x0 << 3) /*!< Enable pull-up resistor at pad */ #define SCU_MODE_REPEATER (0x1 << 3) /*!< Enable pull-down and pull-up resistor at resistor at pad (repeater mode) */ #define SCU_MODE_INACT (0x2 << 3) /*!< Disable pull-down and pull-up resistor at resistor at pad */ #define SCU_MODE_PULLDOWN (0x3 << 3) /*!< Enable pull-down resistor at pad */ #define SCU_MODE_HIGHSPEEDSLEW_EN (0x1 << 5) /*!< Enable high-speed slew */ #define SCU_MODE_INBUFF_EN (0x1 << 6) /*!< Enable Input buffer */ #define SCU_MODE_ZIF_DIS (0x1 << 7) /*!< Disable input glitch filter */ #define SCU_MODE_4MA_DRIVESTR (0x0 << 8) /*!< Normal drive: 4mA drive strength */ #define SCU_MODE_8MA_DRIVESTR (0x1 << 8) /*!< Medium drive: 8mA drive strength */ #define SCU_MODE_14MA_DRIVESTR (0x2 << 8) /*!< High drive: 14mA drive strength */ #define SCU_MODE_20MA_DRIVESTR (0x3 << 8) /*!< Ultra high- drive: 20mA drive strength */ #define SCU_MODE_FUNC0 0x0 /*!< Selects pin function 0 */ #define SCU_MODE_FUNC1 0x1 /*!< Selects pin function 1 */ #define SCU_MODE_FUNC2 0x2 /*!< Selects pin function 2 */ #define SCU_MODE_FUNC3 0x3 /*!< Selects pin function 3 */ #define SCU_MODE_FUNC4 0x4 /*!< Selects pin function 4 */ #define SCU_MODE_FUNC5 0x5 /*!< Selects pin function 5 */ #define SCU_MODE_FUNC6 0x6 /*!< Selects pin function 6 */ #define SCU_MODE_FUNC7 0x7 /*!< Selects pin function 7 */ #define SCU_PINIO_FAST (SCU_MODE_INACT | SCU_MODE_HIGHSPEEDSLEW_EN | SCU_MODE_INBUFF_EN | SCU_MODE_ZIF_DIS)
/** * @brief Sets I/O Control pin mux * @param port : Port number, should be: 0..15 * @param pin : Pin number, should be: 0..31 * @param modefunc : OR'ed values or type SCU_MODE_* * @return Nothing * @note Do not use for clock pins (SFSCLK0 .. SFSCLK4). Use * Chip_SCU_ClockPinMux() function for SFSCLKx clock pins. */ STATIC INLINE void Chip_SCU_PinMuxSet(uint8_t port, uint8_t pin, uint16_t modefunc) { LPC_SCU->SFSP[port][pin] = modefunc; }
P9_3 -> SCU_MODE_FUNC7 -> U3_TXD — Transmitter output for USART3. P9_4 -> SCU_MODE_FUNC7 -> U3_RXD — Receiver input for USART3.
Thanks for your help! It finally worked.
The example was right, but I was using the wrong UART pins. I had to change the pinmux configuration as you said.