跳转至

ADC接口,共10路

1、Air8101共可支持10路ADC管脚,分别是ADC1-6,ADC10,ADC12-14,复用分布在不同的10个管脚上;

但是,需要特别说明的是:管脚虽然是10路,但同时只能使用6个,以下为详细说明:

Air8101 内部有 6 个 ADC 接口通道,以ADC1对应通道 ID:1 为例,以此类推;

Air8101有ADC1,ADC2,ADC3,ADC4,ADC5,ADC6,ADC10,ADC12,ADC13,ADC14,一共10路外部ADC管脚;

这10路ADC复用的对应关系为:

ADC1 对应 ADC10,共用一路 ID:1 ;

ADC2 对应 ADC12,共用一路 ID:2;

ADC3 对应 ADC13,共用一路 ID:3;

ADC4 对应 ADC14,共用一路 ID:4;

ADC5 和 ADC6没有对应的其他ADC通道;

这里的对应关系如何理解呢?

以ADC1 对应 ADC10为例,意思是在Air8101内部,ADC1和ADC10是同一个ADC通道,ADC1和ADC10不能同时使用;

2、Air8101的ADC功能,是一个 12 位逐次逼近型模数转换器,拥有多个外部模拟输入通道以及内部专用通道;

Air8101的ADC功能具有如下特性:

  • 可编程采样率:范围从 12.5 kHz 到 812.5 kHz

  • 分辨率:12 位

  • 外部模拟输入通道:最多支持 10 路,分别为 ADC1/2/3/4/5/6/10/12/13/14

  • 内部专用通道:对用户开放的共 1 路 电池电压监测通道,连接至 ADC0,在LuatOS中以 adc.CH_VBAT 函数对用户开放使用;

3、Air8101的ADC功能芯片内部参数;

Parameter Condition Min. Typ. Max. Unit
Conversion clock - 0.2 - 13 MHz
Conversion time - - 16 - Cycle
VREF Internal - 1.1 - V
External - VDDGPIO/3 - V
Input voltage range - 0 - VREF*N(1) V
Input impedance - 10 - -
Input capacitance (Cs) - - 1 - pF
DNL - -1 - 3 LSB
INL - -5 - 5 LSB
ENOB - - 10 - Bit
SNDR - - 62 - dB
SFDR - - 77 - dB
TSTARTUP - - 5 - μs
Current consumption - - 200 - μA

(1) N is the input voltage division factor. N=1, 2, 3, or 4.

4、Air8101的ADC功能使用,要结合LuatOS核心库ADC来理解;

https://docs.openluat.com/osapi/core/adc/

在这里特别说明一下Air8101的ADC量程问题;

LuatOS中,ADC输入有两个量程,一个是ADC_RANGE_MIN,一个是ADC_RANGE_MAX;

就Air8101来说,ADC_RANGE_MIN对应量程为0-1.5V,ADC_RANGE_MAX对应量程为0-2.4V;

所以,需要根据不同的被测电压范围,结合ADC管脚实际输入的电压范围,进行灵活选择:

a. 当被测电压最大值在1.5V以内,使用adc.ADC_RANGE_MIN;

b. 当被测电压大于1.5V小于2.4V,使用adc.ADC_RANGE_MAX,且不需要添加外部分压电路;

c. 当被测量电压最高值在2.4V以上时, 使用ADC_RANGE_MIN,且必须添加外部分压电路将被测电压分压至1.5V以内;

5、特别注意事项;

  • 外部分压时,如果ADC输入电压无法满足低于1.5V,以NTC电阻为例,可灵活使用如下右侧电路进行灵活设计;

  • 如果不希望ADC变化太快,可以通过软件算法处理,过滤掉变化较大的数值,也可以在硬件电路上增加滤波电路; 比如,外部分压时,可以增加滤波电容增加ADC输入稳定性,但缺点是ADC的细微变化会被过滤掉,请根据实际需要谨慎选择; 说明:R300可以增加ESD能力,阻值建议为510Ω,不建议使用K级阻值的电阻;