gd32f4xx_iref.c 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. /*!
  2. \file gd32f4xx_iref.c
  3. \brief IREF driver
  4. */
  5. /*
  6. Copyright (C) 2016 GigaDevice
  7. 2016-08-15, V1.0.0, firmware for GD32F4xx
  8. */
  9. #include "gd32f4xx_iref.h"
  10. /*!
  11. \brief deinit IREF
  12. \param[in] none
  13. \param[out] none
  14. \retval none
  15. */
  16. void iref_deinit(void)
  17. {
  18. rcu_periph_reset_enable(RCU_IREFRST);
  19. rcu_periph_reset_disable(RCU_IREFRST);
  20. }
  21. /*!
  22. \brief enable IREF
  23. \param[in] none
  24. \param[out] none
  25. \retval none
  26. */
  27. void iref_enable(void)
  28. {
  29. IREF_CTL |= IREF_CTL_CREN;
  30. }
  31. /*!
  32. \brief disable IREF
  33. \param[in] none
  34. \param[out] none
  35. \retval none
  36. */
  37. void iref_disable(void)
  38. {
  39. IREF_CTL &= ~IREF_CTL_CREN;
  40. }
  41. /*!
  42. \brief set IREF mode
  43. \param[in] step
  44. \arg IREF_MODE_LOW_POWER: 1uA step
  45. \arg IREF_MODE_HIGH_CURRENT: 8uA step
  46. \param[out] none
  47. \retval none
  48. */
  49. void iref_mode_set(uint32_t step)
  50. {
  51. IREF_CTL &= ~IREF_CTL_SSEL;
  52. IREF_CTL |= step;
  53. }
  54. /*!
  55. \brief set IREF precision_trim_value
  56. \param[in] precisiontrim
  57. \arg IREF_CUR_PRECISION_TRIM_X(x=0..31): (-15+ x)%
  58. \param[out] none
  59. \retval none
  60. */
  61. void iref_precision_trim_value_set(uint32_t precisiontrim)
  62. {
  63. IREF_CTL &= ~IREF_CTL_CPT;
  64. IREF_CTL |= precisiontrim;
  65. }
  66. /*!
  67. \brief set IREF sink mode
  68. \param[in] sinkmode
  69. \arg IREF_SOURCE_CURRENT : source current.
  70. \arg IREF_SINK_CURRENT: sink current
  71. \param[out] none
  72. \retval none
  73. */
  74. void iref_sink_set(uint32_t sinkmode)
  75. {
  76. IREF_CTL &= ~IREF_CTL_SCMOD;
  77. IREF_CTL |= sinkmode;
  78. }
  79. /*!
  80. \brief set IREF step data
  81. \param[in] stepdata
  82. \arg IREF_CUR_STEP_DATA_X:(x=0..63): step*x
  83. \param[out] none
  84. \retval none
  85. */
  86. void iref_step_data_config(uint32_t stepdata)
  87. {
  88. IREF_CTL &= ~IREF_CTL_CSDT;
  89. IREF_CTL |= stepdata;
  90. }