| | |
| | | /* |
| | | * 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. |
| | |
| | | #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); |
| | |
| | | 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 |
| | |
| | | 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 |
| | |
| | | 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 |
| | |
| | | * @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. |
| | |
| | | * @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 |