MINI58_BSP V3.01.005
The Board Support Package for Mini58 Series MCU
adc.c
Go to the documentation of this file.
1/**************************************************************************/
12#include "Mini58Series.h"
13
38void ADC_Open(ADC_T *adc,
39 uint32_t u32InputMode,
40 uint32_t u32OpMode,
41 uint32_t u32ChMask)
42{
43 ADC->CHEN = (ADC->CHEN & ~(ADC_CHEN_CHEN0_Msk |
50 ADC_CHEN_CHEN7_Msk)) | u32ChMask;
51 return;
52}
53
59void ADC_Close(ADC_T *adc)
60{
61 SYS->IPRST1 |= SYS_IPRST1_ADCRST_Msk;
62 SYS->IPRST1 &= ~SYS_IPRST1_ADCRST_Msk;
63 return;
64
65}
66
82 uint32_t u32Source,
83 uint32_t u32Param)
84{
86 if(u32Source == ADC_TRIGGER_BY_EXT_PIN)
87 {
88 ADC->CTL |= u32Source | u32Param | ADC_CTL_HWTRGEN_Msk;
89 }
90 else
91 {
92 ADC->TRGDLY = (ADC->TRGDLY & ~ADC_TRGDLY_DELAY_Msk) | u32Param;
93 ADC->CTL |= u32Source | ADC_CTL_HWTRGEN_Msk;
94 }
95 return;
96}
97
104{
106 return;
107}
108
129 uint32_t u32ChNum,
130 uint32_t u32SampleTime)
131{
132 ADC->EXTSMPT = (ADC->EXTSMPT & ~ADC_EXTSMPT_EXTSMPT_Msk) | u32SampleTime;
133}
134
146void ADC_EnableInt(ADC_T *adc, uint32_t u32Mask)
147{
148 if(u32Mask & ADC_ADIF_INT)
149 ADC->CTL |= ADC_CTL_ADCIEN_Msk;
150 if(u32Mask & ADC_CMP0_INT)
151 ADC->CMP0 |= ADC_CMP0_ADCMPIE_Msk;
152 if(u32Mask & ADC_CMP1_INT)
153 ADC->CMP1 |= ADC_CMP1_ADCMPIE_Msk;
154
155 return;
156}
157
169void ADC_DisableInt(ADC_T *adc, uint32_t u32Mask)
170{
171 if(u32Mask & ADC_ADIF_INT)
172 ADC->CTL &= ~ADC_CTL_ADCIEN_Msk;
173 if(u32Mask & ADC_CMP0_INT)
174 ADC->CMP0 &= ~ADC_CMP0_ADCMPIE_Msk;
175 if(u32Mask & ADC_CMP1_INT)
176 ADC->CMP1 &= ~ADC_CMP1_ADCMPIE_Msk;
177
178 return;
179}
180
193void ADC_SeqModeEnable(ADC_T *adc, uint32_t u32SeqTYPE, uint32_t u32ModeSel)
194{
195 // Enable ADC Sequential Mode
196 ADC->SEQCTL = ADC->SEQCTL | ADC_SEQCTL_SEQEN_Msk;
197
198 // Select ADC Sequential Mode Type
199 ADC->SEQCTL = (ADC->SEQCTL & ~(ADC_SEQCTL_SEQTYPE_Msk)) | (u32SeqTYPE << ADC_SEQCTL_SEQTYPE_Pos);
200
201 // Select ADC Sequential Mode Type
202 ADC->SEQCTL = (ADC->SEQCTL & ~(ADC_SEQCTL_MODESEL_Msk)) | (u32ModeSel << ADC_SEQCTL_MODESEL_Pos);
203
204 return;
205}
206
216void ADC_SeqModeTriggerSrc(ADC_T *adc, uint32_t u32SeqModeTriSrc1, uint32_t u32SeqModeTriSrc2)
217{
218 // Select PWM Trigger Source Selection for TRG1CTL or TRG2CTL
219 ADC->SEQCTL = (ADC->SEQCTL & ~(ADC_SEQCTL_TRG1CTL_Msk)) | (u32SeqModeTriSrc1 << ADC_SEQCTL_TRG1CTL_Pos);
220 ADC->SEQCTL = (ADC->SEQCTL & ~(ADC_SEQCTL_TRG2CTL_Msk)) | (u32SeqModeTriSrc2 << ADC_SEQCTL_TRG2CTL_Pos);
221 return;
222}
223 /* end of group Mini58_ADC_EXPORTED_FUNCTIONS */
225 /* end of group Mini58_ADC_Driver */
227 /* end of group Mini58_Device_Driver */
229
230/*** (C) COPYRIGHT 2022 Nuvoton Technology Corp. ***/
Mini58 series peripheral access layer header file. This file contains all the peripheral register's d...
#define SYS_IPRST1_ADCRST_Msk
#define ADC_CMP0_INT
Definition: adc.h:44
#define ADC_TRIGGER_BY_PWM
Definition: adc.h:40
#define ADC_ADIF_INT
Definition: adc.h:43
#define ADC_TRIGGER_BY_EXT_PIN
Definition: adc.h:39
#define ADC_CMP1_INT
Definition: adc.h:45
#define ADC_RISING_EDGE_TRIGGER
Definition: adc.h:42
void ADC_SeqModeTriggerSrc(ADC_T *adc, uint32_t u32SeqModeTriSrc1, uint32_t u32SeqModeTriSrc2)
ADC PWM Sequential Mode PWM Trigger Source and type.
Definition: adc.c:216
void ADC_EnableHWTrigger(ADC_T *adc, uint32_t u32Source, uint32_t u32Param)
Configure the hardware trigger condition and enable hardware trigger.
Definition: adc.c:81
void ADC_Close(ADC_T *adc)
Disable ADC module.
Definition: adc.c:59
void ADC_SeqModeEnable(ADC_T *adc, uint32_t u32SeqTYPE, uint32_t u32ModeSel)
ADC PWM Sequential Mode Control.
Definition: adc.c:193
void ADC_SetExtraSampleTime(ADC_T *adc, uint32_t u32ChNum, uint32_t u32SampleTime)
Set ADC sample time for designated channel.
Definition: adc.c:128
void ADC_Open(ADC_T *adc, uint32_t u32InputMode, uint32_t u32OpMode, uint32_t u32ChMask)
This API configures ADC module to be ready for convert the input from selected channel.
Definition: adc.c:38
void ADC_DisableInt(ADC_T *adc, uint32_t u32Mask)
Disable the interrupt(s) selected by u32Mask parameter.
Definition: adc.c:169
void ADC_DisableHWTrigger(ADC_T *adc)
Disable hardware trigger ADC function.
Definition: adc.c:103
void ADC_EnableInt(ADC_T *adc, uint32_t u32Mask)
Enable the interrupt(s) selected by u32Mask parameter.
Definition: adc.c:146
#define ADC_SEQCTL_SEQEN_Msk
Definition: Mini58Series.h:782
#define ADC_CHEN_CHEN2_Msk
Definition: Mini58Series.h:698
#define ADC_CHEN_CHEN5_Msk
Definition: Mini58Series.h:707
#define ADC_CHEN_CHEN3_Msk
Definition: Mini58Series.h:701
#define ADC_CHEN_CHEN4_Msk
Definition: Mini58Series.h:704
#define ADC_CHEN_CHEN0_Msk
Definition: Mini58Series.h:692
#define ADC_CMP1_ADCMPIE_Msk
Definition: Mini58Series.h:740
#define ADC_SEQCTL_SEQTYPE_Msk
Definition: Mini58Series.h:785
#define ADC_CHEN_CHEN1_Msk
Definition: Mini58Series.h:695
#define ADC_CMP0_ADCMPIE_Msk
Definition: Mini58Series.h:722
#define ADC_SEQCTL_MODESEL_Msk
Definition: Mini58Series.h:788
#define ADC_SEQCTL_TRG1CTL_Pos
Definition: Mini58Series.h:790
#define ADC_CTL_HWTRGEN_Msk
Definition: Mini58Series.h:686
#define ADC_CTL_ADCIEN_Msk
Definition: Mini58Series.h:677
#define ADC_CHEN_CHEN6_Msk
Definition: Mini58Series.h:710
#define ADC_SEQCTL_TRG1CTL_Msk
Definition: Mini58Series.h:791
#define ADC_SEQCTL_SEQTYPE_Pos
Definition: Mini58Series.h:784
#define ADC_CHEN_CHEN7_Msk
Definition: Mini58Series.h:713
#define ADC_SEQCTL_TRG2CTL_Pos
Definition: Mini58Series.h:793
#define ADC_SEQCTL_TRG2CTL_Msk
Definition: Mini58Series.h:794
#define ADC_SEQCTL_MODESEL_Pos
Definition: Mini58Series.h:787
#define ADC
Pointer to ADC register structure.
#define SYS
Pointer to SYS register structure.