123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- /*!
- \file gd32f4xx_iref.c
- \brief IREF driver
- */
- /*
- Copyright (C) 2016 GigaDevice
- 2016-08-15, V1.0.0, firmware for GD32F4xx
- */
- #include "gd32f4xx_iref.h"
- /*!
- \brief deinit IREF
- \param[in] none
- \param[out] none
- \retval none
- */
- void iref_deinit(void)
- {
- rcu_periph_reset_enable(RCU_IREFRST);
- rcu_periph_reset_disable(RCU_IREFRST);
- }
- /*!
- \brief enable IREF
- \param[in] none
- \param[out] none
- \retval none
- */
- void iref_enable(void)
- {
- IREF_CTL |= IREF_CTL_CREN;
- }
- /*!
- \brief disable IREF
- \param[in] none
- \param[out] none
- \retval none
- */
- void iref_disable(void)
- {
- IREF_CTL &= ~IREF_CTL_CREN;
- }
- /*!
- \brief set IREF mode
- \param[in] step
- \arg IREF_MODE_LOW_POWER: 1uA step
- \arg IREF_MODE_HIGH_CURRENT: 8uA step
- \param[out] none
- \retval none
- */
- void iref_mode_set(uint32_t step)
- {
- IREF_CTL &= ~IREF_CTL_SSEL;
- IREF_CTL |= step;
- }
- /*!
- \brief set IREF precision_trim_value
- \param[in] precisiontrim
- \arg IREF_CUR_PRECISION_TRIM_X(x=0..31): (-15+ x)%
- \param[out] none
- \retval none
- */
- void iref_precision_trim_value_set(uint32_t precisiontrim)
- {
- IREF_CTL &= ~IREF_CTL_CPT;
- IREF_CTL |= precisiontrim;
- }
- /*!
- \brief set IREF sink mode
- \param[in] sinkmode
- \arg IREF_SOURCE_CURRENT : source current.
- \arg IREF_SINK_CURRENT: sink current
- \param[out] none
- \retval none
- */
- void iref_sink_set(uint32_t sinkmode)
- {
- IREF_CTL &= ~IREF_CTL_SCMOD;
- IREF_CTL |= sinkmode;
- }
- /*!
- \brief set IREF step data
- \param[in] stepdata
- \arg IREF_CUR_STEP_DATA_X:(x=0..63): step*x
- \param[out] none
- \retval none
- */
- void iref_step_data_config(uint32_t stepdata)
- {
- IREF_CTL &= ~IREF_CTL_CSDT;
- IREF_CTL |= stepdata;
- }
|