drv_leuart.h 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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. #ifndef __DRV_LEUSART_H__
  11. #define __DRV_LEUSART_H__
  12. /* Includes ------------------------------------------------------------------*/
  13. /* Exported types ------------------------------------------------------------*/
  14. struct efm32_leuart_int_mode_t
  15. {
  16. rt_uint8_t *data_ptr;
  17. rt_uint8_t data_size;
  18. rt_uint32_t read_index, save_index;
  19. };
  20. struct efm32_leuart_dma_mode_t
  21. {
  22. /* DMA Channel */
  23. rt_uint32_t dma_channel;
  24. /* buffer info */
  25. rt_uint32_t *data_ptr;
  26. rt_uint8_t data_size;
  27. };
  28. struct efm32_leuart_device_t
  29. {
  30. /* Counter */
  31. rt_uint32_t counter;
  32. /* Lock */
  33. struct rt_semaphore *lock;
  34. /* Unit number */
  35. rt_uint8_t unit;
  36. /* State */
  37. volatile rt_uint8_t state;
  38. /* Pointer to LEUART device structure */
  39. LEUART_TypeDef *leuart_device;
  40. /* Pointer to RX structure */
  41. void *rx_mode;
  42. /* Pointer to TX structure */
  43. void *tx_mode;
  44. };
  45. /* Exported constants --------------------------------------------------------*/
  46. /* Exported macro ------------------------------------------------------------*/
  47. #define LEUART_WAIT_TIME_TX (RT_TICK_PER_SECOND / 100 * 3)
  48. #define LEUART_STATE_CONSOLE (1 << 0)
  49. #define LEUART_STATE_SYNC (1 << 1)
  50. #define LEUART_STATE_MASTER (1 << 2)
  51. #define LEUART_STATE_AUTOCS (1 << 3)
  52. #define LEUART_STATE_TX_BUSY (1 << 4)
  53. #define LEUART_STATE_RX_BUSY (1 << 5)
  54. /* Exported functions ------------------------------------------------------- */
  55. void rt_hw_leuart_init(void);
  56. #endif /* __DRV_LEUSART_H__ */