BLE5.2 1.0
开发文档说明
xc_drv_adc.h
浏览该文件的文档.
1
25#ifndef _XC_DRV_ADC_H_
26#define _XC_DRV_ADC_H_
27
28/*-----------------------------------------------------------------------------------
29 INCLUDE HEADE FILES
30 ------------------------------------------------------------------------------------*/
31#include <stdbool.h>
32#include <stdio.h>
33
34#include "xc6xxx.h"
35
36/*------------------------------------------------------------------------------------
37 Macros
38 -------------------------------------------------------------------------------------*/
39
40#define ADC_FIFO_DOUT_LEN 0x10UL
41#define ADC_TIMER 4
42
43
44#define ADC_MAIN_CTL_AUTO_SW_ENABLE (0x01UL)
45#define ADC_MAIN_CTL_AUTO_SW_DISABLE (0x00UL)
46
47#define ADC_MAIN_CTL_ADC_EN_ENABLE (0x01UL)
48#define ADC_MAIN_CTL_ADC_EN_DISABLE (0x00UL)
49
50#define ADC_CHAN_CTL_CHAN_1_SET (0x01UL)
51#define ADC_CHAN_CTL_CHAN_2_SET (0x02UL)
52#define ADC_CHAN_CTL_CHAN_3_SET (0x04UL)
53#define ADC_CHAN_CTL_CHAN_4_SET (0x08UL)
54
55#define ADC_FIFO_CTL_FIFO_FLUSH_SET (0x01UL)
56#define ADC_FIFO_CTL_FIFO_FLUSH_RESET (0x00UL)
57
58#define ADC_FIFO_CTL_READ_REQ_THRESH_LEN_1 (0x01UL)
59#define ADC_FIFO_CTL_READ_REQ_THRESH_LEN_2 (0x02UL)
60#define ADC_FIFO_CTL_READ_REQ_THRESH_LEN_3 (0x03UL)
61#define ADC_FIFO_CTL_READ_REQ_THRESH_LEN_4 (0x04UL)
62#define ADC_FIFO_CTL_READ_REQ_THRESH_LEN_5 (0x05UL)
63#define ADC_FIFO_CTL_READ_REQ_THRESH_LEN_6 (0x06UL)
64#define ADC_FIFO_CTL_READ_REQ_THRESH_LEN_7 (0x07UL)
65#define ADC_FIFO_CTL_READ_REQ_THRESH_LEN_8 (0x08UL)
66#define ADC_FIFO_CTL_READ_REQ_THRESH_LEN_9 (0x09UL)
67#define ADC_FIFO_CTL_READ_REQ_THRESH_LEN_10 (0x0AUL)
68#define ADC_FIFO_CTL_READ_REQ_THRESH_LEN_11 (0x0BUL)
69#define ADC_FIFO_CTL_READ_REQ_THRESH_LEN_12 (0x0CUL)
70#define ADC_FIFO_CTL_READ_REQ_THRESH_LEN_13 (0x0DUL)
71#define ADC_FIFO_CTL_READ_REQ_THRESH_LEN_14 (0x0EUL)
72#define ADC_FIFO_CTL_READ_REQ_THRESH_LEN_15 (0x0FUL)
73
74#define ADC_INT_FIFO_ERROR_INT_SET (0x01UL<<0x01UL)
75#define ADC_INT_READ_REQ_INT_SET (0x01UL<<0x00UL)
76
77#define ADC_EXT_EDGE_SEL_INTER (0x00UL)
78#define ADC_EXT_EDGE_SEL_EXTERN_RISE (0x01UL)
79#define ADC_EXT_EDGE_SEL_EXTERN_FALL (0x02UL)
80#define ADC_EXT_EDGE_SEL_EXTERN_BOTH (0x03UL)
81
82#define ADC_EXT_TRIGGER_SEL_PWM0 (0x00UL)
83#define ADC_EXT_TRIGGER_SEL_PWM1 (0x01UL)
84#define ADC_EXT_TRIGGER_SEL_PWM2 (0x02UL)
85#define ADC_EXT_TRIGGER_SEL_PWM3 (0x03UL)
86#define ADC_EXT_TRIGGER_SEL_PWM4 (0x04UL)
87#define ADC_EXT_TRIGGER_SEL_PWM5 (0x05UL)
88#define ADC_EXT_TRIGGER_SEL_PWM_BRK1 (0x06UL)
89#define ADC_EXT_TRIGGER_SEL_PWM_BRK2 (0x07UL)
90
91#define ADC_EXT_DATA_MODE_32BIT (0x00UL)
92#define ADC_EXT_DATA_MODE_LOW16BIT (0x01UL)
93
94#define ADC_EXT_SAMPLE_NUM_1 (0x00UL)
95#define ADC_EXT_SAMPLE_NUM_2 (0x01UL)
96#define ADC_EXT_SAMPLE_NUM_3 (0x02UL)
97#define ADC_EXT_SAMPLE_NUM_4 (0x03UL)
98#define ADC_EXT_SAMPLE_NUM_5 (0x04UL)
99#define ADC_EXT_SAMPLE_NUM_6 (0x05UL)
100#define ADC_EXT_SAMPLE_NUM_7 (0x06UL)
101#define ADC_EXT_SAMPLE_NUM_8 (0x07UL)
102#define ADC_EXT_SAMPLE_NUM_9 (0x08UL)
103#define ADC_EXT_SAMPLE_NUM_10 (0x09UL)
104#define ADC_EXT_SAMPLE_NUM_11 (0x0AUL)
105#define ADC_EXT_SAMPLE_NUM_12 (0x0BUL)
106#define ADC_EXT_SAMPLE_NUM_13 (0x0CUL)
107#define ADC_EXT_SAMPLE_NUM_14 (0x0DUL)
108#define ADC_EXT_SAMPLE_NUM_15 (0x0EUL)
109#define ADC_EXT_SAMPLE_NUM_16 (0x0FUL)
110
111#define ADC_RF_CTL_PD_GADC_POWERDOWN (0x01UL)
112#define ADC_RF_CTL_PD_GADC_WAKWUP (0x00UL)
113
114#define ADC_RF_CTL_REFSEL_AVDD (0x01UL)
115#define ADC_RF_CTL_REFSEL_2_4 (0x00UL)
116
117#define ADC_RF_CTL_ADC_CTL_MUX_DIGITAL (0x01UL)
118#define ADC_RF_CTL_ADC_CTL_MUX_SPI (0x00UL)
119
120/*------------------------------------------------------------------------------------
121 TypeDef
122 -------------------------------------------------------------------------------------*/
123typedef struct
124{
125 unsigned int value_2 : 12;
126 unsigned int chanel_2 : 4;
127 unsigned int value_1 : 12;
128 unsigned int chanel_1 : 4;
130
131typedef enum
132{
141 ADC_CH8_NOPIN = 8, // cmp0
142 ADC_CH9_NOPIN = 9, // cmp1
143 ADC_CH10_NOPIN = 10, // cmp2
144 ADC_CH11_NOPIN = 11, // pga
150
151typedef enum
152{
156
157typedef enum
158{
165
166typedef enum
167{
168 // Single-ended mode. PSELN will be ignored, negative input to ADC shorted
169 // to GND.
171 ADC_SAMPMODE_DIFFERENTIAL = 0x01UL // Differential mode.
173
174typedef enum
175{
176 ADC_SAMPEDGE_FALL = 0x00UL,
178 ADC_SAMPEDGE_RISE = 0x01UL
180
181typedef struct
182{
186 uint32_t ExtSampleNum;
187 uint32_t ExtDataMode;
189 uint32_t ExtEdgeSel;
191
192/*------------------------------------------------------------------------------------
193 Global Variables
194 -------------------------------------------------------------------------------------*/
195
196/*------------------------------------------------------------------------------------
197 Inline Functions
198 -------------------------------------------------------------------------------------*/
199
200static __inline void xc_adc_fifo_flush(void)
201{
202 adc_fifo_ctl__fifo_flush__setf(ADC_FIFO_CTL_FIFO_FLUSH_SET);
203 adc_fifo_ctl__fifo_flush__setf(ADC_FIFO_CTL_FIFO_FLUSH_RESET);
204}
205
206static __inline void xc_adc_refvol_set(uint8_t ref_vol)
207{
208 adc_rf_ctl__pd_adc__setf(DISABLE);
209
210 if (ref_vol == ADC_REF_VOL_2_48V) {
211 adc_rf_ctl__gadc_vref_sel__setf(ADC_RF_CTL_REFSEL_2_4);
212
213 } else {
214 adc_rf_ctl__gadc_vref_sel__setf(ADC_RF_CTL_REFSEL_AVDD);
215 }
216}
217
218static __inline void xc_adc_freq_set(uint8_t freq)
219{
220 adc_rf_ctl__adc_clkdiv__setf(freq);
221 adc_rf_ctl__adc_ctl_mux__setf(ADC_RF_CTL_ADC_CTL_MUX_DIGITAL);
222}
223
224/*------------------------------------------------------------------------------------
225 Exported Functions
226 -------------------------------------------------------------------------------------*/
227
228void xc_adc_init(ADC_InitCfg_t *adc_cfg);
229void xc_adc_start_get_value(ADC_ChannelTypeDef_t Channel, uint16_t *adc_val);
230
231void xc_adc_enable_it(uint8_t it);
232void xc_adc_disable_it(uint8_t it);
233void xc_adc_fifo_req_len_set(uint8_t len);
234void xc_adc_wait_time_set(uint8_t timer0, uint16_t timer1);
235void xc_adc_ch_auto_enable(void);
236void xc_adc_ch_auto_disable(void);
237void xc_adc_ch_auto_set(uint8_t ch);
238void xc_adc_ch_not_auto_set(uint8_t ch);
239void xc_adc_it_set(uint8_t it);
240uint8_t xc_adc_it_get(void);
241void xc_adc_ch_not_auto_set(uint8_t ch);
242uint32_t xc_adc_data_get(void);
243void xc_adc_enable(void);
244void xc_adc_disable(void);
245uint16_t xc_adc_it_collectval_get(void);
247
248void adc_intr_callback(void);
249
250#endif
unsigned int chanel_1
Definition xc_drv_adc.h:128
unsigned int chanel_2
Definition xc_drv_adc.h:126
unsigned int value_2
Definition xc_drv_adc.h:125
unsigned int value_1
Definition xc_drv_adc.h:127
uint32_t ExtEdgeSel
Definition xc_drv_adc.h:189
uint32_t ExtTriggerSel
Definition xc_drv_adc.h:188
ADC_FreqTypeDef_t Freq
Definition xc_drv_adc.h:184
ADC_RefVolTypeDef_t RefVol
Definition xc_drv_adc.h:183
ADC_SampEdgeTypeDef_t SampEdge
Definition xc_drv_adc.h:185
uint32_t ExtDataMode
Definition xc_drv_adc.h:187
uint32_t ExtSampleNum
Definition xc_drv_adc.h:186
void xc_adc_ch_auto_disable(void)
xc_adc_ch_auto_enable
Definition xc_drv_adc.c:393
static __inline void xc_adc_refvol_set(uint8_t ref_vol)
Definition xc_drv_adc.h:206
static __inline void xc_adc_fifo_flush(void)
Definition xc_drv_adc.h:200
static __inline void xc_adc_freq_set(uint8_t freq)
Definition xc_drv_adc.h:218
void xc_adc_wait_time_set(uint8_t timer0, uint16_t timer1)
xc_adc_wait_time_set
Definition xc_drv_adc.c:360
ADC_FreqTypeDef_t
Definition xc_drv_adc.h:158
@ ADC_FREQ_4M
Definition xc_drv_adc.h:160
@ ADC_FREQ_8M
Definition xc_drv_adc.h:159
@ ADC_FREQ_500K
Definition xc_drv_adc.h:163
@ ADC_FREQ_2M
Definition xc_drv_adc.h:161
@ ADC_FREQ_1M
Definition xc_drv_adc.h:162
void xc_adc_init(ADC_InitCfg_t *adc_cfg)
xc_adc_init
Definition xc_drv_adc.c:67
ADC_ChannelTypeDef_t
Definition xc_drv_adc.h:132
@ ADC_CH1_PIN20
Definition xc_drv_adc.h:134
@ ADC_CH9_NOPIN
Definition xc_drv_adc.h:142
@ ADC_CH11_NOPIN
Definition xc_drv_adc.h:144
@ ADC_CH12_PIN2
Definition xc_drv_adc.h:145
@ ADC_CH13_PIN3
Definition xc_drv_adc.h:146
@ ADC_CH0_PIN21
Definition xc_drv_adc.h:133
@ ADC_CH14_PIN6
Definition xc_drv_adc.h:147
@ ADC_CH2_PIN19
Definition xc_drv_adc.h:135
@ ADC_CH4_PIN0
Definition xc_drv_adc.h:137
@ ADC_CH15_PIN7
Definition xc_drv_adc.h:148
@ ADC_CH10_NOPIN
Definition xc_drv_adc.h:143
@ ADC_CH5_PIN1
Definition xc_drv_adc.h:138
@ ADC_CH7_PIN5
Definition xc_drv_adc.h:140
@ ADC_CH3_PIN18
Definition xc_drv_adc.h:136
@ ADC_CH6_PIN4
Definition xc_drv_adc.h:139
@ ADC_CH8_NOPIN
Definition xc_drv_adc.h:141
ADC_SampEdgeTypeDef_t
Definition xc_drv_adc.h:175
@ ADC_SAMPEDGE_FALL
Definition xc_drv_adc.h:176
@ ADC_SAMPEDGE_RISE
Differential mode.
Definition xc_drv_adc.h:178
void xc_adc_it_set(uint8_t it)
xc_adc_it_set
Definition xc_drv_adc.c:446
void xc_adc_channel_gpio_config(ADC_ChannelTypeDef_t Channel)
xc_adc_data_average
Definition xc_drv_adc.c:147
void xc_adc_start_get_value(ADC_ChannelTypeDef_t Channel, uint16_t *adc_val)
xc_adc_startgetvalue
Definition xc_drv_adc.c:210
void xc_adc_fifo_req_len_set(uint8_t len)
xc_adc_fifo_req_len_set
Definition xc_drv_adc.c:337
void xc_adc_ch_auto_enable(void)
xc_adc_ch_auto_enable
Definition xc_drv_adc.c:377
uint16_t xc_adc_it_collectval_get(void)
xc_adc_it_collectval_get
Definition xc_drv_adc.c:509
uint8_t xc_adc_it_get(void)
xc_adc_it_get
Definition xc_drv_adc.c:463
void xc_adc_enable(void)
xc_adc_enable
Definition xc_drv_adc.c:281
void adc_intr_callback(void)
adc_intr_callback
Definition xc_drv_adc.c:535
void xc_adc_enable_it(uint8_t it)
xc_adc_enable_it
Definition xc_drv_adc.c:314
uint32_t xc_adc_data_get(void)
xc_adc_data_get
Definition xc_drv_adc.c:480
ADC_SampModeTypeDef_t
Definition xc_drv_adc.h:167
@ ADC_SAMPMODE_SINGLE_ENDED
Definition xc_drv_adc.h:170
@ ADC_SAMPMODE_DIFFERENTIAL
Definition xc_drv_adc.h:171
void xc_adc_ch_not_auto_set(uint8_t ch)
xc_adc_ch_auto_set
Definition xc_drv_adc.c:425
void xc_adc_disable_it(uint8_t it)
Definition xc_drv_adc.c:319
ADC_RefVolTypeDef_t
Definition xc_drv_adc.h:152
@ ADC_REF_VOL_3_3V
Definition xc_drv_adc.h:154
@ ADC_REF_VOL_2_48V
Definition xc_drv_adc.h:153
void xc_adc_ch_auto_set(uint8_t ch)
xc_adc_ch_auto_set
Definition xc_drv_adc.c:409
void xc_adc_disable(void)
xc_adc_disable
Definition xc_drv_adc.c:297