This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

LPC4357 UART Example

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.

  • Thanks for your answer!

    I tried running these examples, but they didn't work :(

    Do you have a simpler code? I'm using LPC4357-EVB kit.

  • It would be better if you can detail what does not work ?

  • Sorry, my mistake.

    This example prints a menu in which you choose the UART mode (DMA, Interrupt or polling).

    I can build and successfully load it in the LPC4357-EVB kit, but no menu is printed when I boot the board. I also visualized the UART signal with an oscilloscope, but there is no waveform.

    Am I missing some configuration?

  • You need to define something about your LPC4357-EVB in the mentioned source code.

       33 #include "chip.h"
       34 #include "board.h"
       35
       68 /*****************************************************************************
       69  * Private types/enumerations/variables
       70  ****************************************************************************/
       71 #if defined(BOARD_HITEX_EVA_18504350)
       72 #define UARTNum 0
       73
       74 #elif defined (BOARD_KEIL_MCB_18574357)
       75 #define UARTNum 3
       76
       77 #elif defined (BOARD_NGX_XPLORER_18304330)
       78 #define UARTNum 0
       79
       80 #else
       81 #error No UART selected for undefined board
       82 #endif
    

  • Thanks for your answer!!

    I added the define to configure the board, but the result is the same.

    Can I use this code in the LPC4357-EVB kit? There are only configurations for another boards.

  • -> I added the define to configure the board, but the result is the same.

    How did you add that? Show me your source code.

    Can I use this code in the LPC4357-EVB kit?

    Yes, you can.

  • 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.