ledc_struct.h 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. // Copyright 2020 Espressif Systems (Shanghai) PTE LTD
  2. //
  3. // Licensed under the Apache License, Version 2.0 (the "License");
  4. // you may not use this file except in compliance with the License.
  5. // You may obtain a copy of the License at
  6. //
  7. // http://www.apache.org/licenses/LICENSE-2.0
  8. //
  9. // Unless required by applicable law or agreed to in writing, software
  10. // distributed under the License is distributed on an "AS IS" BASIS,
  11. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. // See the License for the specific language governing permissions and
  13. // limitations under the License.
  14. #ifndef _SOC_LEDC_STRUCT_H_
  15. #define _SOC_LEDC_STRUCT_H_
  16. #ifdef __cplusplus
  17. extern "C" {
  18. #endif
  19. typedef volatile struct ledc_dev_s {
  20. struct {
  21. struct {
  22. union {
  23. struct {
  24. uint32_t timer_sel: 2;
  25. uint32_t sig_out_en: 1;
  26. uint32_t idle_lv: 1;
  27. uint32_t low_speed_update: 1;
  28. uint32_t ovf_num: 10;
  29. uint32_t ovf_cnt_en: 1;
  30. uint32_t ovf_cnt_rst: 1;
  31. uint32_t reserved17: 15;
  32. };
  33. uint32_t val;
  34. } conf0;
  35. union {
  36. struct {
  37. uint32_t hpoint: 14;
  38. uint32_t reserved14: 18;
  39. };
  40. uint32_t val;
  41. } hpoint;
  42. union {
  43. struct {
  44. uint32_t duty: 19;
  45. uint32_t reserved19:13;
  46. };
  47. uint32_t val;
  48. } duty;
  49. union {
  50. struct {
  51. uint32_t duty_scale: 10;
  52. uint32_t duty_cycle: 10;
  53. uint32_t duty_num: 10;
  54. uint32_t duty_inc: 1;
  55. uint32_t duty_start: 1;
  56. };
  57. uint32_t val;
  58. } conf1;
  59. union {
  60. struct {
  61. uint32_t duty_read: 19;
  62. uint32_t reserved19: 13;
  63. };
  64. uint32_t val;
  65. } duty_rd;
  66. } channel[6];
  67. } channel_group[1];
  68. uint32_t reserved_78;
  69. uint32_t reserved_7c;
  70. uint32_t reserved_80;
  71. uint32_t reserved_84;
  72. uint32_t reserved_88;
  73. uint32_t reserved_8c;
  74. uint32_t reserved_90;
  75. uint32_t reserved_94;
  76. uint32_t reserved_98;
  77. uint32_t reserved_9c;
  78. struct {
  79. struct {
  80. union {
  81. struct {
  82. uint32_t duty_resolution: 4;
  83. uint32_t clock_divider: 18;
  84. uint32_t pause: 1;
  85. uint32_t rst: 1;
  86. uint32_t tick_sel: 1;
  87. uint32_t low_speed_update: 1;
  88. uint32_t reserved26: 6;
  89. };
  90. uint32_t val;
  91. } conf;
  92. union {
  93. struct {
  94. uint32_t timer_cnt: 14;
  95. uint32_t reserved14: 18;
  96. };
  97. uint32_t val;
  98. } value;
  99. } timer[4];
  100. } timer_group[1];
  101. union {
  102. struct {
  103. uint32_t lstimer0_ovf: 1;
  104. uint32_t lstimer1_ovf: 1;
  105. uint32_t lstimer2_ovf: 1;
  106. uint32_t lstimer3_ovf: 1;
  107. uint32_t duty_chng_end_lsch0: 1;
  108. uint32_t duty_chng_end_lsch1: 1;
  109. uint32_t duty_chng_end_lsch2: 1;
  110. uint32_t duty_chng_end_lsch3: 1;
  111. uint32_t duty_chng_end_lsch4: 1;
  112. uint32_t duty_chng_end_lsch5: 1;
  113. uint32_t ovf_cnt_lsch0: 1;
  114. uint32_t ovf_cnt_lsch1: 1;
  115. uint32_t ovf_cnt_lsch2: 1;
  116. uint32_t ovf_cnt_lsch3: 1;
  117. uint32_t ovf_cnt_lsch4: 1;
  118. uint32_t ovf_cnt_lsch5: 1;
  119. uint32_t reserved16: 16;
  120. };
  121. uint32_t val;
  122. } int_raw;
  123. union {
  124. struct {
  125. uint32_t lstimer0_ovf: 1;
  126. uint32_t lstimer1_ovf: 1;
  127. uint32_t lstimer2_ovf: 1;
  128. uint32_t lstimer3_ovf: 1;
  129. uint32_t duty_chng_end_lsch0: 1;
  130. uint32_t duty_chng_end_lsch1: 1;
  131. uint32_t duty_chng_end_lsch2: 1;
  132. uint32_t duty_chng_end_lsch3: 1;
  133. uint32_t duty_chng_end_lsch4: 1;
  134. uint32_t duty_chng_end_lsch5: 1;
  135. uint32_t ovf_cnt_lsch0: 1;
  136. uint32_t ovf_cnt_lsch1: 1;
  137. uint32_t ovf_cnt_lsch2: 1;
  138. uint32_t ovf_cnt_lsch3: 1;
  139. uint32_t ovf_cnt_lsch4: 1;
  140. uint32_t ovf_cnt_lsch5: 1;
  141. uint32_t reserved16: 16;
  142. };
  143. uint32_t val;
  144. } int_st;
  145. union {
  146. struct {
  147. uint32_t lstimer0_ovf: 1;
  148. uint32_t lstimer1_ovf: 1;
  149. uint32_t lstimer2_ovf: 1;
  150. uint32_t lstimer3_ovf: 1;
  151. uint32_t duty_chng_end_lsch0: 1;
  152. uint32_t duty_chng_end_lsch1: 1;
  153. uint32_t duty_chng_end_lsch2: 1;
  154. uint32_t duty_chng_end_lsch3: 1;
  155. uint32_t duty_chng_end_lsch4: 1;
  156. uint32_t duty_chng_end_lsch5: 1;
  157. uint32_t ovf_cnt_lsch0: 1;
  158. uint32_t ovf_cnt_lsch1: 1;
  159. uint32_t ovf_cnt_lsch2: 1;
  160. uint32_t ovf_cnt_lsch3: 1;
  161. uint32_t ovf_cnt_lsch4: 1;
  162. uint32_t ovf_cnt_lsch5: 1;
  163. uint32_t reserved16: 16;
  164. };
  165. uint32_t val;
  166. } int_ena;
  167. union {
  168. struct {
  169. uint32_t lstimer0_ovf: 1;
  170. uint32_t lstimer1_ovf: 1;
  171. uint32_t lstimer2_ovf: 1;
  172. uint32_t lstimer3_ovf: 1;
  173. uint32_t duty_chng_end_lsch0: 1;
  174. uint32_t duty_chng_end_lsch1: 1;
  175. uint32_t duty_chng_end_lsch2: 1;
  176. uint32_t duty_chng_end_lsch3: 1;
  177. uint32_t duty_chng_end_lsch4: 1;
  178. uint32_t duty_chng_end_lsch5: 1;
  179. uint32_t ovf_cnt_lsch0: 1;
  180. uint32_t ovf_cnt_lsch1: 1;
  181. uint32_t ovf_cnt_lsch2: 1;
  182. uint32_t ovf_cnt_lsch3: 1;
  183. uint32_t ovf_cnt_lsch4: 1;
  184. uint32_t ovf_cnt_lsch5: 1;
  185. uint32_t reserved16: 16;
  186. };
  187. uint32_t val;
  188. } int_clr;
  189. union {
  190. struct {
  191. uint32_t apb_clk_sel: 2;
  192. uint32_t reserved2: 29;
  193. uint32_t clk_en: 1;
  194. };
  195. uint32_t val;
  196. } conf;
  197. uint32_t reserved_d4;
  198. uint32_t reserved_d8;
  199. uint32_t reserved_dc;
  200. uint32_t reserved_e0;
  201. uint32_t reserved_e4;
  202. uint32_t reserved_e8;
  203. uint32_t reserved_ec;
  204. uint32_t reserved_f0;
  205. uint32_t reserved_f4;
  206. uint32_t reserved_f8;
  207. union {
  208. struct {
  209. uint32_t date: 32;
  210. };
  211. uint32_t val;
  212. } date;
  213. } ledc_dev_t;
  214. extern ledc_dev_t LEDC;
  215. #ifdef __cplusplus
  216. }
  217. #endif
  218. #endif /* _SOC_LEDC_STRUCT_H_ */