ADC

Macros

adc channel

参考 bflb_adc.h 文件,不详细列出。

adc clock div

对 adc 时钟再一次进行分频。分频后的时钟必须小于等于 500K。ADC CLK = CLK_SOURCE/CLK_DIV/adc_clk_div。

1 #define ADC_CLK_DIV_4  1
2 #define ADC_CLK_DIV_8  2
3 #define ADC_CLK_DIV_12 3
4 #define ADC_CLK_DIV_16 4
5 #define ADC_CLK_DIV_20 5
6 #define ADC_CLK_DIV_24 6
7 #define ADC_CLK_DIV_32 7

adc resolution

adc 位数,可以选择 12B、14B、16B。其中 14B 和 16B 自带过采样处理。

1 #define ADC_RESOLUTION_12B 0
2 #define ADC_RESOLUTION_14B 2
3 #define ADC_RESOLUTION_16B 4

adc vref

adc 内置参考电压选择,可以选择 2.0 V 或者 3.2V。

1 #define ADC_VREF_3P2V 0
2 #define ADC_VREF_2P0V 1

Structs

struct bflb_adc_config_s

adc 初始化配置结构体。

1 struct bflb_adc_config_s {
2     uint8_t clk_div;
3     uint8_t scan_conv_mode;
4     uint8_t continuous_conv_mode;
5     uint8_t differential_mode;
6     uint8_t resolution;
7     uint8_t vref;
8 };

parameter

description

clk_div

分频值

scan_conv_mode

是否开启扫描模式

continuous_conv_mode

是否开启连续转换模式

differential_mode

是否开启差分模式

resolution

采样位数

vref

参考电压选择

struct bflb_adc_channel_s

配置 adc 通道时使用。

1 struct bflb_adc_channel_s {
2     uint8_t pos_chan;
3     uint8_t neg_chan;
4 };

parameter

description

pos_chan

正向通道

neg_chan

反向通道(单端模式下无用)

struct bflb_adc_result_s

adc 标准转换结果

1 struct bflb_adc_result_s {
2   int8_t pos_chan;
3   int8_t neg_chan;
4   int32_t value;
5   int32_t millivolt;
6 };

parameter

description

pos_chan

正向通道

neg_chan

反向通道(单端模式下无用)

value

adc 转换结果

millivolt

转换结果转 mv

Functions

bflb_adc_init

说明: 初始化 adc。adc 使用之前需要开启 adc ip 时钟、设置 adc 时钟源和分频值、选择使用的 gpio 为 analog 模式。

1 void bflb_adc_init(struct bflb_device_s *dev, const struct bflb_adc_config_s *config);

parameter

description

dev

设备句柄

config

配置项

bflb_adc_deinit

说明: 反初始化 adc。

1 void bflb_adc_deinit(struct bflb_device_s *dev);

parameter

description

dev

设备句柄

bflb_adc_channel_config

说明: 配置 adc 通道。

1 int bflb_adc_channel_config(struct bflb_device_s *dev, struct bflb_adc_channel_s *chan, uint8_t channels);

parameter

description

dev

设备句柄

chan

通道(一对)

channels

通道对数(单次扫描模式下只能为 1)

bflb_adc_start_conversion

说明: 启动 adc 转换。连续转换模式下只需要调用一次。

1 void bflb_adc_start_conversion(struct bflb_device_s *dev);

parameter

description

dev

设备句柄

bflb_adc_stop_conversion

说明: 停止 adc 转换。

1 void bflb_adc_stop_conversion(struct bflb_device_s *dev);

parameter

description

dev

设备句柄

bflb_adc_get_count

说明: 获取 adc 转换个数。

1 uint8_t bflb_adc_get_count(struct bflb_device_s *dev);

parameter

description

dev

设备句柄

return

转换个数(最大为32)

bflb_adc_read_raw

说明: 读取一次 adc 转换值。

1 uint32_t bflb_adc_read_raw(struct bflb_device_s *dev);

parameter

description

dev

设备句柄

return

转换值(注意不是最终采样值)

bflb_adc_rxint_mask

说明: adc 转换完成中断开关。

1 void bflb_adc_rxint_mask(struct bflb_device_s *dev, bool mask);

parameter

description

dev

设备句柄

mask

是否屏蔽中断

bflb_adc_errint_mask

说明: adc 错误中断开关。

1 void bflb_adc_errint_mask(struct bflb_device_s *dev, bool mask);

parameter

description

dev

设备句柄

mask

是否屏蔽中断

bflb_adc_get_intstatus

说明: adc 中断标志。

1uint32_t bflb_adc_get_intstatus(struct bflb_device_s *dev);

parameter

description

dev

设备句柄

return

中断标志

返回值如下:

1 ADC_INTSTS_NEG_SATURATION
2 ADC_INTSTS_NEG_SATURATION
3 ADC_INTSTS_FIFO_UNDERRUN
4 ADC_INTSTS_FIFO_OVERRUN
5 ADC_INTSTS_ADC_READY

bflb_adc_int_clear

说明: 清除 adc 中断标志。

1 void bflb_adc_int_clear(struct bflb_device_s *dev, uint32_t int_clear);

parameter

description

dev

设备句柄

int_clear

清除值

int_clear 可以填入以下参数:

1 ADC_INTCLR_NEG_SATURATION
2 ADC_INTCLR_POS_SATURATION
3 ADC_INTCLR_FIFO_UNDERRUN
4 ADC_INTCLR_FIFO_OVERRUN
5 ADC_INTCLR_ADC_READY

bflb_adc_parse_result

说明: 对 adc 转换结果进行解析。

1 void bflb_adc_parse_result(struct bflb_device_s *dev, uint32_t *buffer, struct bflb_adc_result_s *result, uint16_t count);

parameter

description

dev

设备句柄

buffer

转换值

result

输出结果

count

转换个数

bflb_adc_tsen_init

说明: 初始化 adc tsen 模块。

1void bflb_adc_tsen_init(struct bflb_device_s *dev, uint8_t tsen_mod);

parameter

description

dev

设备句柄

tsen_mod

模式选择

bflb_adc_tsen_get_temp

说明: 初始化 adc tsen 模块。

1float bflb_adc_tsen_get_temp(struct bflb_device_s *dev);

parameter

description

dev

设备句柄

return

温度

bflb_adc_vbat_enable

说明: 开启 vbat 。

1void bflb_adc_vbat_enable(struct bflb_device_s *dev);

parameter

description

dev

设备句柄

bflb_adc_vbat_disable

说明: 关闭 vbat。

1void bflb_adc_vbat_disable(struct bflb_device_s *dev);

parameter

description

dev

设备句柄