mbed library sources. Supersedes mbed-src.

Dependents:   Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more

Committer:
AnnaBridge
Date:
Wed Feb 20 22:31:08 2019 +0000
Revision:
189:f392fc9709a3
Parent:
172:7d866c31b3c5
mbed library release version 165

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 172:7d866c31b3c5 1 /**************************************************************************//**
AnnaBridge 172:7d866c31b3c5 2 * @file eadc.c
AnnaBridge 172:7d866c31b3c5 3 * @version V2.00
AnnaBridge 172:7d866c31b3c5 4 * @brief M480 series EADC driver source file
AnnaBridge 172:7d866c31b3c5 5 *
AnnaBridge 172:7d866c31b3c5 6 * @copyright (C) 2016 Nuvoton Technology Corp. All rights reserved.
AnnaBridge 172:7d866c31b3c5 7 *****************************************************************************/
AnnaBridge 172:7d866c31b3c5 8 #include "M480.h"
AnnaBridge 172:7d866c31b3c5 9
AnnaBridge 172:7d866c31b3c5 10 /** @addtogroup M480_Device_Driver M480 Device Driver
AnnaBridge 172:7d866c31b3c5 11 @{
AnnaBridge 172:7d866c31b3c5 12 */
AnnaBridge 172:7d866c31b3c5 13
AnnaBridge 172:7d866c31b3c5 14 /** @addtogroup EADC_Driver EADC Driver
AnnaBridge 172:7d866c31b3c5 15 @{
AnnaBridge 172:7d866c31b3c5 16 */
AnnaBridge 172:7d866c31b3c5 17
AnnaBridge 172:7d866c31b3c5 18 /** @addtogroup EADC_EXPORTED_FUNCTIONS EADC Exported Functions
AnnaBridge 172:7d866c31b3c5 19 @{
AnnaBridge 172:7d866c31b3c5 20 */
AnnaBridge 172:7d866c31b3c5 21
AnnaBridge 172:7d866c31b3c5 22 /**
AnnaBridge 172:7d866c31b3c5 23 * @brief This function make EADC_module be ready to convert.
AnnaBridge 172:7d866c31b3c5 24 * @param[in] eadc The pointer of the specified EADC module.
AnnaBridge 172:7d866c31b3c5 25 * @param[in] u32InputMode Decides the input mode.
AnnaBridge 172:7d866c31b3c5 26 * - \ref EADC_CTL_DIFFEN_SINGLE_END :Single end input mode.
AnnaBridge 172:7d866c31b3c5 27 * - \ref EADC_CTL_DIFFEN_DIFFERENTIAL :Differential input type.
AnnaBridge 172:7d866c31b3c5 28 * @return None
AnnaBridge 172:7d866c31b3c5 29 * @details This function is used to set analog input mode and enable A/D Converter.
AnnaBridge 172:7d866c31b3c5 30 * Before starting A/D conversion function, ADCEN bit (EADC_CTL[0]) should be set to 1.
AnnaBridge 172:7d866c31b3c5 31 * @note
AnnaBridge 172:7d866c31b3c5 32 */
AnnaBridge 172:7d866c31b3c5 33 void EADC_Open(EADC_T *eadc, uint32_t u32InputMode)
AnnaBridge 172:7d866c31b3c5 34 {
AnnaBridge 172:7d866c31b3c5 35 eadc->CTL &= (~EADC_CTL_DIFFEN_Msk);
AnnaBridge 172:7d866c31b3c5 36
AnnaBridge 172:7d866c31b3c5 37 eadc->CTL |= (u32InputMode | EADC_CTL_ADCEN_Msk);
AnnaBridge 172:7d866c31b3c5 38 while (!(eadc->PWRM & EADC_PWRM_PWUPRDY_Msk)) {}
AnnaBridge 172:7d866c31b3c5 39 }
AnnaBridge 172:7d866c31b3c5 40
AnnaBridge 172:7d866c31b3c5 41 /**
AnnaBridge 172:7d866c31b3c5 42 * @brief Disable EADC_module.
AnnaBridge 172:7d866c31b3c5 43 * @param[in] eadc The pointer of the specified EADC module..
AnnaBridge 172:7d866c31b3c5 44 * @return None
AnnaBridge 172:7d866c31b3c5 45 * @details Clear ADCEN bit (EADC_CTL[0]) to disable A/D converter analog circuit power consumption.
AnnaBridge 172:7d866c31b3c5 46 */
AnnaBridge 172:7d866c31b3c5 47 void EADC_Close(EADC_T *eadc)
AnnaBridge 172:7d866c31b3c5 48 {
AnnaBridge 172:7d866c31b3c5 49 eadc->CTL &= ~EADC_CTL_ADCEN_Msk;
AnnaBridge 172:7d866c31b3c5 50 }
AnnaBridge 172:7d866c31b3c5 51
AnnaBridge 172:7d866c31b3c5 52 /**
AnnaBridge 172:7d866c31b3c5 53 * @brief Configure the sample control logic module.
AnnaBridge 172:7d866c31b3c5 54 * @param[in] eadc The pointer of the specified EADC module.
AnnaBridge 172:7d866c31b3c5 55 * @param[in] u32ModuleNum Decides the sample module number, valid value are from 0 to 15.
AnnaBridge 172:7d866c31b3c5 56 * @param[in] u32TriggerSrc Decides the trigger source. Valid values are:
AnnaBridge 172:7d866c31b3c5 57 * - \ref EADC_SOFTWARE_TRIGGER : Disable trigger
AnnaBridge 172:7d866c31b3c5 58 * - \ref EADC_FALLING_EDGE_TRIGGER : STADC pin falling edge trigger
AnnaBridge 172:7d866c31b3c5 59 * - \ref EADC_RISING_EDGE_TRIGGER : STADC pin rising edge trigger
AnnaBridge 172:7d866c31b3c5 60 * - \ref EADC_FALLING_RISING_EDGE_TRIGGER : STADC pin both falling and rising edge trigger
AnnaBridge 172:7d866c31b3c5 61 * - \ref EADC_ADINT0_TRIGGER : ADC ADINT0 interrupt EOC pulse trigger
AnnaBridge 172:7d866c31b3c5 62 * - \ref EADC_ADINT1_TRIGGER : ADC ADINT1 interrupt EOC pulse trigger
AnnaBridge 172:7d866c31b3c5 63 * - \ref EADC_TIMER0_TRIGGER : Timer0 overflow pulse trigger
AnnaBridge 172:7d866c31b3c5 64 * - \ref EADC_TIMER1_TRIGGER : Timer1 overflow pulse trigger
AnnaBridge 172:7d866c31b3c5 65 * - \ref EADC_TIMER2_TRIGGER : Timer2 overflow pulse trigger
AnnaBridge 172:7d866c31b3c5 66 * - \ref EADC_TIMER3_TRIGGER : Timer3 overflow pulse trigger
AnnaBridge 172:7d866c31b3c5 67 * - \ref EADC_PWM0TG0_TRIGGER : PWM0TG0 trigger
AnnaBridge 172:7d866c31b3c5 68 * - \ref EADC_PWM0TG1_TRIGGER : PWM0TG1 trigger
AnnaBridge 172:7d866c31b3c5 69 * - \ref EADC_PWM0TG2_TRIGGER : PWM0TG2 trigger
AnnaBridge 172:7d866c31b3c5 70 * - \ref EADC_PWM0TG3_TRIGGER : PWM0TG3 trigger
AnnaBridge 172:7d866c31b3c5 71 * - \ref EADC_PWM0TG4_TRIGGER : PWM0TG4 trigger
AnnaBridge 172:7d866c31b3c5 72 * - \ref EADC_PWM0TG5_TRIGGER : PWM0TG5 trigger
AnnaBridge 172:7d866c31b3c5 73 * - \ref EADC_PWM1TG0_TRIGGER : PWM1TG0 trigger
AnnaBridge 172:7d866c31b3c5 74 * - \ref EADC_PWM1TG1_TRIGGER : PWM1TG1 trigger
AnnaBridge 172:7d866c31b3c5 75 * - \ref EADC_PWM1TG2_TRIGGER : PWM1TG2 trigger
AnnaBridge 172:7d866c31b3c5 76 * - \ref EADC_PWM1TG3_TRIGGER : PWM1TG3 trigger
AnnaBridge 172:7d866c31b3c5 77 * - \ref EADC_PWM1TG4_TRIGGER : PWM1TG4 trigger
AnnaBridge 172:7d866c31b3c5 78 * - \ref EADC_PWM1TG5_TRIGGER : PWM1TG5 trigger
AnnaBridge 172:7d866c31b3c5 79 * @param[in] u32Channel Specifies the sample module channel, valid value are from 0 to 15.
AnnaBridge 172:7d866c31b3c5 80 * @return None
AnnaBridge 172:7d866c31b3c5 81 * @details Each of ADC control logic modules 0~15 which is configurable for ADC converter channel EADC_CH0~15 and trigger source.
AnnaBridge 172:7d866c31b3c5 82 * sample module 16~18 is fixed for ADC channel 16, 17, 18 input sources as band-gap voltage, temperature sensor, and battery power (VBAT).
AnnaBridge 172:7d866c31b3c5 83 */
AnnaBridge 172:7d866c31b3c5 84 void EADC_ConfigSampleModule(EADC_T *eadc, \
AnnaBridge 172:7d866c31b3c5 85 uint32_t u32ModuleNum, \
AnnaBridge 172:7d866c31b3c5 86 uint32_t u32TriggerSrc, \
AnnaBridge 172:7d866c31b3c5 87 uint32_t u32Channel)
AnnaBridge 172:7d866c31b3c5 88 {
AnnaBridge 172:7d866c31b3c5 89 eadc->SCTL[u32ModuleNum] &= ~(EADC_SCTL_EXTFEN_Msk | EADC_SCTL_EXTREN_Msk | EADC_SCTL_TRGSEL_Msk | EADC_SCTL_CHSEL_Msk);
AnnaBridge 172:7d866c31b3c5 90 eadc->SCTL[u32ModuleNum] |= (u32TriggerSrc | u32Channel);
AnnaBridge 172:7d866c31b3c5 91 }
AnnaBridge 172:7d866c31b3c5 92
AnnaBridge 172:7d866c31b3c5 93
AnnaBridge 172:7d866c31b3c5 94 /**
AnnaBridge 172:7d866c31b3c5 95 * @brief Set trigger delay time.
AnnaBridge 172:7d866c31b3c5 96 * @param[in] eadc The pointer of the specified EADC module.
AnnaBridge 172:7d866c31b3c5 97 * @param[in] u32ModuleNum Decides the sample module number, valid value are from 0 to 15.
AnnaBridge 172:7d866c31b3c5 98 * @param[in] u32TriggerDelayTime Decides the trigger delay time, valid range are between 0~0xFF.
AnnaBridge 172:7d866c31b3c5 99 * @param[in] u32DelayClockDivider Decides the trigger delay clock divider. Valid values are:
AnnaBridge 172:7d866c31b3c5 100 * - \ref EADC_SCTL_TRGDLYDIV_DIVIDER_1 : Trigger delay clock frequency is ADC_CLK/1
AnnaBridge 172:7d866c31b3c5 101 * - \ref EADC_SCTL_TRGDLYDIV_DIVIDER_2 : Trigger delay clock frequency is ADC_CLK/2
AnnaBridge 172:7d866c31b3c5 102 * - \ref EADC_SCTL_TRGDLYDIV_DIVIDER_4 : Trigger delay clock frequency is ADC_CLK/4
AnnaBridge 172:7d866c31b3c5 103 * - \ref EADC_SCTL_TRGDLYDIV_DIVIDER_16 : Trigger delay clock frequency is ADC_CLK/16
AnnaBridge 172:7d866c31b3c5 104 * @return None
AnnaBridge 172:7d866c31b3c5 105 * @details User can configure the trigger delay time by setting TRGDLYCNT (EADC_SCTLn[15:8], n=0~15) and TRGDLYDIV (EADC_SCTLn[7:6], n=0~15).
AnnaBridge 172:7d866c31b3c5 106 * Trigger delay time = (u32TriggerDelayTime) x Trigger delay clock period.
AnnaBridge 172:7d866c31b3c5 107 */
AnnaBridge 172:7d866c31b3c5 108 void EADC_SetTriggerDelayTime(EADC_T *eadc, \
AnnaBridge 172:7d866c31b3c5 109 uint32_t u32ModuleNum, \
AnnaBridge 172:7d866c31b3c5 110 uint32_t u32TriggerDelayTime, \
AnnaBridge 172:7d866c31b3c5 111 uint32_t u32DelayClockDivider)
AnnaBridge 172:7d866c31b3c5 112 {
AnnaBridge 172:7d866c31b3c5 113 eadc->SCTL[u32ModuleNum] &= ~(EADC_SCTL_TRGDLYDIV_Msk | EADC_SCTL_TRGDLYCNT_Msk);
AnnaBridge 172:7d866c31b3c5 114 eadc->SCTL[u32ModuleNum] |= ((u32TriggerDelayTime << EADC_SCTL_TRGDLYCNT_Pos) | u32DelayClockDivider);
AnnaBridge 172:7d866c31b3c5 115 }
AnnaBridge 172:7d866c31b3c5 116
AnnaBridge 172:7d866c31b3c5 117 /**
AnnaBridge 172:7d866c31b3c5 118 * @brief Set ADC extend sample time.
AnnaBridge 172:7d866c31b3c5 119 * @param[in] eadc The pointer of the specified EADC module.
AnnaBridge 172:7d866c31b3c5 120 * @param[in] u32ModuleNum Decides the sample module number, valid value are from 0 to 18.
AnnaBridge 172:7d866c31b3c5 121 * @param[in] u32ExtendSampleTime Decides the extend sampling time, the range is from 0~255 ADC clock. Valid value are from 0 to 0xFF.
AnnaBridge 172:7d866c31b3c5 122 * @return None
AnnaBridge 172:7d866c31b3c5 123 * @details When A/D converting at high conversion rate, the sampling time of analog input voltage may not enough if input channel loading is heavy,
AnnaBridge 172:7d866c31b3c5 124 * user can extend A/D sampling time after trigger source is coming to get enough sampling time.
AnnaBridge 172:7d866c31b3c5 125 */
AnnaBridge 172:7d866c31b3c5 126 void EADC_SetExtendSampleTime(EADC_T *eadc, uint32_t u32ModuleNum, uint32_t u32ExtendSampleTime)
AnnaBridge 172:7d866c31b3c5 127 {
AnnaBridge 172:7d866c31b3c5 128 eadc->SCTL[u32ModuleNum] &= ~EADC_SCTL_EXTSMPT_Msk;
AnnaBridge 172:7d866c31b3c5 129
AnnaBridge 172:7d866c31b3c5 130 eadc->SCTL[u32ModuleNum] |= (u32ExtendSampleTime << EADC_SCTL_EXTSMPT_Pos);
AnnaBridge 172:7d866c31b3c5 131
AnnaBridge 172:7d866c31b3c5 132 }
AnnaBridge 172:7d866c31b3c5 133
AnnaBridge 172:7d866c31b3c5 134 /*@}*/ /* end of group EADC_EXPORTED_FUNCTIONS */
AnnaBridge 172:7d866c31b3c5 135
AnnaBridge 172:7d866c31b3c5 136 /*@}*/ /* end of group EADC_Driver */
AnnaBridge 172:7d866c31b3c5 137
AnnaBridge 172:7d866c31b3c5 138 /*@}*/ /* end of group M480_Device_Driver */
AnnaBridge 172:7d866c31b3c5 139
AnnaBridge 172:7d866c31b3c5 140 /*** (C) COPYRIGHT 2016 Nuvoton Technology Corp. ***/