1 /* 2 * Copyright (c) 2006-2022, RT-Thread Development Team 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 * 6 * Change Logs: 7 * Date Author Notes 8 * 2011-12-09 onelife Initial creation for EFM32 9 */ 10 11 #ifndef __DRV_LEUSART_H__ 12 #define __DRV_LEUSART_H__ 13 14 /* Includes ------------------------------------------------------------------*/ 15 /* Exported types ------------------------------------------------------------*/ 16 struct efm32_leuart_int_mode_t 17 { 18 rt_uint8_t *data_ptr; 19 rt_uint8_t data_size; 20 rt_uint32_t read_index, save_index; 21 }; 22 23 struct efm32_leuart_dma_mode_t 24 { 25 /* DMA Channel */ 26 rt_uint32_t dma_channel; 27 28 /* buffer info */ 29 rt_uint32_t *data_ptr; 30 rt_uint8_t data_size; 31 }; 32 33 struct efm32_leuart_device_t 34 { 35 /* Counter */ 36 rt_uint32_t counter; 37 /* Lock */ 38 struct rt_semaphore *lock; 39 /* Unit number */ 40 rt_uint8_t unit; 41 /* State */ 42 volatile rt_uint8_t state; 43 /* Pointer to LEUART device structure */ 44 LEUART_TypeDef *leuart_device; 45 /* Pointer to RX structure */ 46 void *rx_mode; 47 /* Pointer to TX structure */ 48 void *tx_mode; 49 }; 50 51 /* Exported constants --------------------------------------------------------*/ 52 /* Exported macro ------------------------------------------------------------*/ 53 #define LEUART_WAIT_TIME_TX (RT_TICK_PER_SECOND / 100 * 3) 54 55 #define LEUART_STATE_CONSOLE (1 << 0) 56 #define LEUART_STATE_SYNC (1 << 1) 57 #define LEUART_STATE_MASTER (1 << 2) 58 #define LEUART_STATE_AUTOCS (1 << 3) 59 #define LEUART_STATE_TX_BUSY (1 << 4) 60 #define LEUART_STATE_RX_BUSY (1 << 5) 61 62 63 /* Exported functions ------------------------------------------------------- */ 64 void rt_hw_leuart_init(void); 65 66 #endif /* __DRV_LEUSART_H__ */ 67 68