blob: c628a5f6784ad86c089fd266395253006f532191 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
/**
*********************************************************************************************************
* Copyright(c) 2018, Realtek Semiconductor Corporation. All rights reserved.
*********************************************************************************************************
* @file io_adc.h
* @brief
* @details
* @author yuan
* @date 2018-12-07
* @version v1.0
*********************************************************************************************************
*/
#ifndef __IO_ADC_H
#define __IO_ADC_H
#ifdef __cplusplus
extern "C" {
#endif
/* Includes ------------------------------------------------------------------*/
#include "rtl876x_adc.h"
#include "rtl876x_nvic.h"
#include "rtl876x_pinmux.h"
#include "rtl876x_rcc.h"
#include "app_msg.h"
#include "board.h"
/* Defines ------------------------------------------------------------------*/
/** ADC sample channel config.
* ADC sample channel config:P2_2,P2_3,P2_6,P2_7 and VBAT
* ADC sample channel index select: #define ADC_Channel_Index_0 0
* #define ADC_Channel_Index_1 1
* #define ADC_Channel_Index_2 2
* #define ADC_Channel_Index_3 3
* If ADC_SAMPLE_PIN = P2_2, then ADC_SAMPLE_CHANNEL = ADC_Channel_Index_0;
* If ADC_SAMPLE_PIN = P2_3, then ADC_SAMPLE_CHANNEL = ADC_Channel_Index_1;
* If ADC_SAMPLE_PIN = P2_6, then ADC_SAMPLE_CHANNEL = ADC_Channel_Index_4;
* If ADC_SAMPLE_PIN = P2_7, then ADC_SAMPLE_CHANNEL = ADC_Channel_Index_5;
*/
#define ADC_SAMPLE_CHANNEL_0 ADC_Channel_Index_0
#define ADC_SAMPLE_CHANNEL_1 ADC_Channel_Index_1
#define ADC_SAMPLE_CHANNEL_2 ADC_Channel_Index_2
#define ADC_SAMPLE_CHANNEL_3 ADC_Channel_Index_3
/* Define schedule index. */
#define ADC_Schedule_Index_0 0
#define ADC_Schedule_Index_1 1
#define ADC_Schedule_Index_2 2
#define ADC_Schedule_Index_3 3
#define ADC_Schedule_Index_4 4
#define ADC_Schedule_Index_5 5
#define ADC_Schedule_Index_6 6
#define ADC_Schedule_Index_7 7
#define ADC_Schedule_Index_8 8
#define ADC_Schedule_Index_9 9
#define ADC_Schedule_Index_10 10
#define ADC_Schedule_Index_11 11
#define ADC_Schedule_Index_12 12
#define ADC_Schedule_Index_13 13
#define ADC_Schedule_Index_14 14
#define ADC_Schedule_Index_15 15
/** Define that how many schedules to use, max 16.
*/
#define ADC_SCHEDULE_NUM (2)
/** ADC mode config.
* ADC pin hardware mode: bypass mode
* divide mode
*/
#define ADC_DIVIDE_MODE 0
#define ADC_BYPASS_MODE 1
#define ADC_MODE_DIVIDE_OR_BYPASS ADC_DIVIDE_MODE
/** ADC data hardware average config,
* only sample one channel data and onle read data from ADC_Schedule_Index_0.
* Mode: 0: ADC data hardware average disable
* 1: ADC data hardware average enable
*/
#define ADC_DATA_HW_AVERAGE 1
/** ADC data output mode config.
* Mode: 0: ADC data output to schedule table
* 1: ADC data output to fifo
*/
#define ADC_DATA_OUTPUT_TO_FIFO 0
/** ADC ADC multiple fixed interval sampling config.
* Mode: 0: ADC sample once and stop
* 1: ADC timing sampling
*/
#define ADC_MULTI_SAMPLE 1
#define ADC_ONE_SHOT_SAMPLE_PERIOD (1000000-1)//100ms
/* ADC global data struct*/
typedef struct
{
uint16_t RawData[32];
uint8_t RawDataLen;
} ADC_Data_TypeDef;
extern ADC_Data_TypeDef ADC_Global_Data;
void global_data_adc_init(void);
void board_adc_init(void);
void adc_demo_driver_init(void);
void adc_sample_start(void);
void io_handle_adc_msg(T_IO_MSG *io_adc_msg);
#ifdef __cplusplus
}
#endif
#endif
|