driver_hsuart.h 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. /*
  2. * @File name : driver_hsuart.h
  3. * @Author : Bluetrum IOT Team
  4. * @Date : 2023-02-14
  5. * @Description : This file contains all the functions prototypes for the HSUART library.
  6. *
  7. * Copyright (c) by Bluetrum, All Rights Reserved.
  8. */
  9. #ifndef _DRIVER_HSUART_H
  10. #define _DRIVER_HSUART_H
  11. #include "driver_com.h"
  12. /**
  13. * @brief HSUART IT Flag Definition
  14. */
  15. typedef enum {
  16. HSUART_IT_RX_DMA_HF = 0x01,
  17. HSUART_IT_RX_TMR_OV = 0x02,
  18. HSUART_IT_TX = 0x04,
  19. HSUART_IT_RX = 0x08,
  20. } HSUART_IT_TYPEDEF;
  21. /**
  22. * @brief TX Stop Bit Enumeration
  23. */
  24. typedef enum {
  25. HSUT_STOP_BIT_1BIT = 0x00000000,
  26. HSUT_STOP_BIT_2BIT = 0x00000200,
  27. } HSUT_TX_STOP_BIT_TYPEDEF;
  28. /**
  29. * @brief TX Word Length Enumeration
  30. */
  31. typedef enum {
  32. HSUT_TX_LENGTH_8b = 0x00000000,
  33. HSUT_TX_LENGTH_9b = 0x00000100,
  34. } HSUT_TX_WORD_LENGTH;
  35. /**
  36. * @brief TX Transmit Mode Enumeration
  37. */
  38. typedef enum {
  39. HSUT_TX_BUF_MODE = 0x00000000,
  40. HSUT_TX_DMA_MODE = 0x00000080,
  41. } HSUT_TX_MODE;
  42. /**
  43. * @brief RX Word Length Enumeration
  44. */
  45. typedef enum {
  46. HSUT_RX_LENGTH_8b = 0x00000000,
  47. HSUT_RX_LENGTH_9b = 0x00000020,
  48. } HSUT_RX_WORD_LENGTH;
  49. /**
  50. * @brief RX Transmit Mode Enumeration
  51. */
  52. typedef enum {
  53. HSUT_RX_BUF_MODE = 0x00000000,
  54. HSUT_RX_DMA_MODE = 0x00000010,
  55. } HSUT_RX_MODE;
  56. /**
  57. * @brief Receive or Transmit Enumeration
  58. */
  59. typedef enum {
  60. HSUT_RECEIVE = 0x00000001,
  61. HSUT_TRANSMIT = 0x00000002,
  62. } HSUT_REC_TRA_CMD;
  63. /**
  64. * @brief One-line Mode Enumeration
  65. */
  66. typedef enum {
  67. HSUT_ONELINE_DIS = 0x00000000,
  68. HSUT_ONELINE_EN = 0x00040000,
  69. } HSUT_ONELINE_TYPEDEF;
  70. /**
  71. * @brief Rx DMA Mode Loop Buf Enumeration
  72. */
  73. typedef enum {
  74. HSUT_DMA_BUF_SINGLE = 0x00000000,
  75. HSUT_DMA_BUF_LOOP = 0x00000040,
  76. } HSUT_DMA_BUF_TYPEDEF;
  77. /**
  78. * @brief Clock Selection
  79. */
  80. typedef enum {
  81. HSUT_24M_CLK,
  82. HSUT_48M_CLK,
  83. HSUT_PLLDIV4_CLK,
  84. } HSUT_CLK_TYPEDEF;
  85. /**
  86. * @brief HSUART Init Structure
  87. */
  88. typedef struct {
  89. uint32_t baud;
  90. HSUT_TX_STOP_BIT_TYPEDEF tx_stop_bit;
  91. HSUT_TX_WORD_LENGTH tx_word_len;
  92. HSUT_RX_WORD_LENGTH rx_word_len;
  93. HSUT_TX_MODE tx_mode;
  94. HSUT_RX_MODE rx_mode;
  95. HSUT_DMA_BUF_TYPEDEF rx_dma_buf_mode;
  96. HSUT_CLK_TYPEDEF clk_source;
  97. HSUT_ONELINE_TYPEDEF one_line_en;
  98. } hsuart_init_typedef;
  99. //--------------- Function used to configure hsuart ----------------//
  100. void hsuart_init(hsuart_init_typedef *hsuart_init_struct);
  101. void hsuart_deinit(void);
  102. void hsuart_cmd(HSUT_REC_TRA_CMD rec_tra_sel, FUNCTIONAL_STATE state);
  103. void hsuart_send_data(uint16_t data);
  104. uint16_t hsuart_receive_data(void);
  105. STATUS_STATE hsuart_receive_data_from_fifo(uint8_t *buf, uint8_t len);
  106. uint16_t hsuart_get_fifo_counter(void);
  107. void hsuart_clear_fifo_counter(void);
  108. void hsuart_baud_config(uint32_t baud);
  109. //---------- Function used to configure hsuart interrupt -----------//
  110. void hsuart_pic_config(isr_t isr, int pr, HSUART_IT_TYPEDEF interrupt_type, FUNCTIONAL_STATE state);
  111. FLAG_STATE hsuart_get_flag(HSUART_IT_TYPEDEF interrupt_type);
  112. void hsuart_clear_flag(HSUART_IT_TYPEDEF interrupt_type);
  113. void hsuart_rx_idle_config(uint16_t idle_time, FUNCTIONAL_STATE state);
  114. //------------- Function used to configure hsuart DMA --------------//
  115. void hsuart_dma_start(HSUT_REC_TRA_CMD rec_tra_sel, uint32_t addr, uint16_t len);
  116. void hsuart_dma_stop(HSUT_REC_TRA_CMD rec_tra_sel);
  117. #endif // _DRIVER_HSUART_H