33static uint16_t
adc_value[2 * ADC_FIFO_DOUT_LEN] = {0};
69 cpr_rstctl_ctlapb_sw__gpadc_rstn__setf(RSTCTL_ENABLE);
70 cpr_rstctl_ctlapb_sw__gpadc_rstn__setf(RSTCTL_DISABLE);
71 cpr_ctlapbclken_grctl__gpadc_pclk_en__setf(ENABLE);
73 cpr_opa_ctrl_reg__bg_5v_ctrl__setf(ENABLE);
75 adc_main_ctl__adc_en__setf(ADC_MAIN_CTL_ADC_EN_DISABLE);
79 adc_timer0_set(ADC_TIMER);
81 adc_main_ctl__edge_sel__setf(adc_cfg->
SampEdge);
87 adc_main_ctl__ext_edge_sel__setf(adc_cfg->
ExtEdgeSel);
89 adc_main_ctl__ext_sample_num__setf(adc_cfg->
ExtSampleNum);
93 adc_main_ctl__ext_data_mode__setf(adc_cfg->
ExtDataMode);
108 uint16_t add_cnt = 0;
109 uint32_t sum_data = 0;
110 uint8_t filter_cnt = 0;
112 filter_cnt = len / 4;
114 for (
int i = 0; i < len - 1; i++) {
115 for (
int j = 0; j < len - i - 1; j++) {
116 if (data[j] > data[j + 1]) {
117 uint16_t temp = data[j];
118 data[j] = data[j + 1];
124 for (
int i = filter_cnt; i < len - filter_cnt; i++) {
132 return sum_data / add_cnt;
214 uint32_t time_out = 100000;
215 uint8_t adc_count = 0;
217 adc_main_ctl__adc_en__setf(ADC_MAIN_CTL_ADC_EN_DISABLE);
219 adc_chan_ctl__select_chan__setf(Channel);
221 adc_fifo_ctl__read_req_thresh__setf(ADC_FIFO_CTL_READ_REQ_THRESH_LEN_8);
225 adc_int_set(adc_int_get());
227 adc_main_ctl__adc_en__setf(ADC_MAIN_CTL_ADC_EN_ENABLE);
229 val = adc_int_raw_get();
231 while (((val & ADC_INT_READ_REQ_INT_SET) != ADC_INT_READ_REQ_INT_SET) &&
235 val = adc_int_raw_get();
240 DEBUG(
"adc time_out\n");
244 adc_main_ctl__adc_en__setf(ADC_MAIN_CTL_ADC_EN_DISABLE);
248 for (
int t = 0; t < ADC_FIFO_CTL_READ_REQ_THRESH_LEN_8; t++) {
249 val = adc_fifo_get();
252 DEBUG(
"channel error :%d\n", t);
256 if (fifo_val->
chanel_1 != Channel) {
257 DEBUG(
"channel error :%d\n", t);
283 adc_main_ctl__adc_en__setf(ADC_MAIN_CTL_ADC_EN_ENABLE) ;
299 adc_main_ctl__adc_en__setf(ADC_MAIN_CTL_ADC_EN_DISABLE) ;
339 adc_fifo_ctl__read_req_thresh__setf(len);
362 adc_timer1_set(timer1);
363 adc_timer0_set(timer0);
379 adc_main_ctl__auto_sw__setf(ADC_MAIN_CTL_AUTO_SW_ENABLE);
395 adc_main_ctl__auto_sw__setf(ADC_MAIN_CTL_AUTO_SW_DISABLE);
411 adc_chan_ctl__chan_auto__setf(ch);
427 adc_chan_ctl__select_chan__setf(ch);
465 return adc_int_get();
482 return adc_fifo__fifo_dout__getf();
523 adc_int_set(adc_int_get());
540 uint8_t adc_count = 0;
542 uint8_t channel = adc_chan_ctl__select_chan__getf();
544 adc_int = adc_int_get();
546 if (!(adc_int & (ADC_INT_READ_REQ_INT_SET | ADC_INT_FIFO_ERROR_INT_SET))) {
553 for (
int t = 0; t < adc_fifo_ctl__read_req_thresh__getf(); t++) {
554 val = adc_fifo_get();
557 DEBUG(
"channel error :%d\n", t);
561 if (fifo_val->
chanel_1 != channel) {
562 DEBUG(
"channel error :%d\n", t);
573 adc_chan_ctl__select_chan__setf(channel);
ADC_RefVolTypeDef_t RefVol
ADC_SampEdgeTypeDef_t SampEdge
GPIO_FUN_SEL_TypeDef FunSel
void xc_adc_ch_auto_disable(void)
xc_adc_ch_auto_enable
void xc_adc_it_collectval_set(uint16_t val)
xc_adc_it_collectval_set
void xc_adc_wait_time_set(uint8_t timer0, uint16_t timer1)
xc_adc_wait_time_set
void xc_adc_init(ADC_InitCfg_t *adc_cfg)
xc_adc_init
void xc_adc_it_set(uint8_t it)
xc_adc_it_set
void xc_adc_channel_gpio_config(ADC_ChannelTypeDef_t Channel)
xc_adc_data_average
void xc_adc_start_get_value(ADC_ChannelTypeDef_t Channel, uint16_t *adc_val)
xc_adc_startgetvalue
void xc_adc_fifo_req_len_set(uint8_t len)
xc_adc_fifo_req_len_set
void xc_adc_ch_auto_enable(void)
xc_adc_ch_auto_enable
uint16_t xc_adc_it_collectval_get(void)
xc_adc_it_collectval_get
uint8_t xc_adc_it_get(void)
xc_adc_it_get
static uint16_t adc_it_val
void GADC_Handler(void)
GADC_Handler
void xc_adc_enable(void)
xc_adc_enable
void xc_adc_enable_it(uint8_t it)
xc_adc_enable_it
uint32_t xc_adc_data_get(void)
xc_adc_data_get
void xc_adc_ch_not_auto_set(uint8_t ch)
xc_adc_ch_auto_set
static uint16_t adc_value[2 *ADC_FIFO_DOUT_LEN]
void xc_adc_disable_it(uint8_t it)
uint16_t xc_adc_data_average(uint16_t *data, uint16_t len)
xc_adc_data_average
__WEAK void adc_intr_callback(void)
adc_intr_callback
void xc_adc_ch_auto_set(uint8_t ch)
xc_adc_ch_auto_set
void xc_adc_disable(void)
xc_adc_disable
static __inline void xc_adc_refvol_set(uint8_t ref_vol)
static __inline void xc_adc_fifo_flush(void)
static __inline void xc_adc_freq_set(uint8_t freq)
void xc_gpio_init(GPIO_InitCfg_t *init_cfg)
xc_gpio_init