keil/include/drivers/mk_uart.h
@@ -1,5 +1,5 @@
/*
 * Copyright (c) 2019-2023 Beijing Hanwei Innovation Technology Ltd. Co. and
 * Copyright (c) 2019-2025 Beijing Hanwei Innovation Technology Ltd. Co. and
 * its subsidiaries and affiliates (collectly called MKSEMI).
 *
 * All rights reserved.
@@ -65,7 +65,7 @@
#define UART_ERR_LINE 0x40000000
#define UART_ERR_TIMEOUT 0x20000000
#define UART_ERR_BUSY 0x10000000
//ÒÆÖ²
//ò??2
#define SerialPutString(x)   Serial_PutString((uint8_t*)(x))
#define Serial0PutString(x)   Serial0_PutString((uint8_t*)(x))
uint32_t SerialKeyPressed(uint8_t *key);
@@ -294,6 +294,18 @@
void uart_baud_set(enum UART_DEV_T id, enum UART_BAUD_T baud);
/**
 * @brief  UART busy
 * @param[in] id                UART device ID. \n
 *                              This parameter should be one of the UART_DEV_T enum values as below
 *                              @arg UART_ID0 uart0
 *                              @arg UART_ID1 uart1
 * @return
 *         @arg true   UART TX or RX in progress on the interface, or TX data or RX data present in FIFO
           @arg false  UART idle or inactive
 */
bool uart_is_busy(enum UART_DEV_T id);
/**
 * @brief  check whether the UART TX in progress
 * @param[in] id                UART device ID. \n
 *                              This parameter should be one of the UART_DEV_T enum values as below
@@ -306,16 +318,16 @@
bool uart_tx_in_progress(enum UART_DEV_T id);
/**
 * @brief  UART busy
 * @brief  check whether the UART TX FIFO is empty
 * @param[in] id                UART device ID. \n
 *                              This parameter should be one of the UART_DEV_T enum values as below
 *                              @arg UART_ID0 uart0
 *                              @arg UART_ID1 uart1
 * @return
 *         @arg true   UART TX or RX in progress on the interface, or TX data or RX data present in FIFO
           @arg false  UART idle or inactive
 *         @arg true   UART TX FIFO empty
 *         @arg false  UART TX FIFO not empty
 */
bool uart_fifo_busy(enum UART_DEV_T id);
bool uart_tx_fifo_is_empty(enum UART_DEV_T id);
/**
 * @brief  Clear UART RX FIFO
@@ -372,6 +384,56 @@
int uart_receive(enum UART_DEV_T id, uint8_t *rx_buf, uint32_t len, drv_callback_t callback);
/**
 * @brief  Receive an amount of data using DMA with LLP (link list pointer) feature.
 * @param[in] id                UART device ID. \n
 *                              This parameter should be one of the UART_DEV_T enum values as below
 *                              @arg UART_ID0 uart0
 *                              @arg UART_ID1 uart1
 * @param[out] rx_buf           Pointer to data buffer
 * @param[in] len               Bytes of data to be received
 * @param[in] desc              Pointer to link list descriptor
 * @param[in] callback          Pointer to UART Rx Callback function.
 * @return
 *         @arg DRV_ERROR   error id
 *         @arg DRV_BUSY    send failed because of UART Tx is busy
 *         @arg DEV_OK      send succeed
 */
int uart_dma_receive_with_llp(enum UART_DEV_T id, uint8_t *rx_buf, uint32_t len, struct DMA_LINK_DESC_T *desc, drv_callback_t callback);
/**
 * @brief  Sends an amount of data over internal FIFO
 * @param[in] id                UART device ID. \n
 *                              This parameter should be one of the UART_DEV_T enum values as below
 *                              @arg UART_ID0 uart0
 *                              @arg UART_ID1 uart1
 * @param[in] tx_buf            Pointer to data buffer
 * @param[in] len               Bytes of data to be sent
 * @return  void
 * @note    This is an unsafe interface thus the USER MUST ensure that following things \n
 *          1. @P len MUST NOT exceeds 16 bytes \n
 *          2. DO NOT call this interface while HW is sending data  \n
 *          3. The uart @p id MUST be opened before this interface gets called  \n
 *          4. DO NOT enable \ref UART_HANDLE_T::int_tx while uart @p id gets opened
 */
void uart_send_over_fifo(enum UART_DEV_T id, uint8_t *tx_buf, uint32_t len);
/**
 * @brief  Receive an amount of data from internal FIFO
 * @param[in] id                UART device ID. \n
 *                              This parameter should be one of the UART_DEV_T enum values as below
 *                              @arg UART_ID0 uart0
 *                              @arg UART_ID1 uart1
 * @param[in] tx_buf            Pointer to data buffer
 * @param[in] len               Bytes of data to be sent
 * @return  The bytes of data receive from interval FIFO
 * @note    This is an unsafe interface thus the USER MUST ensure that following things \n
 *          1. @P len MUST NOT exceeds 16 bytes \n
 *          2. The uart @p id MUST be opened before this interface gets called  \n
 *          3. DO NOT enable \ref UART_HANDLE_T::int_rx while uart @p id gets opened
 */
uint32_t uart_receive_from_fifo(enum UART_DEV_T id, uint8_t *rx_buf, uint32_t len);
/**
 * @brief  Abort ongoing Transmit transfer.
 * @note This function is used to abort the ongoing uart TX transfer, if the
 *       TX transfer is completed before uart dma abort, the abort_tx_callback
@@ -400,6 +462,20 @@
 *         @arg DEV_OK      Disable UART DMA RX request succeed
 */
int uart_rx_abort_dma(enum UART_DEV_T id, drv_callback_t abort_rx_callback);
/**
 * @brief Force abort ongoing Receive transfer.
 * @note This function is used to abort the ongoing uart RX transfer and call
 *       abort_rx_callback immediately.
 * @param[in] id                    UART device ID. \n
 *                                  This parameter should be one of the UART_DEV_T enum values as below
 *                                  @arg UART_ID0 uart0
 *                                  @arg UART_ID1 uart1
 * @param[in] abort_rx_callback     DMA UART RX transfer abort callback
 * @return @arg DRV_ERROR   Abort error
 *         @arg DEV_OK      Disable UART DMA RX request succeed
 */
int uart_rx_force_abort_dma(enum UART_DEV_T id, drv_callback_t abort_rx_callback);
/**
 * @brief Handles interrupt request.
@@ -443,13 +519,7 @@
 * @return None
 */
void uart_printf(enum UART_DEV_T id, const char *fmt, ...);
/**
 * @brief This function get USART1 rxcount to DMA handler
 * @param[in] id        void default usart1
 * @param[in] fmt
 * @return rx count from usart1
 */
uint32_t get_rx_count_from_uart1(void);
#ifdef __cplusplus
}
#endif