Nordic--nrf52832--ADC

 实际应用中,我们经常需要将模拟量转换为数字量供 CPU 处理,如电池电压检测、温度检测等等,对于 CPU 来说,它能处理的是数字量,所以,需要通过 A/D 转换(模数转换)将时间连续、幅值也连续的模拟量转换为时间离散、幅值也离散的数字信号,从而将实现CPU 对模拟信号的处理,能够实现 A/D 转换功能的电路称之为模数转换器(ADC:Analog-to-digital converter)。
 ADC 的结构和实现原理有多种方式,常见的 ADC 的类型有积分型、逐次逼近型、并行比较型/串并行型、Σ-Δ调制型等。nRF52832 集成的是逐次逼近型 ADC,称为 SAADC(Successive approximation analog-todigital converter)。SAADC 是利用二分法逐步比较,在有效精度范围内找到最接近输入模拟信号的数字量。由此可见,这种结构的 ADC 要完成一次转换,至少要比较 N 次,所以其转换速度较慢,同时电路结构也比较简单,功耗较低,适用于便携式、穿戴式等低功耗应用领域。

主要特点

nRF52832 的 SAADC 主要特征如下:

  1. 8/10/12 分辨率,使用过采样可达到 14 位分辨率。
  2. 多达 8 个输入通道。
    • 单端输入时使用 1 个通道,2 个通道可组成差分输入。
    • 单端和差分输入时均可配置为扫描模式。
  3. 满量程输入范围(0 to VDD)。
  4. 可以通过软件触发采样任务启动采样,也可以使用低功耗的 32.768kHz RTC 或更加精确
    1/16MHz 定时器通过 PPI 触发采样任务,从而使能 SAADC 具备非常灵活的采样频率。
  5. nRF52832 的 SAADC 支持单次模式和扫描模式:
    • 单次模式一次采样一个通道。
    • 扫描模式按照顺序采样一系列通道。Sample delay between channels is tack + tconv
      which may vary between channels according to user configuration of tack.
  6. 通过 EasyDMA 可以直接将采样结果保存到 RAM。
  7. 无需外部定时器即可实现连续采样。
  8. 可配置通道输入负载电阻。
  9. 具备采样值门限检测功能。

共享资源

 ADC 可以和 COMP、LPCOMP 等其它外设共用模拟输入 AIN0-AIN7,但是这些外设功能需要分配到不同的引脚。并且不建议为两个外设选择相同的模拟输入引脚。

功能概述

 nRF52832 的 ADC 支持多达 8 个外部模拟输入通道,可以工作于单次模式和采样速率可配置的扫描模式。模拟输入通道可以配置为 8 个单端输入或 4 组差分输入或者单端、差分混合输入(一部分模拟输入通道用作单端输入,一部分用作差分输入)。

 每一个 ADC 采样通道都可以配置为 AIN0 ~AIN7 或 VDD,所有通道都可以进行单次或者连续采样,多个通道可以使用扫描模式按照通道顺序采样,另外,ADC 通道也可以过采样以提高噪声性能。

Nordic--nrf52832--ADC_第1张图片 从上面的原理框图可以看到,芯片内部,ADC 是一个差分模数转换器,包含正极输入RESP 和负极输入 RESN,他们的引脚都可以从 AIN0~AIN7 中选择。默认情况下,ADC 的配置的是单端输入(即 CH[n].CONFIG 寄存器中的 MODE = 0),此时,芯片内部将 ADC 负极输入短接到地。

 使用单端模式时,是将内部地和外部待测电压的参考地假设为一样来考虑的,但是地弹噪声会导致 ADC 产生误差,如果这个误差超过我们能接受的范围,建议使用差分输入。

 在参考源上,相对于 nRF51822,nRF52832 取消了外部参考源,只能使用内部参考源。

 使用 ADC 时,通过 CH[n].PSELP 和 CH[n].PSELN 配置通道的模拟输入引脚,通过CH[n].CONFIG 配置 ADC 的参数,包括:模拟输入端口负载电阻、增益、参考电压、采样时间、单端或差分输入模式等。

 ADC 输出的采样取决与 CH[n].CONFIG 和 RESOLUTION 寄存器配置的参数,采样结果计算公式如下:
采 样 结 果 = [ V ( P ) – V ( N ) ] ∗ G A I N R E F E R E N C E ∗ 2 ( R E S O L U T I O N − m ) 采样结果 = \frac{[V(P) – V(N) ] * GAIN}{REFERENCE * 2 ^{(RESOLUTION - m)}} =REFERENCE2(RESOLUTIONm)[V(P)V(N)]GAIN
其中:

  • V( P):ADC 输入正极。
  • V(N):ADC 输入负极。
  • GAIN:CH[n].CONFIG 寄存器中设置的增益 GAIN。
  • REFERENCE:参考电压。
  • m:如果 ADC 配置为单端模式,m = 0,如果 ADC 配置为差分模式,m = 1。

工作模式

 nRF52832 的 ADC 有 3 种工作模式:单次模式、连续模式和扫描模式。各个模式的具体描述如下:

1. 单次模式(one-shot mode)

 nRF52832没有专门用来配置ADC为单次模式的寄存器,当我们通过配置CH[n].PSELP、CH[n].PSELN 和 CH[n].CONFIG 只使能一个 ADC 通道的时候,ADC 工作于单次模式。触发采样任务后,ADC 开始采样输入电压,采样时间通过 CH[n].CONFIG.TACQ 配置。EVENTS_DONE 事件表明了一次采样的完成,单次采样模式下,在没有过采样发生的情况下 EVENTS_RESULTDONE 事件等同于 EVENTS_DONE 事件,注意在实际采样数据通过EasyDMA 被保存到 RAM 之前,这两个事件都会产生。

2. 连续模式(continuous mode)

可以通过下面两种方式实现连续模式:

  • 使用 ADC 内部定时器实现定时采样,ADC 有一个 SAMPLERATE 寄存器,该寄存器可以配置为 Timer,配置 SAMPLERATE 的比较值 SAMPLERATE.CC 即可实现定时采样。这种方式下,触发一次采样任务即可对所有使能的通道进行采样。
  • 使用 nRF52832 的通用定时器定时通过 PPI 触发采样,实现连续采样。这种方式不能算是 ADC 本身的连续采样功能,因为它是借助了其他外设实现的连续采样。

 采样速率由 SAMPLERATE.CC 控制,即定时时间长,采样速率慢,定时时间短,采样速率快,需要注意的是,使用连续采样模式的时候,采样速率应符合下面的公式:
f S A M P L E < 1 [ t A C Q + t c o n v ] f_{SAMPLE} < \frac{1}{[t_{ACQ} + t_{conv}]} fSAMPLE<[tACQ+tconv]1
使用 SAMPLERATE 的 Timer 实现的连续采样不能和扫描模式结合使用,连续采样模式下只能使用一个通道。
EVENTS_DONE 事件表明了一次采样的完成,连续采样模式下,在没有过采样发生的情况下 EVENTS_RESULTDONE 事件等同于 EVENTS_DONE 事件,注意在实际采样数据通过 EasyDMA 被保存到 RAM 之前,这两个事件都会产生。

3. 扫描模式(scan mode)

 nRF52832 同样没有专门用来配置 ADC 为扫描模式的寄存器,那么, 扫描模式是怎么进入的?

 当我们使能一个 ADC 通道,ADC 工作于单次模式,当使能的通道数量大于 1 个,ADC进入扫描模式。扫描模式下,采样所有通道花费的总时间如下式:
T o t a l t i m e < S u m ( C H [ x ] . t A C Q + t c o n v ) , x = 0.. 使 能 的 通 道 数 量 Total time < Sum(CH[x]. t_{ACQ} + t_{conv}), x=0..使能的通道数量 Totaltime<Sum(CH[x].tACQ+tconv),x=0..使
 EVENTS_DONE 事件表明了一次采样的完成,扫描模式下,在没有过采样发生的情况下EVENTS_RESULTDONE 事件等同于 EVENTS_DONE 事件,注意在实际采样数据通过EasyDMA 被保存到 RAM 之前,这两个事件都会产生。

你可能感兴趣的:(Nordic,nrf52832学习应用之路)