gd32f1x0_ivref.h 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  1. /*!
  2. \file gd32f1x0_ivref.h
  3. \brief definitions for the IVREF
  4. \version 2014-12-26, V1.0.0, platform GD32F1x0(x=3,5)
  5. \version 2016-01-15, V2.0.0, platform GD32F1x0(x=3,5,7,9)
  6. \version 2016-04-30, V3.0.0, firmware update for GD32F1x0(x=3,5,7,9)
  7. \version 2017-06-19, V3.1.0, firmware update for GD32F1x0(x=3,5,7,9)
  8. \version 2019-11-20, V3.2.0, firmware update for GD32F1x0(x=3,5,7,9)
  9. */
  10. /*
  11. Copyright (c) 2019, GigaDevice Semiconductor Inc.
  12. Redistribution and use in source and binary forms, with or without modification,
  13. are permitted provided that the following conditions are met:
  14. 1. Redistributions of source code must retain the above copyright notice, this
  15. list of conditions and the following disclaimer.
  16. 2. Redistributions in binary form must reproduce the above copyright notice,
  17. this list of conditions and the following disclaimer in the documentation
  18. and/or other materials provided with the distribution.
  19. 3. Neither the name of the copyright holder nor the names of its contributors
  20. may be used to endorse or promote products derived from this software without
  21. specific prior written permission.
  22. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  23. AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
  24. WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
  25. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
  26. INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
  27. NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  28. PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
  29. WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  30. ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
  31. OF SUCH DAMAGE.
  32. */
  33. #ifdef GD32F170_190
  34. #ifndef GD32F1X0_IVREF_H
  35. #define GD32F1X0_IVREF_H
  36. #include "gd32f1x0.h"
  37. /* IVREF definitions */
  38. #define IVREF IVREF_BASE
  39. /* registers definitions */
  40. #define IVREF_CTL REG32(IVREF + 0x00000300U) /*!< IVREF control register */
  41. /* bits definitions */
  42. /* IVREF_CTL */
  43. #define IVREF_CTL_CSDT BITS(0,5) /*!< current step data */
  44. #define IVREF_CTL_SCMOD BIT(7) /*!< sink current mode */
  45. #define IVREF_CTL_CPT BITS(8,12) /*!< current precision trim */
  46. #define IVREF_CTL_SSEL BIT(14) /*!< step selection */
  47. #define IVREF_CTL_CREN BIT(15) /*!< current reference enable */
  48. #define IVREF_CTL_VPT BITS(24,28) /*!< voltage precision trim */
  49. #define IVREF_CTL_DECAP BIT(30) /*!< connect/disconnect external capacitor */
  50. #define IVREF_CTL_VREN BIT(31) /*!< voltage reference enable */
  51. /* constants definitions */
  52. /* vref mode selection */
  53. #define VREF_DISCONNECT_EXTERNAL_CAP BIT(30) /*!< VREF disconnect external capacitor */
  54. #define VREF_CONNECT_EXTERNAL_CAP ((uint32_t)0x00000000) /*!< VREF connect external capacitor */
  55. /* vref voltage precision trim */
  56. #define CTL_VPT(regval) (BITS(24,28) & ((regval) << 24))
  57. #define VREF_VOLT_PRECISION_TRIM_0 CTL_VPT(0) /*!< VREF voltage precision trim 0 */
  58. #define VREF_VOLT_PRECISION_TRIM_1 CTL_VPT(1) /*!< VREF voltage precision trim 1 */
  59. #define VREF_VOLT_PRECISION_TRIM_2 CTL_VPT(2) /*!< VREF voltage precision trim 2 */
  60. #define VREF_VOLT_PRECISION_TRIM_3 CTL_VPT(3) /*!< VREF voltage precision trim 3 */
  61. #define VREF_VOLT_PRECISION_TRIM_4 CTL_VPT(4) /*!< VREF voltage precision trim 4 */
  62. #define VREF_VOLT_PRECISION_TRIM_5 CTL_VPT(5) /*!< VREF voltage precision trim 5 */
  63. #define VREF_VOLT_PRECISION_TRIM_6 CTL_VPT(6) /*!< VREF voltage precision trim 6 */
  64. #define VREF_VOLT_PRECISION_TRIM_7 CTL_VPT(7) /*!< VREF voltage precision trim 7 */
  65. #define VREF_VOLT_PRECISION_TRIM_8 CTL_VPT(8) /*!< VREF voltage precision trim 8 */
  66. #define VREF_VOLT_PRECISION_TRIM_9 CTL_VPT(9) /*!< VREF voltage precision trim 9 */
  67. #define VREF_VOLT_PRECISION_TRIM_10 CTL_VPT(10) /*!< VREF voltage precision trim 10 */
  68. #define VREF_VOLT_PRECISION_TRIM_11 CTL_VPT(11) /*!< VREF voltage precision trim 11 */
  69. #define VREF_VOLT_PRECISION_TRIM_12 CTL_VPT(12) /*!< VREF voltage precision trim 12 */
  70. #define VREF_VOLT_PRECISION_TRIM_13 CTL_VPT(13) /*!< VREF voltage precision trim 13 */
  71. #define VREF_VOLT_PRECISION_TRIM_14 CTL_VPT(14) /*!< VREF voltage precision trim 14 */
  72. #define VREF_VOLT_PRECISION_TRIM_15 CTL_VPT(15) /*!< VREF voltage precision trim 15 */
  73. #define VREF_VOLT_PRECISION_TRIM_16 CTL_VPT(16) /*!< VREF voltage precision trim 16 */
  74. #define VREF_VOLT_PRECISION_TRIM_17 CTL_VPT(17) /*!< VREF voltage precision trim 17 */
  75. #define VREF_VOLT_PRECISION_TRIM_18 CTL_VPT(18) /*!< VREF voltage precision trim 18 */
  76. #define VREF_VOLT_PRECISION_TRIM_19 CTL_VPT(19) /*!< VREF voltage precision trim 19 */
  77. #define VREF_VOLT_PRECISION_TRIM_20 CTL_VPT(20) /*!< VREF voltage precision trim 20 */
  78. #define VREF_VOLT_PRECISION_TRIM_21 CTL_VPT(21) /*!< VREF voltage precision trim 21 */
  79. #define VREF_VOLT_PRECISION_TRIM_22 CTL_VPT(22) /*!< VREF voltage precision trim 22 */
  80. #define VREF_VOLT_PRECISION_TRIM_23 CTL_VPT(23) /*!< VREF voltage precision trim 23 */
  81. #define VREF_VOLT_PRECISION_TRIM_24 CTL_VPT(24) /*!< VREF voltage precision trim 24 */
  82. #define VREF_VOLT_PRECISION_TRIM_25 CTL_VPT(25) /*!< VREF voltage precision trim 25 */
  83. #define VREF_VOLT_PRECISION_TRIM_26 CTL_VPT(26) /*!< VREF voltage precision trim 26 */
  84. #define VREF_VOLT_PRECISION_TRIM_27 CTL_VPT(27) /*!< VREF voltage precision trim 27 */
  85. #define VREF_VOLT_PRECISION_TRIM_28 CTL_VPT(28) /*!< VREF voltage precision trim 28 */
  86. #define VREF_VOLT_PRECISION_TRIM_29 CTL_VPT(29) /*!< VREF voltage precision trim 29 */
  87. #define VREF_VOLT_PRECISION_TRIM_30 CTL_VPT(30) /*!< VREF voltage precision trim 30 */
  88. #define VREF_VOLT_PRECISION_TRIM_31 CTL_VPT(31) /*!< VREF voltage precision trim 31 */
  89. /* iref current precision trim */
  90. #define CTL_CPT(regval) (BITS(8,12) & ((regval) << 8))
  91. #define IREF_CUR_PRECISION_TRIM_0 CTL_CPT(0) /*!< IREF current precision trim 0 */
  92. #define IREF_CUR_PRECISION_TRIM_1 CTL_CPT(1) /*!< IREF current precision trim 1 */
  93. #define IREF_CUR_PRECISION_TRIM_2 CTL_CPT(2) /*!< IREF current precision trim 2 */
  94. #define IREF_CUR_PRECISION_TRIM_3 CTL_CPT(3) /*!< IREF current precision trim 3 */
  95. #define IREF_CUR_PRECISION_TRIM_4 CTL_CPT(4) /*!< IREF current precision trim 4 */
  96. #define IREF_CUR_PRECISION_TRIM_5 CTL_CPT(5) /*!< IREF current precision trim 5 */
  97. #define IREF_CUR_PRECISION_TRIM_6 CTL_CPT(6) /*!< IREF current precision trim 6 */
  98. #define IREF_CUR_PRECISION_TRIM_7 CTL_CPT(7) /*!< IREF current precision trim 7 */
  99. #define IREF_CUR_PRECISION_TRIM_8 CTL_CPT(8) /*!< IREF current precision trim 8 */
  100. #define IREF_CUR_PRECISION_TRIM_9 CTL_CPT(9) /*!< IREF current precision trim 9 */
  101. #define IREF_CUR_PRECISION_TRIM_10 CTL_CPT(10) /*!< IREF current precision trim 10 */
  102. #define IREF_CUR_PRECISION_TRIM_11 CTL_CPT(11) /*!< IREF current precision trim 11 */
  103. #define IREF_CUR_PRECISION_TRIM_12 CTL_CPT(12) /*!< IREF current precision trim 12 */
  104. #define IREF_CUR_PRECISION_TRIM_13 CTL_CPT(13) /*!< IREF current precision trim 13 */
  105. #define IREF_CUR_PRECISION_TRIM_14 CTL_CPT(14) /*!< IREF current precision trim 14 */
  106. #define IREF_CUR_PRECISION_TRIM_15 CTL_CPT(15) /*!< IREF current precision trim 15 */
  107. #define IREF_CUR_PRECISION_TRIM_16 CTL_CPT(16) /*!< IREF current precision trim 16 */
  108. #define IREF_CUR_PRECISION_TRIM_17 CTL_CPT(17) /*!< IREF current precision trim 17 */
  109. #define IREF_CUR_PRECISION_TRIM_18 CTL_CPT(18) /*!< IREF current precision trim 18 */
  110. #define IREF_CUR_PRECISION_TRIM_19 CTL_CPT(19) /*!< IREF current precision trim 19 */
  111. #define IREF_CUR_PRECISION_TRIM_20 CTL_CPT(20) /*!< IREF current precision trim 20 */
  112. #define IREF_CUR_PRECISION_TRIM_21 CTL_CPT(21) /*!< IREF current precision trim 21 */
  113. #define IREF_CUR_PRECISION_TRIM_22 CTL_CPT(22) /*!< IREF current precision trim 22 */
  114. #define IREF_CUR_PRECISION_TRIM_23 CTL_CPT(23) /*!< IREF current precision trim 23 */
  115. #define IREF_CUR_PRECISION_TRIM_24 CTL_CPT(24) /*!< IREF current precision trim 24 */
  116. #define IREF_CUR_PRECISION_TRIM_25 CTL_CPT(25) /*!< IREF current precision trim 25 */
  117. #define IREF_CUR_PRECISION_TRIM_26 CTL_CPT(26) /*!< IREF current precision trim 26 */
  118. #define IREF_CUR_PRECISION_TRIM_27 CTL_CPT(27) /*!< IREF current precision trim 27 */
  119. #define IREF_CUR_PRECISION_TRIM_28 CTL_CPT(28) /*!< IREF current precision trim 28 */
  120. #define IREF_CUR_PRECISION_TRIM_29 CTL_CPT(29) /*!< IREF current precision trim 29 */
  121. #define IREF_CUR_PRECISION_TRIM_30 CTL_CPT(30) /*!< IREF current precision trim 30 */
  122. #define IREF_CUR_PRECISION_TRIM_31 CTL_CPT(31) /*!< IREF current precision trim 31 */
  123. /* iref mode selection */
  124. #define IREF_MODE_LOW_POWER ((uint32_t)0x00000000)
  125. #define IREF_MODE_HIGH_CURRENT BIT(14)
  126. /* iref current step */
  127. #define CTL_CSDA(regval) (BITS(0,5) & ((regval) << 0))
  128. #define IREF_CUR_STEP_DATA_0 CTL_CSDA(0) /*!< IREF current step data 0 */
  129. #define IREF_CUR_STEP_DATA_1 CTL_CSDA(1) /*!< IREF current step data 1 */
  130. #define IREF_CUR_STEP_DATA_2 CTL_CSDA(2) /*!< IREF current step data 2 */
  131. #define IREF_CUR_STEP_DATA_3 CTL_CSDA(3) /*!< IREF current step data 3 */
  132. #define IREF_CUR_STEP_DATA_4 CTL_CSDA(4) /*!< IREF current step data 4 */
  133. #define IREF_CUR_STEP_DATA_5 CTL_CSDA(5) /*!< IREF current step data 5 */
  134. #define IREF_CUR_STEP_DATA_6 CTL_CSDA(6) /*!< IREF current step data 6 */
  135. #define IREF_CUR_STEP_DATA_7 CTL_CSDA(7) /*!< IREF current step data 7 */
  136. #define IREF_CUR_STEP_DATA_8 CTL_CSDA(8) /*!< IREF current step data 8 */
  137. #define IREF_CUR_STEP_DATA_9 CTL_CSDA(9) /*!< IREF current step data 9 */
  138. #define IREF_CUR_STEP_DATA_10 CTL_CSDA(10) /*!< IREF current step data 10 */
  139. #define IREF_CUR_STEP_DATA_11 CTL_CSDA(11) /*!< IREF current step data 11 */
  140. #define IREF_CUR_STEP_DATA_12 CTL_CSDA(12) /*!< IREF current step data 12 */
  141. #define IREF_CUR_STEP_DATA_13 CTL_CSDA(13) /*!< IREF current step data 13 */
  142. #define IREF_CUR_STEP_DATA_14 CTL_CSDA(14) /*!< IREF current step data 14 */
  143. #define IREF_CUR_STEP_DATA_15 CTL_CSDA(15) /*!< IREF current step data 15 */
  144. #define IREF_CUR_STEP_DATA_16 CTL_CSDA(16) /*!< IREF current step data 16 */
  145. #define IREF_CUR_STEP_DATA_17 CTL_CSDA(17) /*!< IREF current step data 17 */
  146. #define IREF_CUR_STEP_DATA_18 CTL_CSDA(18) /*!< IREF current step data 18 */
  147. #define IREF_CUR_STEP_DATA_19 CTL_CSDA(19) /*!< IREF current step data 19 */
  148. #define IREF_CUR_STEP_DATA_20 CTL_CSDA(20) /*!< IREF current step data 20 */
  149. #define IREF_CUR_STEP_DATA_21 CTL_CSDA(21) /*!< IREF current step data 21 */
  150. #define IREF_CUR_STEP_DATA_22 CTL_CSDA(22) /*!< IREF current step data 22 */
  151. #define IREF_CUR_STEP_DATA_23 CTL_CSDA(23) /*!< IREF current step data 23 */
  152. #define IREF_CUR_STEP_DATA_24 CTL_CSDA(24) /*!< IREF current step data 24 */
  153. #define IREF_CUR_STEP_DATA_25 CTL_CSDA(25) /*!< IREF current step data 25 */
  154. #define IREF_CUR_STEP_DATA_26 CTL_CSDA(26) /*!< IREF current step data 26 */
  155. #define IREF_CUR_STEP_DATA_27 CTL_CSDA(27) /*!< IREF current step data 27 */
  156. #define IREF_CUR_STEP_DATA_28 CTL_CSDA(28) /*!< IREF current step data 28 */
  157. #define IREF_CUR_STEP_DATA_29 CTL_CSDA(29) /*!< IREF current step data 29 */
  158. #define IREF_CUR_STEP_DATA_30 CTL_CSDA(30) /*!< IREF current step data 30 */
  159. #define IREF_CUR_STEP_DATA_31 CTL_CSDA(31) /*!< IREF current step data 31 */
  160. #define IREF_CUR_STEP_DATA_32 CTL_CSDA(32) /*!< IREF current step data 32 */
  161. #define IREF_CUR_STEP_DATA_33 CTL_CSDA(33) /*!< IREF current step data 33 */
  162. #define IREF_CUR_STEP_DATA_34 CTL_CSDA(34) /*!< IREF current step data 34 */
  163. #define IREF_CUR_STEP_DATA_35 CTL_CSDA(35) /*!< IREF current step data 35 */
  164. #define IREF_CUR_STEP_DATA_36 CTL_CSDA(36) /*!< IREF current step data 36 */
  165. #define IREF_CUR_STEP_DATA_37 CTL_CSDA(37) /*!< IREF current step data 37 */
  166. #define IREF_CUR_STEP_DATA_38 CTL_CSDA(38) /*!< IREF current step data 38 */
  167. #define IREF_CUR_STEP_DATA_39 CTL_CSDA(39) /*!< IREF current step data 39 */
  168. #define IREF_CUR_STEP_DATA_40 CTL_CSDA(40) /*!< IREF current step data 40 */
  169. #define IREF_CUR_STEP_DATA_41 CTL_CSDA(41) /*!< IREF current step data 41 */
  170. #define IREF_CUR_STEP_DATA_42 CTL_CSDA(42) /*!< IREF current step data 42 */
  171. #define IREF_CUR_STEP_DATA_43 CTL_CSDA(43) /*!< IREF current step data 43 */
  172. #define IREF_CUR_STEP_DATA_44 CTL_CSDA(44) /*!< IREF current step data 44 */
  173. #define IREF_CUR_STEP_DATA_45 CTL_CSDA(45) /*!< IREF current step data 45 */
  174. #define IREF_CUR_STEP_DATA_46 CTL_CSDA(46) /*!< IREF current step data 46 */
  175. #define IREF_CUR_STEP_DATA_47 CTL_CSDA(47) /*!< IREF current step data 47 */
  176. #define IREF_CUR_STEP_DATA_48 CTL_CSDA(48) /*!< IREF current step data 48 */
  177. #define IREF_CUR_STEP_DATA_49 CTL_CSDA(49) /*!< IREF current step data 49 */
  178. #define IREF_CUR_STEP_DATA_50 CTL_CSDA(50) /*!< IREF current step data 50 */
  179. #define IREF_CUR_STEP_DATA_51 CTL_CSDA(51) /*!< IREF current step data 51 */
  180. #define IREF_CUR_STEP_DATA_52 CTL_CSDA(52) /*!< IREF current step data 52 */
  181. #define IREF_CUR_STEP_DATA_53 CTL_CSDA(53) /*!< IREF current step data 53 */
  182. #define IREF_CUR_STEP_DATA_54 CTL_CSDA(54) /*!< IREF current step data 54 */
  183. #define IREF_CUR_STEP_DATA_55 CTL_CSDA(55) /*!< IREF current step data 54 */
  184. #define IREF_CUR_STEP_DATA_56 CTL_CSDA(56) /*!< IREF current step data 54 */
  185. #define IREF_CUR_STEP_DATA_57 CTL_CSDA(57) /*!< IREF current step data 57 */
  186. #define IREF_CUR_STEP_DATA_58 CTL_CSDA(58) /*!< IREF current step data 58 */
  187. #define IREF_CUR_STEP_DATA_59 CTL_CSDA(59) /*!< IREF current step data 59 */
  188. #define IREF_CUR_STEP_DATA_60 CTL_CSDA(60) /*!< IREF current step data 60 */
  189. #define IREF_CUR_STEP_DATA_61 CTL_CSDA(61) /*!< IREF current step data 61 */
  190. #define IREF_CUR_STEP_DATA_62 CTL_CSDA(62) /*!< IREF current step data 62 */
  191. #define IREF_CUR_STEP_DATA_63 CTL_CSDA(63) /*!< IREF current step data 63 */
  192. /* iref sink current mode*/
  193. #define IREF_SOURCE_CURRENT ((uint32_t)0x00000000) /*!< IREF source current */
  194. #define IREF_SINK_CURRENT BIT(7) /*!< IREF sink current */
  195. /* function declarations */
  196. /* initialization functions */
  197. /* deinit vref */
  198. void ivref_deinit(void);
  199. /* enable vref */
  200. void vref_enable(void);
  201. /* disable vref */
  202. void vref_disable(void);
  203. /* enable vref */
  204. void iref_enable(void);
  205. /* disable iref */
  206. void iref_disable(void);
  207. /* function configuration */
  208. /* set verf mode */
  209. void vref_mode_set(uint32_t vrefmode);
  210. /* set vrer voltage precision trim value */
  211. void vref_precision_trim_value_set(uint32_t precisiontrim);
  212. /* set iref mode*/
  213. void iref_mode_set(uint32_t irefmode);
  214. /* set iref sink current mode*/
  215. void iref_sink_set(uint32_t irefsinkmode);
  216. /* set iref current precision trim value */
  217. void iref_precision_trim_value_set(uint32_t precisiontrim);
  218. /* set iref step data*/
  219. void iref_step_data_config(uint32_t irefstepdata);
  220. #endif /* GD32F1X0_IVREF_H */
  221. #endif /* GD32F170_190 */