Bouffalo SDK  1.0
Bouffalolab Software Development Kit
bflb_auadc.h
Go to the documentation of this file.
1 #ifndef _BFLB_AUADC_H
2 #define _BFLB_AUADC_H
3 
4 #include "bflb_core.h"
5 
17 #define AUADC_SAMPLING_RATE_8K 0 /* audio mode */
18 #define AUADC_SAMPLING_RATE_16K 1 /* audio mode */
19 #define AUADC_SAMPLING_RATE_24K 2 /* audio mode, same as 22.02K, adjust the AUPLL clock */
20 #define AUADC_SAMPLING_RATE_32K 3 /* audio mode */
21 #define AUADC_SAMPLING_RATE_48K 4 /* audio mode, same as 44.1K, adjust the AUPLL clock */
22 #define AUADC_SAMPLING_RATE_MEASURE_128K 8 /* only used in ADC measurement mode */
23 #define AUADC_SAMPLING_RATE_MEASURE_256K 9 /* only used in ADC measurement mode */
24 #define AUADC_SAMPLING_RATE_MEASURE_512K 10 /* only used in ADC measurement mode */
25 
32 #define AUADC_INPUT_MODE_ADC 0 /* Analog ADC */
33 #define AUADC_INPUT_MODE_PDM_L 1 /* PDM left channel */
34 #define AUADC_INPUT_MODE_PDM_R 2 /* PDM right channel */
35 
42 #define AUADC_DATA_FORMAT_16BIT 3
43 #define AUADC_DATA_FORMAT_20BIT 2
44 #define AUADC_DATA_FORMAT_24BIT 1
45 #define AUADC_DATA_FORMAT_32BIT 0
46 
53 #define AUADC_ADC_ANALOG_CH_0 0
54 #define AUADC_ADC_ANALOG_CH_1 1
55 #define AUADC_ADC_ANALOG_CH_2 2
56 #define AUADC_ADC_ANALOG_CH_3 3
57 #define AUADC_ADC_ANALOG_CH_4 4
58 #define AUADC_ADC_ANALOG_CH_5 5
59 #define AUADC_ADC_ANALOG_CH_6 6
60 #define AUADC_ADC_ANALOG_CH_7 7
61 
69 #define AUADC_ADC_MEASURE_RATE_SPS_2_5 0
70 #define AUADC_ADC_MEASURE_RATE_SPS_5 1
71 #define AUADC_ADC_MEASURE_RATE_SPS_10 2
72 #define AUADC_ADC_MEASURE_RATE_SPS_20 3
73 #define AUADC_ADC_MEASURE_RATE_SPS_25 4
74 #define AUADC_ADC_MEASURE_RATE_SPS_50 5
75 #define AUADC_ADC_MEASURE_RATE_SPS_100 6
76 #define AUADC_ADC_MEASURE_RATE_SPS_200 7
77 #define AUADC_ADC_MEASURE_RATE_SPS_400 8
78 #define AUADC_ADC_MEASURE_RATE_SPS_800 9
79 #define AUADC_ADC_MEASURE_RATE_SPS_1000 10
80 #define AUADC_ADC_MEASURE_RATE_SPS_2000 11
81 #define AUADC_ADC_MEASURE_RATE_SPS_4000 12
82 
90 #define AUADC_ADC_MODE_AUDIO 0
91 #define AUADC_ADC_MODE_MEASURE 1
92 
99 #define AUADC_ADC_PGA_MODE_AC_DIFFER 0
100 #define AUADC_ADC_PGA_MODE_AC_SINGLE 1
101 #define AUADC_ADC_PGA_MODE_DC_DIFFER 2
102 #define AUADC_ADC_PGA_MODE_DC_SINGLE 3
103 
110 #define AUADC_INTMASK_FIFO_OVER (1 << 1)
111 #define AUADC_INTMASK_FIFO_UNDER (1 << 2)
112 #define AUADC_INTMASK_FIFO_AVAILABLE (1 << 3)
113 
120 #define AUADC_INTSTS_FIFO_OVER (1 << 1)
121 #define AUADC_INTSTS_FIFO_UNDER (1 << 2)
122 #define AUADC_INTSTS_FIFO_AVAILABLE (1 << 4)
123 
130 #define AUADC_CMD_RECORD_START (0x01)
131 #define AUADC_CMD_RECORD_STOP (0x02)
132 #define AUADC_CMD_SET_VOLUME_VAL (0x03)
133 #define AUADC_CMD_SET_PGA_GAIN_VAL (0x04)
134 #define AUADC_CMD_CLEAR_RX_FIFO (0x05)
135 #define AUADC_CMD_GET_RX_FIFO_CNT (0x06)
136 
149  uint8_t sampling_rate;
150  uint8_t input_mode;
151  uint8_t data_format;
152  uint8_t fifo_threshold;
153 };
154 
168  uint8_t adc_mode;
169  uint8_t adc_pga_mode;
172  uint8_t adc_pga_gain;
174 };
175 
176 #ifdef __cplusplus
177 extern "C" {
178 #endif
179 
180 int bflb_auadc_init(struct bflb_device_s *dev, const struct bflb_auadc_init_config_s *config);
181 
182 int bflb_auadc_adc_init(struct bflb_device_s *dev, const struct bflb_auadc_adc_init_config_s *config);
183 
184 int bflb_auadc_link_rxdma(struct bflb_device_s *dev, bool enable);
185 
186 int bflb_auadc_int_mask(struct bflb_device_s *dev, uint32_t int_sts);
187 
188 int bflb_auadc_int_unmask(struct bflb_device_s *dev, uint32_t int_sts);
189 
190 int bflb_auadc_get_intstatus(struct bflb_device_s *dev);
191 
192 int bflb_auadc_feature_control(struct bflb_device_s *dev, int cmd, size_t arg);
193 
194 #ifdef __cplusplus
195 }
196 #endif
197 
206 #endif
auadc adc analog initialization configuration structure
Definition: bflb_auadc.h:166
int bflb_auadc_feature_control(struct bflb_device_s *dev, int cmd, size_t arg)
int bflb_auadc_int_mask(struct bflb_device_s *dev, uint32_t int_sts)
int bflb_auadc_adc_init(struct bflb_device_s *dev, const struct bflb_auadc_adc_init_config_s *config)
int bflb_auadc_link_rxdma(struct bflb_device_s *dev, bool enable)
int bflb_auadc_int_unmask(struct bflb_device_s *dev, uint32_t int_sts)
int bflb_auadc_init(struct bflb_device_s *dev, const struct bflb_auadc_init_config_s *config)
auadc initialization configuration structure
Definition: bflb_auadc.h:148
int bflb_auadc_get_intstatus(struct bflb_device_s *dev)