driver_ledc.h 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. /*
  2. * @File name : driver_ledc.h
  3. * @Author : Bluetrum IOT Team K.
  4. * @Date : 2023-07-12
  5. * @Description : This file contains all the functions protorypes for the LEDC library.
  6. *
  7. * Copyright (c) by Bluetrum, All Rights Reserved.
  8. */
  9. #ifndef _DRIVER_LEDC_H
  10. #define _DRIVER_LEDC_H
  11. #include "driver_com.h"
  12. /**
  13. * @brief Flag Enumeration.
  14. */
  15. typedef enum {
  16. LEDC_FLAG_DONE = 0x01,
  17. LEDC_FLAG_RST = 0x02,
  18. LEDC_FLAG_DMA = 0x04,
  19. } LEDC_FLAG_TYPEDEF;
  20. /**
  21. * @brief Output Invert Enumeration.
  22. */
  23. typedef enum {
  24. LEDC_OUT_INV_DIS = 0x00000000,
  25. LEDC_OUT_INV_EN = 0x02000000,
  26. } LEDC_OUT_INV_TYPEDEF;
  27. /**
  28. * @brief DMA Buffer Data Format Enumeration.
  29. */
  30. typedef enum {
  31. LEDC_IN_FORMAT_RGB = 0x00000000,
  32. LEDC_IN_FORMAT_WRGB = 0x00000080,
  33. } LEDC_IN_FORMAT_TYPEDEF;
  34. /**
  35. * @brief Idle Level Enumeration.
  36. */
  37. typedef enum {
  38. LEDC_IDLE_LEVEL_LOW = 0x00000000,
  39. LEDC_IDLE_LEVEL_HIGH = 0x00000020,
  40. } LEDC_IDLE_LEVEL_TYPEDEF;
  41. /**
  42. * @brief Valid Data Direct or Invert Enumeration.
  43. */
  44. typedef enum {
  45. LEDC_VALID_DATA_DIR = 0x00000000,
  46. LEDC_VALID_DATA_INV = 0x00000010,
  47. } LEDC_VALID_DATA_TYPEDEF;
  48. /**
  49. * @brief Valid Data Invert Byte Number Enumeration.
  50. */
  51. typedef enum {
  52. LEDC_BYTE_INV_NO = 0x00000000,
  53. LEDC_BYTE_INV_1B = 0x00000004,
  54. LEDC_BYTE_INV_2B = 0x00000008,
  55. LEDC_BYTE_INV_4B = 0x0000000c,
  56. } LEDC_BYTE_INV_TYPEDEF;
  57. /**
  58. * @brief LEDC Ctrl Initialization Struct.
  59. */
  60. typedef struct {
  61. LEDC_OUT_INV_TYPEDEF output_invert;
  62. LEDC_IN_FORMAT_TYPEDEF format;
  63. LEDC_IDLE_LEVEL_TYPEDEF idle_level;
  64. LEDC_VALID_DATA_TYPEDEF valid_data_mode;
  65. LEDC_BYTE_INV_TYPEDEF byte_inv_number;
  66. } ledc_init_typedef;
  67. /**
  68. * @brief LEDC Code Element Timing Initialization Struct.
  69. */
  70. typedef struct {
  71. uint8_t baud;
  72. uint8_t delay;
  73. uint8_t code_0_high;
  74. uint8_t code_1_high;
  75. uint16_t reset_high;
  76. uint16_t reset_low;
  77. } ledc_timing_init_typedef;
  78. void ledc_init(ledc_init_typedef *ledc_init_struct);
  79. void ledc_timing_init(ledc_timing_init_typedef *ledc_timing_init_struct);
  80. void ledc_deinit(void);
  81. void ledc_cmd(FUNCTIONAL_STATE state);
  82. void ledc_dma_kick(uint32_t addr, uint16_t len);
  83. void ledc_kick(void);
  84. void ledc_pic_config(isr_t isr, int pr, LEDC_FLAG_TYPEDEF flag_type, FUNCTIONAL_STATE state);
  85. FLAG_STATE ledc_get_flag(LEDC_FLAG_TYPEDEF flag_type);
  86. void ledc_clear_flag(LEDC_FLAG_TYPEDEF flag_type);
  87. void ledc_set_frame_length(uint16_t frame_length);
  88. void ledc_set_loop_number(uint16_t loop_n);
  89. uint16_t ledc_get_frame_length(void);
  90. uint16_t ledc_get_loop_number(void);
  91. #endif // _DRIVER_LEDC_H