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.

Parents
  • 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?

Reply
  • 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?

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