From eaace297dc6fcbc66d9cad54e13692c492a7ef8f Mon Sep 17 00:00:00 2001 From: Mahesh Mahadevan Date: Thu, 1 Aug 2019 13:49:27 -0500 Subject: [PATCH] MCUXpresso: Provide an API to wait till TX complete Wait till the data is flushed out of TX buffer Signed-off-by: Mahesh Mahadevan --- .../TARGET_MCUXpresso_MCUS/TARGET_K66F/serial_api.c | 10 ++++++++++ .../TARGET_MCUXpresso_MCUS/TARGET_K82F/serial_api.c | 10 ++++++++++ .../TARGET_MCUXpresso_MCUS/TARGET_KL27Z/serial_api.c | 10 ++++++++++ .../TARGET_MCUXpresso_MCUS/TARGET_KL43Z/serial_api.c | 10 ++++++++++ .../TARGET_MCUXpresso_MCUS/TARGET_KL82Z/serial_api.c | 10 ++++++++++ .../TARGET_MCUXpresso_MCUS/TARGET_KW24D/serial_api.c | 10 ++++++++++ .../TARGET_MCUXpresso_MCUS/TARGET_KW41Z/serial_api.c | 10 ++++++++++ .../TARGET_MCU_K22F/serial_api.c | 10 ++++++++++ .../TARGET_MCU_K24F/serial_api.c | 10 ++++++++++ .../TARGET_MCU_K64F/serial_api.c | 10 ++++++++++ .../TARGET_MCUXpresso_MCUS/TARGET_IMX/serial_api.c | 10 ++++++++++ 11 files changed, 110 insertions(+) diff --git a/targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_K66F/serial_api.c b/targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_K66F/serial_api.c index c8f38964c0..ff3fa9256c 100644 --- a/targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_K66F/serial_api.c +++ b/targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_K66F/serial_api.c @@ -340,4 +340,14 @@ const PinMap *serial_rts_pinmap() return PinMap_UART_RTS; } +void serial_wait_tx_complete(uint32_t uart_index) +{ + UART_Type *base = uart_addrs[uart_index]; + + /* Wait till data is flushed out of transmit buffer */ + while (!(kUART_TransmissionCompleteFlag & UART_GetStatusFlags((UART_Type *)base))) + { + } +} + #endif diff --git a/targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_K82F/serial_api.c b/targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_K82F/serial_api.c index 8f6332296c..eab2c000bb 100644 --- a/targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_K82F/serial_api.c +++ b/targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_K82F/serial_api.c @@ -332,4 +332,14 @@ const PinMap *serial_rts_pinmap() return PinMap_UART_RTS; } +void serial_wait_tx_complete(uint32_t uart_index) +{ + LPUART_Type *base = uart_addrs[uart_index]; + + /* Wait till data is flushed out of transmit buffer */ + while (!(kLPUART_TransmissionCompleteFlag & LPUART_GetStatusFlags((LPUART_Type *)base))) + { + } +} + #endif diff --git a/targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_KL27Z/serial_api.c b/targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_KL27Z/serial_api.c index 8500a29d9e..6eb9daa682 100644 --- a/targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_KL27Z/serial_api.c +++ b/targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_KL27Z/serial_api.c @@ -288,4 +288,14 @@ const PinMap *serial_rts_pinmap() return PinMap_UART_RTS; } +void serial_wait_tx_complete(uint32_t uart_index) +{ + LPUART_Type *base = uart_addrs[uart_index]; + + /* Wait till data is flushed out of transmit buffer */ + while (!(kLPUART_TransmissionCompleteFlag & LPUART_GetStatusFlags((LPUART_Type *)base))) + { + } +} + #endif diff --git a/targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_KL43Z/serial_api.c b/targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_KL43Z/serial_api.c index 3deee1e332..bdd325dd8f 100644 --- a/targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_KL43Z/serial_api.c +++ b/targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_KL43Z/serial_api.c @@ -300,4 +300,14 @@ const PinMap *serial_rts_pinmap() return PinMap_UART_RTS; } +void serial_wait_tx_complete(uint32_t uart_index) +{ + LPUART_Type *base = uart_addrs[uart_index]; + + /* Wait till data is flushed out of transmit buffer */ + while (!(kLPUART_TransmissionCompleteFlag & LPUART_GetStatusFlags((LPUART_Type *)base))) + { + } +} + #endif diff --git a/targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_KL82Z/serial_api.c b/targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_KL82Z/serial_api.c index dd4a672fbd..d87ed1cc53 100644 --- a/targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_KL82Z/serial_api.c +++ b/targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_KL82Z/serial_api.c @@ -328,4 +328,14 @@ const PinMap *serial_rts_pinmap() return PinMap_UART_RTS; } +void serial_wait_tx_complete(uint32_t uart_index) +{ + LPUART_Type *base = uart_addrs[uart_index]; + + /* Wait till data is flushed out of transmit buffer */ + while (!(kLPUART_TransmissionCompleteFlag & LPUART_GetStatusFlags((LPUART_Type *)base))) + { + } +} + #endif diff --git a/targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_KW24D/serial_api.c b/targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_KW24D/serial_api.c index c890abb224..7d916d2cc6 100644 --- a/targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_KW24D/serial_api.c +++ b/targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_KW24D/serial_api.c @@ -327,4 +327,14 @@ void serial_set_flow_control(serial_t *obj, FlowControl type, PinName rxflow, Pi #endif +void serial_wait_tx_complete(uint32_t uart_index) +{ + UART_Type *base = uart_addrs[uart_index]; + + /* Wait till data is flushed out of transmit buffer */ + while (!(kUART_TransmissionCompleteFlag & UART_GetStatusFlags((UART_Type *)base))) + { + } +} + #endif diff --git a/targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_KW41Z/serial_api.c b/targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_KW41Z/serial_api.c index 7d5131768e..99e9da8537 100644 --- a/targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_KW41Z/serial_api.c +++ b/targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_KW41Z/serial_api.c @@ -282,4 +282,14 @@ const PinMap *serial_rts_pinmap() return PinMap_UART_RTS; } +void serial_wait_tx_complete(uint32_t uart_index) +{ + LPUART_Type *base = uart_addrs[uart_index]; + + /* Wait till data is flushed out of transmit buffer */ + while (!(kLPUART_TransmissionCompleteFlag & LPUART_GetStatusFlags((LPUART_Type *)base))) + { + } +} + #endif diff --git a/targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_MCU_K22F/serial_api.c b/targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_MCU_K22F/serial_api.c index e38f48a41d..6f15814c92 100644 --- a/targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_MCU_K22F/serial_api.c +++ b/targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_MCU_K22F/serial_api.c @@ -302,4 +302,14 @@ const PinMap *serial_rts_pinmap() return PinMap_UART_RTS; } +void serial_wait_tx_complete(uint32_t uart_index) +{ + UART_Type *base = uart_addrs[uart_index]; + + /* Wait till data is flushed out of transmit buffer */ + while (!(kUART_TransmissionCompleteFlag & UART_GetStatusFlags((UART_Type *)base))) + { + } +} + #endif diff --git a/targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_MCU_K24F/serial_api.c b/targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_MCU_K24F/serial_api.c index af826c10b1..eb85c220d5 100644 --- a/targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_MCU_K24F/serial_api.c +++ b/targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_MCU_K24F/serial_api.c @@ -723,4 +723,14 @@ void serial_rx_abort_asynch(serial_t *obj) } } +void serial_wait_tx_complete(uint32_t uart_index) +{ + UART_Type *base = uart_addrs[uart_index]; + + /* Wait till data is flushed out of transmit buffer */ + while (!(kUART_TransmissionCompleteFlag & UART_GetStatusFlags((UART_Type *)base))) + { + } +} + #endif diff --git a/targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_MCU_K64F/serial_api.c b/targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_MCU_K64F/serial_api.c index bdfb73b2ac..9797334739 100644 --- a/targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_MCU_K64F/serial_api.c +++ b/targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_MCU_K64F/serial_api.c @@ -731,4 +731,14 @@ void serial_rx_abort_asynch(serial_t *obj) } } +void serial_wait_tx_complete(uint32_t uart_index) +{ + UART_Type *base = uart_addrs[uart_index]; + + /* Wait till data is flushed out of transmit buffer */ + while (!(kUART_TransmissionCompleteFlag & UART_GetStatusFlags((UART_Type *)base))) + { + } +} + #endif diff --git a/targets/TARGET_NXP/TARGET_MCUXpresso_MCUS/TARGET_IMX/serial_api.c b/targets/TARGET_NXP/TARGET_MCUXpresso_MCUS/TARGET_IMX/serial_api.c index c7f40cffaf..b68cccbe25 100644 --- a/targets/TARGET_NXP/TARGET_MCUXpresso_MCUS/TARGET_IMX/serial_api.c +++ b/targets/TARGET_NXP/TARGET_MCUXpresso_MCUS/TARGET_IMX/serial_api.c @@ -316,4 +316,14 @@ const PinMap *serial_rts_pinmap() return PinMap_UART_RTS; } +void serial_wait_tx_complete(uint32_t uart_index) +{ + LPUART_Type *base = uart_addrs[uart_index]; + + /* Wait till data is flushed out of transmit buffer */ + while (!(kLPUART_TransmissionCompleteFlag & LPUART_GetStatusFlags((LPUART_Type *)base))) + { + } +} + #endif