HW ADC

来自拉普兰德Wiki
跳转至: 导航搜索

固件说明

HW_ADC.c和HW_ADC.h是ADC模数转换模块的固件驱动文件,这里定义了该模块的初始化函数、反初始化函数、获取转换结果等函数,你可以通过配置相关结构体来实现硬件出发、DMA传输等高级功能。

结构体

ADC_InitTypeDef

变量 描述 取值 初始化
ADC_Type *ADC_Adcx 选择ADCx ADC0、ADC1、ADC2(F系列特有)、ADC3(F系列特有) 必须初始化
uint8 ADC_DiffMode 转换模式选择 ADC_SE-单端采集
ADC_DIFF-差分分级
不必须初始化,默认ADC_SE
uint8 ADC_BitMode 转换精度选择

SE_8BIT-单端8位精度
SE_10BIT-单端10位精度
SE_12BIT-单端12位精度
SE_16BIT-单端16位精度
DIFF_9BIT-差分9位精度
DIFF_11BIT-差分11位精度
DIFF_13BIT-差分13位精度
DIFF_16BIT-差分16位精度

不必须初始化,默认SE_8BIT
uint8 ADC_SampleTimeCfg 采样时间选择

SAMTIME_SHORT-短采样时间
SAMTIME_LONG-长采样时间

不必须初始化,默认SAMTIME_SHORT
uint8 ADC_LongSampleTimeSel 长采样时间额外AD时钟选择

LSAMTIME_20EX-长采样时间增加20个额外AD时钟
LSAMTIME_12EX-长采样时间增加12个额外AD时钟
LSAMTIME_6EX-长采样时间增加6个额外AD时钟
LSAMTIME_2EX-长采样时间增加2个额外AD时钟

不必须初始化,默认LSAMTIME_20EX
uint8 ADC_HwAvgSel 硬件平均次数选择

HW_DISAVG-禁用硬件平均
HW_4AVG-4次硬件平均
HW_8AVG-8次硬件平均
HW_16AVG-16次硬件平均
HW_32AVG-32次硬件平均

不必须初始化,默认HW_DISAVG
uint8 ADC_PgaGain 可编程增益选择,使用相应PGA输入通道才有效

PGA_1GAIN-1倍增益
PGA_2GAIN-2倍增益
PGA_4GAIN-4倍增益
PGA_8GAIN-8倍增益
PGA_16GAIN-16倍增益
PGA_32GAIN-32倍增益
PGA_64GAIN-64倍增益

不必须初始化,默认PGA_1GAIN
uint8 ADC_MuxSel ADC输入通道a\b复用引脚选择

MUX_ADXXA-A输入通道
MUX_ADXXB-B输入通道

不必须初始化,默认MUX_ADXXA
boolean ADC_CalEnable ADC初始化自动校准功能使能

TRUE-使能自动校准
FALSE-禁用自动校准

建议初始化为TRUE
uint8 ADC_HwTrgCfg ADC硬件触发配置

HW_TRGDSABLE-禁用硬件触发
HW_TRGA-A转换通道硬件触发
HW_TRGB-B转换通道硬件触发

不必须初始化,默认HW_TRGDSABLE
boolean ADC_DmaEnable 使能ADC准换完成触发DMA请求

TRUE-使能DMA
FALSE-禁用DMA

不必须初始化,默认FALSE
ADC_ISR_CALLBACK ADC_Isr ADCx中断回调函数 函数必须为无返回值,无参数(eg. void isr(void);) 不必须初始化、如未初始化则不会触发中断

变量

函数

LPLD_ADC_Init()

函数原型

uint8 LPLD_ADC_Init(ADC_InitTypeDef);

描述

ADC通用初始化函数,选择ADCx、采集模式、精度等参数

形参

类型 名称 描述 取值
ADC_InitTypeDef adc_init_structure ADC初始化结构体 结构体定义见ADC_InitTypeDef

输出

0--配置错误
1--配置成功

LPLD_ADC_Deinit()

函数原型

uint8 LPLD_ADC_Deinit(ADC_InitTypeDef);

描述

ADC反初始化函数,禁用ADC模块

形参

类型 名称 描述 取值
ADC_InitTypeDef adc_init_structure ADC初始化结构体 结构体定义见ADC_InitTypeDef

输出

0--配置错误
1--配置成功

LPLD_ADC_Chn_Enable()

函数原型

uint8 LPLD_ADC_Chn_Enable(ADC_Type *, AdcChnEnum_Type);

描述

使能ADCx相应转换通道的AD采集功能

形参

类型 名称 描述 取值
ADC_Type * adcx ADCx模块号 ADC0--ADC0
ADC1--ADC1
ADC2--ADC2(F系列特有)
ADC3--ADC3(F系列特有)
AdcChnEnum_Type chn ADC采集输入通道,每个通道所对应引脚详见技术手册K60P144M100SF2RM Page.118

当adcx为ADC0时,见ADC0通道
当adcx为ADC1时,见ADC1通道
当adcx为ADC2(F系列特有)时,见ADC2通道
当adcx为ADC3(F系列特有)时,见ADC3通道

输出

0--配置错误
1--配置成功

LPLD_ADC_Get()

函数原型

uint16 LPLD_ADC_Get(ADC_Type *, AdcChnEnum_Type);

描述

软件触发模式获取AD转换结果

形参

类型 名称 描述 取值
ADC_Type * adcx ADCx模块号 ADC0--ADC0
ADC1--ADC1
ADC2--ADC2(F系列特有)
ADC3--ADC3(F系列特有)
AdcChnEnum_Type chn ADC采集输入通道,每个通道所对应引脚详见技术手册K60P144M100SF2RM Page.118

当adcx为ADC0时,见ADC0通道
当adcx为ADC1时,见ADC1通道
当adcx为ADC2(F系列特有)时,见ADC2通道
当adcx为ADC3(F系列特有)时,见ADC3通道

输出

AD通道转换值(右对齐),若为差分转换结果,则为二进制补码格式(需强制转换为int16)

LPLD_ADC_EnableIrq()

函数原型

uint8 LPLD_ADC_EnableIrq(ADC_InitTypeDef);

描述

使能ADCx中断

形参

类型 名称 描述 取值
ADC_InitTypeDef adc_init_structure 使能ADCx中断 结构体定义见ADC_InitTypeDef

输出

0--配置错误
1--配置成功

LPLD_ADC_DisableIrq()

函数原型

uint8 LPLD_ADC_DisableIrq(ADC_InitTypeDef);

描述

禁用ADCx中断

形参

类型 名称 描述 取值
ADC_InitTypeDef adc_init_structure 使能ADCx中断 结构体定义见ADC_InitTypeDef

输出

0--配置错误
1--配置成功

LPLD_ADC_EnableConversion()

函数原型

void LPLD_ADC_EnableConversion(ADC_Type *, AdcChnEnum_Type, uint8, boolean);

描述

使能ADCx转换通道,完成设置AB转换通道、转换完成中断。

形参

类型 名称 描述 取值
ADC_Type * adcx ADCx模块号 ADC0--ADC0
ADC1--ADC1
ADC2--ADC2(F系列特有)
ADC3--ADC3(F系列特有)
AdcChnEnum_Type chn ADC采集输入通道,每个通道所对应引脚详见技术手册K60P144M100SF2RM Page.118

当adcx为ADC0时,见ADC0通道
当adcx为ADC1时,见ADC1通道
当adcx为ADC2(F系列特有)时,见ADC2通道
当adcx为ADC3(F系列特有)时,见ADC3通道

uint8 ab SC1寄存器A、B通道选择 0--A转换通道
1--B转换通道
boolean irq 是否使能转换完成中断 TRUE--使能转换完成中断
FALSE--禁用转换完成中断

输出

LPLD_ADC_GetResult()

函数原型

uint16 LPLD_ADC_GetResult(ADC_Type *, uint8);

描述

获取AD转换结果,用于中断操作下的转换结果获取。

形参

类型 名称 描述 取值
ADC_Type * adcx ADCx模块号 ADC0--ADC0
ADC1--ADC1
ADC2--ADC2(F系列特有)
ADC3--ADC3(F系列特有)
uint8 ab SC1寄存器A、B通道选择 0--A转换通道
1--B转换通道

输出

AD通道转换值(右对齐),若为差分转换结果,则为二进制补码格式(需强制转换为int16)

LPLD_ADC_GetSC1nCOCO()

函数原型

uint8 LPLD_ADC_GetSC1nCOCO(ADC_Type *);

描述

获取判断A或B哪组通道COCO位置1,即转换完成。

形参

类型 名称 描述 取值
ADC_Type * adcx ADCx模块号 ADC0--ADC0
ADC1--ADC1
ADC2--ADC2(F系列特有)
ADC3--ADC3(F系列特有)

输出

-1--没有转换完成
0--SC1A寄存器COCO位置1
1--SC1B寄存器COCO位置1

其他

ADC0通道

下表定义了ADC0通道对应的芯片引脚,其中通道列为chn形参的取值。

通道 差分引脚 单端引脚
DAD0 ADC0_DP0和ADC0_DM0 ADC0_DP0
DAD1 ADC0_DP1和ADC0_DM1 ADC0_DP1
DAD2 PGA0_DP和PGA0_DM PGA0_DP
DAD3 ADC0_DP3和ADC0_DM3 ADC0_DP3
AD4 - 单端A(保留)
单端B(ADC0_SE4b--PTC2)
AD5 - 单端A(保留)
单端B(ADC0_SE5b--PTD1)
AD6 - 单端A(保留)
单端B(ADC0_SE6b--PTD5)
AD7 - 单端A(保留)
单端B(ADC0_SE7b--PTD6)
AD8 - ADC0_SE8--PTB0
AD9 - ADC0_SE9--PTB1
AD10 - ADC0_SE10--PTA7
AD11 - ADC0_SE11--PTA8
AD12 - ADC0_SE12--PTB2
AD13 - ADC0_SE13--PTB3
AD14 - ADC0_SE14--PTC0
AD15 - ADC0_SE15--PTC1
AD16 - ADC0_SE16
AD17 - ADC0_SE17-PTE24
AD18 - ADC0_SE18--PTE25
AD19 - ADC0_DM0
AD20 - ADC0_DM1
AD23 - DAC0
AD26 - 温度传感器
AD27 - Bandgap
AD29 -VREFH VREFH
AD30 - VREFL


ADC1通道

下表定义了ADC1通道对应的芯片引脚,其中通道列为chn形参的取值。

通道 差分引脚 单端引脚
DAD0 ADC1_DP0和ADC1_DM0 ADC1_DP0
DAD1 ADC1_DP1和ADC1_DM1 ADC1_DP1
DAD2 PGA1_DP和PGA1_DM PGA1_DP
DAD3 ADC1_DP3和ADC1_DM3 ADC1_DP3
AD4 - 单端A(ADC1_SE4a--PTE0)
单端B(ADC1_SE4b--PTC8)
AD5 - 单端A(ADC1_SE5a--PTE1)
单端B(ADC1_SE5b--PTC9)
AD6 - 单端A(ADC1_SE6a--PTE2)
单端B(ADC1_SE6b--PTC10)
AD7 - 单端A(ADC1_SE7a--PTE3)
单端B(ADC1_SE7b--PTC11)
AD8 - ADC1_SE8--PTB0
AD9 - ADC1_SE9--PTB1
AD10 - ADC1_SE10--PTB4
AD11 - ADC1_SE11--PTB5
AD12 - ADC1_SE12--PTB6
AD13 - ADC1_SE13--PTB7
AD14 - ADC1_SE14--PTB10
AD15 - ADC1_SE15--PTB11
AD16 - ADC1_SE16
AD17 - ADC1_SE17--PTA17
AD18 - VREF
AD19 - ADC1_DM0
AD20 - ADC1_DM1
DAC1 - DAC0
AD26 - 温度传感器
AD27 - Bandgap
AD29 -VREFH VREFH
AD30 - VREFL

ADC2通道

下表定义了ADC2通道对应的芯片引脚,其中通道列为chn形参的取值。

通道 差分引脚 单端引脚
DAD0 ADC2_DP0和ADC2_DM0 ADC2_DP0
DAD1 ADC2_DP1和ADC2_DM1 ADC2_DP1
DAD2 PGA2_DP和PGA2_DM PGA2_DP
DAD3 ADC2_DP3和ADC2_DM3 ADC2_DP3
AD4 - 单端A(ADC2_SE4a--PTB20)
单端B(保留)
AD5 - 单端A(ADC2_SE5a--PTB21)
单端B(保留)
AD6 - 单端A(保留)
单端B(保留)
AD7 - 单端A(保留)
单端B(保留)
AD8 - ADC2_SE8--PTB0
AD9 - ADC2_SE9--PTB1
AD10 - ADC2_SE10--保留
AD11 - ADC2_SE11--保留
AD12 - ADC2_SE12--PTA29
AD13 - ADC2_SE13--PTA28
AD14 - ADC2_SE14--PTA27
AD15 - ADC2_SE15--PTA26
AD16 - ADC2_SE16--PTE8
AD17 - ADC2_SE17--PTE9
AD18 - ADC2_SE18--保留
AD19 - ADC2_DM0
AD20 - ADC2_DM1
AD23 - DAC2
AD26 - 温度传感器
AD27 - Bandgap
AD29 -VREFH VREFH
AD30 - VREFL

ADC3通道

下表定义了ADC3通道对应的芯片引脚,其中通道列为chn形参的取值。

通道 差分引脚 单端引脚
DAD0 ADC3_DP0和ADC3_DM0 ADC3_DP0
DAD1 ADC3_DP1和ADC3_DM1 ADC3_DP1
DAD2 PGA2_DP和PGA2_DM PGA2_DP
DAD3 ADC3_DP3和ADC3_DM3 ADC3_DP3
AD4 - 单端A(ADC3_SE4a--PTA10)
单端B(ADC3_SE4b--PTE27)
AD5 - 单端A(ADC3_SE5a--PTA9)
单端B(ADC3_SE5b--PTE26)
AD6 - 单端A(ADC3_SE6a--PTA6)
单端B(保留)
AD7 - 单端A(ADC3_SE7a--PTE28)
单端B(保留)
AD8 - ADC3_SE8--PTB0
AD9 - ADC3_SE9--PTB1
AD10 - ADC3_SE10--保留
AD11 - ADC3_SE11--保留
AD12 - ADC3_SE12--保留
AD13 - ADC3_SE13--保留
AD14 - ADC3_SE14--保留
AD15 - ADC3_SE15--PTA11
AD16 - ADC3_SE16--PTE11
AD17 - ADC3_SE17--PTE12
AD18 - VREF
AD19 - ADC3_DM0
AD20 - ADC3_DM1
AD23 - DAC3
AD26 - 温度传感器
AD27 - Bandgap
AD29 -VREFH VREFH
AD30 - VREFL