【嵌入式系统】第10章 LES 硬件介绍(6)模数转换ADC,模拟比较器,功能说明,模块控制,采样电路(东南大学)

目录

17 模拟比较器

17.1 结构框图

• 17.2 信号描述

17.3 功能说明

17.3.1 内部参考电压编程

LES 硬件介绍(7)模数转换ADC

12. 模-数转换器(ADC)

12.1 结构框图

12.2 信号描述

12.3 功能说明

12.3.1 采样序列发生器

12.3.2 模块控制

12.3.2.1 中断信号

12.3.2.2 DMA操作

12.3.2.3 优先级

12.3.2.4 采样触发事件

12.3.2.5 采样相位控制

12.3.2.6 模块计时

12.3.2.7 繁忙状态

12.3.2.8 启用抖动

12.3.3 硬件采样平均电路

12.3.4 模-数转换器

12.3.4.1 参考电压

12.3.5 差分采样

12.3.6 内部温度传感器

12.3.7 数字比较器

12.3.7.1 输出功能

12.3.7.2 工作模式

12.3.7.3 功能作用范围


17 模拟比较器

17.1 结构框图

 17.2 信号描述

 17.3 功能说明

 17.3.1 内部参考电压编程

模拟比较器是一个外设,它能比较两个模拟电压的大小并通过自身提供的逻辑输出端将比较结果以信号的形式输出。

 微控制器提供三组独立集成的模拟比较器,具有如下功能:

  可以比较外部输入管脚和外部输入管脚或内部可编程参考电压

  比较器可将测试电压与下面的其中一种电压相比较

  独立的外部参考电压

  共用的外部参考电压

  共用的内部参考电压

17.1 结构框图

17-1.模拟比较器模块的结构图

 17.2 信号描述

下表中列出了模拟比较器的外部信号及其功能描述。模拟比较器输出信号是某些 GPIO 管脚的复用功能,复位时,它默认为 GPIO 信号。表中列标题名为‘管脚复用/分配’的列列出了可以被用作模拟比较器的管脚。通过将 GPIO 备用功能选择 (GPIOAFSEL) 寄存器 中的 AFSEL 位置位来 选

 择模拟比较器功能。括号中的数字是必须写入 GPIO 端口,控制 (GPIOPCTL) 寄存器 中的PMCn 位的编码,以便将管脚配置为模拟比较器功能。通过将 GPIO 数字使能(GPIODEN) 寄存器中的 DEN 位清零即可配置正极和负极的 输入信号。有关如何配置 GPIO 的更多信息,请参阅“通用输入/输入端口(GPIOs)。

表 17-1. 模拟比较器触发 信号 (64LQFP)

a.TTL表示管脚的电压水平与TTL一致

17.3 功能说明

比较器通过比较VIN-和VIN+输入来产生输出VOUT。

VIN- < VIN+, VOUT = 1
VIN- > VIN+, VOUT = 0

如图17-2 所示,VIN- 的输入源是外部输入 Cn-,其中 n指模拟比较器编号。除了外部输入 Cn+ 之外,VIN+ 输入源还可以是 C0+ 或者是内部参考源 VIREF。

图17-2.比较单元的结构

比较器通过模拟比较器控制(ACCTL)和模拟比较器状态(ACSTAT)这两个状态/控制寄存器来配置。

• 内部参考源通过模拟比较器参考电压控制 (ACREFCTL) 寄存器进行配置。


• 中断状态和控制通过模拟比较器屏蔽中断状态 (ACMIS)、模拟比较器原始中断状态 (ACRIS) 和模拟比较器中断启用(ACINTEN)这三个寄存器来控制。

• 通常情况下,比较器输出被内部用于产生中断,这点受ACCTL 寄存器的 ISEN 位控制。该输出也可以用来驱动外

17.3.1 内部参考电压编程

   内部的参考电压结构如 图17-3所示。该内部参考电压由配置寄存器 ACREFCTL 控制。

内部参考电压可设置为两种模式(低电平或高电平),具体取决于 ACREFCTL 寄存器的 RNG 位。当 RNG 位被清零时,内部参考电压处于高电平模式,而当 RNG 被置位时,内部参考电压处于低电平模式。


• 在每种模式下,内部参考电压 VIREF 具有 16 个预先设定的阈值或阶跃值。用于与外部输入电压进行比较的阈值可通过 ACREFCTL 寄存器的 VREF 域选择。


• 在高电平模式下,VIREF阈值电压始于理想高电平启动电压VDDA/4.2,并以理想恒电压阶跃 VDDA/29.4增加。


• 在低电平模式下,VIREF 阈值电压始于 0 V,并以理想恒电压阶跃VDDA/22.12增加。有关每种模式的理想的VIREF阶跃电压以及 RNG 和 VREF 域对其有何作用,请参阅 表17-2。

表 17-2. 内部参考电压和 ACREFCTL 域值

    请注意 表17-2 中的值是 VIREF 阈值的理想值。实际上,每个阈值阶跃的这些值都将在最小值和最大值之间变动,具体取决于进程和温度。每个阶跃的最小值和最大值通过以下的公式计算:

  VIREF(VREF) [最小值] = 理想 VIREF(VREF) – (理想阶跃电压 – 2 mV) / 2

VIREF(VREF) [最大值] = 理想 VIREF(VREF) + (理想阶跃电压 – 2 mV) / 2

  高电平和低电平模式下,VDDA = 3.3V 时的最小和最大VIREF 值示例请见 表17-3 和 表17-4。请注意这些示例只适用于 VDDA = 3.3V;VDDA 发生变化时,数值将按比例增加和减少。

LES 硬件介绍(7)模数转换ADC

12. 模-数转换器(ADC)

12.1 结构框图
• 12.2 信号描述
• 12.3 功能说明

12.3.1 采样序列发生器
12.3.2 模块控制

12.3.3 硬件采样平均电路
12.3.4 模-数转换器

12.3.5 差分采样
12.3.6 内部温度传感器

12.3.7 数字比较器

模-数转换器(ADC)是一种能够将连续的模拟电压信号转换为离散的数字量的外设。包含两个完全相同的转换器模块,它们共用12 个输入通道。


• 该微控制器ADC 模块的转换分辨率为 12 位,并提供 12 个输入通道和一个内部温度传感器。每个 ADC 模块都包含 4 个可编程的序列发生器,无需控制器干预即可自动完成对多个模拟输入源的采样。每个采样序列发生器都可灵活配置其输入源、触发事件、中断产生、序列发生器优先级等内容。


• 此外,还可选择将转换结果转移给数字比较器模块。每个 ADC模块提供 8 个 数字比较器。每个数字比较器模块内置16 路数字比较器,每路数字比较器均可将 ADC 转换结果数值与2 个由用户定义的门限值进行比较,以确定信号的工作范围。

ADC0 和 ADC1 可各自采用不同的触发源,也可采用相同的触发源;可各自采用不同的模拟输入端,也可采用同一模拟输入端。


• ADC模块内部还具有移相器,可将采样开始时间(采样点)延后指定的相角。因此当两个ADC模块同时工作时,其采样点既可以配置为同相工作,也可以配置为相互错开一定的相角,详见 “采样相位控制”。

微处理器提供 2 个 ADC 模块,每个模块都具有以下特性:

12 个共用模拟输入通道
■ 12 位精度的 ADC
• ■ 可配置为单端输入或差分输入
• ■ 片上内置温度传感器
• ■ 1M次/秒的采样率

• ■ 可选的移相器,采样点以采样周期计可延后 22.5° 到
337.5°
• ■ 4 个可编程的采样转换序列发生器,序列长度 1 到 8
个单元不等,且各自带有相应长度的转换结果 FIFO。

■ 灵活的转换触发控制:
• – 控制器(软件)触发
• – 定时器触发
• – 模拟比较器触发
• – PWM
• – GPIO

• ■ 硬件可对多达 64 个采样值进行平均计算
• ■ 八个数字比较器
• ■ 模拟部分的电源/地与数字部分的电源/地相互独立
• ■ 用微型直接内存访问 (μDMA) 有效的传输数据
• – 每个采样序列发生器各自有专用的通道
• – ADC 模块的 DMA 操作均采用触发请求

12.1 结构框图

 该 微控制器内置两个相同的模数转换器 (ADC) 模块。这两个模块(ADC0 和ADC1)共用相同的 12 个模拟输入通道。两个ADC模块的工作相互独立,因此可同时执行不同的采样序列、随时对任一模拟输入通道进行采样、并各自产生不同的中断和触发事件。图12-1显示了这两个ADC 模块是如何与模拟输入端以及系统总线连接的。

12.2 信号描述

下表列出了与 ADC 模块相关的所有外部信号并逐一描述其功能。AINx 信号是某些 GPIO 信号的模拟功能。表中“复用管脚/赋值”一列是各ADC信号所对应的GPIO管脚。


• 这些信号的配置方式为:将GPIO 数字输入使能 (GPIODEN)寄存器中相应的 DEN 位清零,并将 GPIO 模拟模式选择(GPIOAMSEL) 寄存器中相应的 AMSEL 位置位。有关如何配置 GPIO 的更多信息,请参阅“通用输入/输出端口。

12.3 功能说明

   ADC 通过使用一种基于序列的可编程方法来收集采样数据,取代了许多传统ADC 模块使用的单次采样或双采样的方法。每个采样序列(SampleSequence)均由一组编程的连续(背靠背)采样组成,因此 ADC 模块可以自动从多个输入源采集数据,无需处理器对其重新配置或进行干预。

• 采样序列中的每个采样动作都可灵活编程,可配置的参数包括选择输入源和输入模式(单端输入或差分输入)、采样结束时是否产生中断、是否是队列中最后一个采样动作的标识符等。此外,若结合 μDMA 工作,ADC模块能够更加高效地从采样序列中获取数据,同时无需 CPU进行任何干预。

• 采样控制和数据采集都是由采样序列发生器(Sample Sequencer,简写为SS)处理的。所有序列发生器的实现方法都是相同的,区别仅在于能够捕捉的采样数以及FIFO 深度有所不同。

12.3.1 采样序列发生器

  表12-2(697页) 给出了每个序列发生器可捕获的最大采样数及其相对应的 FIFO 深度。捕捉到的每个采样都要存入 FIFO 中。在本实现方案中,每个 FIFO 单元均为一个32 位的字,低 12 位包含的是转换结果。

对于指定的采样序列,若以 n 代表其序号,则采样序列 n中的每个采样动作分别以 ADC 采样序列输入多路复用器选择 (ADCSSMUXn)、 及 ADC 采样序列控制 (ADCSSCTLn) 中的 1 个半字节予以定义。

• 该 ADCSSMUXn 用于选择输入管脚,而 ADCSSCTLn 包含采样控制位,这些控制位分别与参数(例如,温度传感器的选择、中断启用、序列末端和差分输入模式)对应。

• 采样序列发生器可以通过置位ADC活动采样序列发生器(ADCACTSS) 寄存器中相应的 ASENn 位进行启用,但也可以在启用之前进行配置。软件可通过置位 ADC 处理器采样序列启动 (ADCPSSI) 寄存器的 SSn 位来启动采样。此外,在配置各个 ADC 模块时,通过设置 ADCPSSI 寄存器的GSYNC 和 SYNCWAIT位同时启动多个 ADC 模块的采样序列。

  配置采样序列时,允许同一序列中的多个采样动作对同一输入端进行采样。ADCSSCTLn 寄存器中的 IEn 位可针对任意采样动作组合置位,如此可在必要时允许在采样序列的每个采样动作后产生中断。同样,END 位也可在采样序列的任意时刻置位。举例来说,假设使用采样序列 0,那么可在与第 5 个采样动作相关的半字中将 END 位置位,从而使采样序列 0 在完成第 5 个采样动作后结束整个采样序列。


• 当采样序列执行结束后,可从ADC采样序列结果FIFO(ADCSSFIFOn) 寄存器中读取采样结果数据。ADC模块的FIFO均为简单的环型缓冲区,反复读取同一地址(ADCSSFIFOn)即可依次“弹出”结果。为了方便软件调试,通过 ADC 采样序列FIFO 状态 寄存 器 可 查 到 FIFO头指针和尾指针的位置以及 FIFO头指针和尾指针的位置以及 FULL 和 EMPTY 状态标志。

12.3.2 模块控制

  控制逻辑单元中除采样序列发生器的剩余部分负责执行以下任务:

■ 中断的产生
■ DMA 操作
• ■ 采样序列按优先级执行
■ 触发事件的配置
• ■ 比较器的配置
■ 采样相位控制
• ■ 模块计时

   大多数的 ADC 控制逻辑都以 16 MHz 的 ADC 时钟频率运行。当系统 XTAL 选择 PLL 时,硬件将自动配置内部的ADC 分频器,以便按照 16 MHz 频率工作。

12.3.2.1 中断信号

   采样序列发生器和数字比较器数字比较器的寄存器配置可以监控产生原始中断的事件,但对中断是否真正发送给中断控制器没有控制权。


• ADC 模块是否产生中断信号是由 ADC 中断掩码 (ADCIM)寄存器的 MASK 位决定的。中断状态可以从以下两个位置查询:ADC 原始中断状态寄存器(ADCRIS)显示各个中断信号的原始状态;ADC中断及清除寄存器(ADCISC)显示经ADCIM 寄存器启用后的实际中断状态。通过向 ADCISC 对应的 IN 位写 1 来清除中断。


• 请注意,数字比较器中断不是通过本寄存器清除的,而是通过向 ADC 数字比较器中断状态及清除寄存(ADCDCISC)的对应位写 1来清除的。

12.3.2.2 DMA操作

如果使用 DMA,则每个采样序列发生器能够独立工作,无需微控制器干预或重新配置即可传输数据,从而提高了效率。每个采样序列发生器都可向 μDMA 控制器中相关的专用通道发送请求。ADC不支持单次的传输请求。当采样序列的中断标志置位时(ADCSSCTLn 寄存器的 IE 位置位)产生触发传输请求。


• μDMA 传输仲裁大小必须是 2 的整数幂,且ADCSSCTLn 寄存器的相关 IE 位必须置位。因此,每 4 个采样动作后会触发 1 次 μDMA 请求。此外,不需要其它特殊步骤ADC模块已经能够进行 μDMA 工作。


• 关于 μDMA 控制器编程的更多信息,请参阅 “微型直接存储器访问(μDMA)”。

12.3.2.3 优先级

   当同时发生多个采样事件(触发条件)时,将按照 ADC 采样序列器优先级 (ADCSSPRI) 寄存器中的值对它们进行排序和依次处理。


• 优先级的有效值为0~3,其中0代表最高优先级、3代表最低优先级。


• 如果多个活动的采样序列具有相同的优先级,将导致转换结果数据不连续,因此软件必须确保当前活动的所有采样序列各自具有唯一的优先级。

12.3.2.4 采样触发事件

   每个采样序列发生器的采样触发条件均通过 ADC 事件多路复用器选择 (ADCEMUX) 寄存器予以定义。触发事件源包括处理器触发(默认)、模拟比较器触发、GPIO ADC 控制(GPIOADCCTL) 寄存器指定的 GPIO 外部信号触发、通用定时器触发、PWM 发生器触发以及持续采样触发。软件可以将 ADC 处理器采样序列启动 (ADCPSSI) 的 SSx 位置位来启动采样序列。


• 配置持续采样触发条件时务必慎重。假如某个采样序列的优先级过高,可能导致其它低优先级采样序列始终无法运行。


• 通常,要将使用连续采样模式的采样序列设置为最低优先级。当输入接口上的电压达到了某一特定值,连续采样可以和数字比较器配合使用以产生中断。

12.3.2.5 采样相位控制

  ADC0 和 ADC1 可采用不同的触发源,也可采用相同的触发源;可采用不同的模拟输入端,也可采用同一模拟输入端。

• 假如两个转换器以相同的采样率工作,其采样点既可以配置为同相,也可以配置为相互错开一定的相角(可实现15种离散的相位差)。采样点延后的相位通过 ADC 采样相位控制 (ADCSPC) 寄存器按 22.5°逐步递增至337.5°。

 图12-3 显示了 1Msps 采样率时各种不同的相位关系示例。

  借助此功能可让单个输入通道实现双倍采样率。将ADC0和ADC1模块配置为采用同一个输入通道,ADC0 模块可以按照标准相位采样(ADCSPC 寄存器的 PHASE = 0)。ADC1 模块可以配置为延后180° 相位采样(PHASE = 0x8)。通过ADC 处理器采样序列启动 (ADCPSSI) 寄存器的 GSYNC和SYNCWAIT 位可以将两个模块配置位同步运行。然后由软件将来自两个模块的结果数据进行组合,就能在 16 MHz 工作频率下实现 2MHz 的采样率。

  使用 ADCSPC 寄存器,ADC0 和 ADC1 还能实现许多有趣的应用:

不同信号的同步持续采样。两个转换器的采样序列同相进行。

ADC 模块 0,ADCSPC = 0x0,采样 AIN0

• – ADC 模块 1,ADCSPC = 0x0,采样 AIN1

同一信号的交错采样。两个模块的采样序列交错进行异相采样,当采样率为 1 Msps 时,交错时间为 0.5 μs。在软件将转换结果进行交错组合时,如 图12-5(700页) 所示,此配置可将单个输入通道的转换带宽加倍。

– ADC 模块 0,ADCSPC = 0x0,采样 AIN0
• – ADC 模块 1,ADCSPC = 0x8,采样 AIN0

12.3.2.6 模块计时

  该模块由一个 16-MHz 的时钟计时,该时钟可通过分频的 PLL 输出、PIOSC 或连接到 MOSC 的外部信号获得。

PLL 工作时,ADC 时钟通过 PLL ÷ 25 得到。

但是,PIOSC 可用于使用 ADC 时钟配置 (ADCCC) 寄存器的模块时钟。要将 PIOSC 用作 ADC 的时钟源,首先应给 PLL 上电,然后通过 ADCCC 寄存器的 CS 位域启用 PIOSC,再禁用 PLL。

PLL 处于旁路模式时,连接到 MOSC 的模块时钟源时钟必须为 16 MHz,除非该时钟源使用 PIOSC。要将MOSC 用作 ADC 的时钟源,首先应给 PLL 上电,然后启用 ADC 模块的时钟,再禁用PLL,最后将系统时钟切换至 MOSC。

系统时钟的频率必须与 ADC 时钟相同或更高。让所有ADC 模块使用相同的时钟源有助于在多个转换设备间同步数据采样。可通过 ADCCC 寄存器的ADC0 对时钟源进行选择和编程。ADC 模块无法以不同的转换速率运行。

12.3.2.7 繁忙状态

ADCACTSS 寄存器的 BUSY 位用于指示 ADC 目前正在紧张地执行转换。如果当前周期或者后面若干周期不存在可启动新转换的触发条件挂起,BUSY 位将为 0。在向模数转换器运行模式时钟门控控制 (RCGCADC) 寄存器写入数据以禁用 ADC 时钟之前,软件必须确认 BUSY 位已清零。

12.3.2.8 启用抖动

ADCCTL 寄存器中的 DITHER 位用来减少 ADC 采样时的随机噪音,并将 ADC 运行保持在“Analog-to-Digital Converter (ADC)” 定义的具体性能限制内。

在用 ADC 模块采集多个持续样本时,应启用 ADCCTL 寄存器中的 DITHER 位,以及 ADC 采样平均控制 (ADCSAC) 寄存器中的硬件均分功能。复位时,DITHER 位将默认被禁用。

12.3.3 硬件采样平均电路

  启用硬件采样平均电路可以获得更高的精度,与此同时付出的代价是吞吐率将成比例地降低。硬件采样平均电路最高可将64次采样结果累加并计算出平均值,以平均值作为单次采样的数据写入序列发生器FIFO的1个单元中。由于是算术平均值,因此吞吐率与求平均值的采样数目成反比。

  默认情况下,硬件采样平均电路是关闭的,转换器捕捉的所有数据直接送入序列发生器的FIFO中。只有一个平均电路,不论单端输入还是差分输入都会被执行相同的求平均值操作。

图12-6 中显示一个实例。在该实例中,ADCSAC 寄存器设置为 0x2 以进行 4x 硬件过采样;IE1 被置位以提供采样队列;第 2 个平均值储存进 FIFO 后,将产生中断信号。

12.3.4 模-数转换器

模-数转换器(ADC)模块采用逐次逼近寄存(Successive  Approximation Register,简写为SAR)架构实现低功耗、高精度的12位A/D转换。该逐次逼近架构使用开关电容阵列执行两种功能:采集和保持信号,提供 12 位 DAC 操作。

ADC模块同时从3.3V模拟电源和1.2V数字电源取电。在不要求 ADC 转换精度时,可以将 ADC 时钟配置为低功耗(请参阅 “系统控制”。模拟信号通过特殊的平衡输入通道连接到 ADC,尽量减少输入信号的失真和串扰。

12.3.4.1 参考电压

  ADC 使用内部信号 VREFP 和 VREFN 作为参考电压源,以对选定的模拟输入电压进行转换。VREFP可以连接到VREFA+ 或 VDDA 而 VREFN 可以连接到 VREFA- 或 GNDA,通过 ADC 控制(ADCCTL)寄存器的 VREF 位配置

转换值的范围为 0x000~0xFFF。在单端输入模式下,0x000对应于 VREFN 上的电平;0xFFF 对应于 VREFP 上的电平。通过这样的配置,分辨率就可以使用以下等式计算:

 mV per ADC code = (VREFP - VREFN) / 4096

  虽然模拟输入管脚能够处理超出此范围的电压,但为了确保结果精确,模拟输入电源必须处于表22-29 规定的限制范围以内。图12-9 中示出了 ADC 转换值与输入模拟电压的函数关系。

12.3.5 差分采样

   除了传统的单端采样,ADC模块还支持两个模拟输入通道进行差分采样 。要启用差分采样功能 ,软件必须在某个采样步骤的配置半字节中将 ADCSSCTL0n 寄存器的 Dn 位置位。

     若采 样 序 列 中 某 个 采 样 动 作 配 置 为 差 分 采 样 , 必须 在ADCSSMUXn 寄存器中配置输入的差分信号对。差分信号对0 对模拟输入端 0 和 1 进行采样,差分信号对 1 对模拟输入端 2 和 3 进行采样,依此类推(见 表12-3)。ADC不支持差分信号对的随意组合,如模拟输入端 0 和模拟输入端 3 无法作为一对差分信号输入。

差分模式下采样电压是奇数通道与偶数通道电压的差值:

正向输入电压:VIN+ = VIN_EVEN(偶数通道电压)

负向输入电压:VIN- = VIN_ODD(奇数通道电压)

差分输入电压定义为:VIND = VIN+ - VIN-,因此:

若 VIND = 0,则转换结果 = 0x800

若 VIND > 0,则转换结果 > 0x800(范围是 0x800~0xFFF)

若 VIND < 0,则转换结果 < 0x800(范围是 0–0x800)

使用差分采样时,还需考虑以下定义:

输入共模电压:VINCM = (VIN+ + VIN-) / 2

正向参考电压:VREFP

负向参考电压:VREFN

• ■ 差分参考电压:VREFD = VREFP - VREFN

• ■ 参考共模电压:VREFCM = (VREFP + VREFN) / 2

• 差分模式具备以下条件时效果最佳:

• ■ VIN_EVEN 和 VIN_ODD 必须在(VREFP 至 VREFN)范围内,否则无法得到有效的转换结果

• ■ 最大可能的差分输入摆幅或最大的差分范围为:-VREFD 至+VREFD,因此最大的峰峰差分输入

• 信号为 (+VREFD - -VREFD) = 2 * VREFD= 2 * (VREFP - VREFN)

• ■ 为了利用最大可能的差分输入摆幅,VINCM 应非常接近VREFCM,请参考 表22-29。

如果 VINCM 不等于 VREFCM,那么在最大或最小电压下,差分输入信号可能减弱,(这是因为任何单端输入都不能大于 VREFP 或小于 VREFN),而且无法实现全摆幅。因此输入电压和参考电压之间的任何共模差异都会限制 ADC 的差分动态范围。

由于最大的峰峰差分信号电压为 2 * (VREFP - VREFN),ADC 读数表示为:

• mV per ADC code = (2 *(VREFP - VREFN)) / 4096

• 图12-10 显示如何通过 ADC 读数来表示差分电压 ΔV。

12.3.6 内部温度传感器

 

温度传感器的主要作用是当芯片温度过高或过低时向系统给予提示,保障芯片稳定工作。

温度传感器没有单独的启用/禁用操作,因为它还关系到带隙参考电压的产生,必须始终启用。该参考电压不仅提供给 ADC 模块,还需要提供给其它所有模拟模块。


• 内部温度传感器将温度测量值转换为电压。此电压VTSENS 可以通过以下公式得出(其中 TEMP指温度,单位 °C):


• VTSENS = 2.7 - ((TEMP + 55) / 75)。这种关系如图12-11 所示。


• 通过将 ADCSSCTLn 中的 TSn 位置位,即可在采样队列中得到温度感应器的读数。也可以从温度传感器的ADC结果通过函数转换得到温度读数以下公式根据 ADC 读数(ADCCODE定义为 0 至4095 的一个不带正负号的十进制数)和最大的 ADC 电压范围 (VREFP - VREFN) 计算温度(TEMP,单位 ℃):


• TEMP = 147.5 - ((75 * (VREFP - VREFN) × ADCCODE) /4096),图 12-11. 内部温度传感器特性

12.3.7 数字比较器

ADC通常用于对外部信号采样并监控其数值的变动,确保其保持在给定的范围内。为了实现此监控过程的自动化、减少所需的处理器开销,ADC 模块内置有 每个模块提供 8个数字比较器。

ADC 转换结果可直接发送给数字比较器,与用户编程的门限进行比较。门限通过 ADC 数字比较器范围寄存器(ADCDCCMPn)配置。ADC 可配置为根据 ADC 是在低值带、中值带还是高值带(可在 ADCDCCMPn 位域进行配置)运行而生成中断。另外可将数字比较器的 4 种工作模式(单次触发,持续触发,迟滞单次触发,迟滞持续触发)应用于中断配置。

12.3.7.1 输出功能

取决于 ADC 采样序列 n 操作 (ADCCSOPn) 寄存器中的SnDCOP 位的设置,ADC 转换结果可以保存到 ADC 采样序列 FIFO 中,也可以供给数字比较器进行比较。选定的ADC转换结果将被其对应的数字比较器用于监控外部信号。每个数字比较器可以有两种输出功能:处理器中断或 PWM 触发事件。


• 每种输出功能都有其状态机对被监控的信号实施追踪。中断功能和触发事件功能既可以分别使能,也可以同时使能;两种功能将根据同一转换数据判断其条件是否已经满足、并据此产生相应的输出。

中断信号
• 将 ADC 数字比较器控制寄存器 (ADCDCCTLn) 的 CIE 位置位即可启用数字比较器的中断功能。此时中断功能状态机开始运行,并监控输入的 ADC 转换结果。当某组条件得到满足并且 ADCIM 寄存器的 DCONSSx 位置 1 时,将向中断控制器发送一个中断。

触发器
• ADCDCCTLn 寄存器中的 CTE 位置位就可以启用数字比较器触发功能。将此时触发功能状态机开始运行,并监控输入的 ADC 转换结果。当某组条件得到满足时,将相应产生一个数字比较器触发事件并发送给 PWM 模块。

12.3.7.2 工作模式

数字比较器有4种工作模式,能够支持类型广泛的应用、满足各种信号的要求。这4种工作模式分别是:持续触发、单次触发、迟滞持续触发、迟滞单次触发。工作模式通过ADCDCCTLn 寄存器的CIM 或 CTM 域选取。

持续触发模式
在持续触发工作模式中,只要ADC转换值满足比较条件即会产生相应的中断或触发事件。因此,如果A/D转换结果处于规定的范围内,将产生一连串的中断或触发事件。

• 单次触发模式
在单次触发工作模式中,只有当前ADC转换值满足比较条件并且前一个ADC转换值不满足比较条件时,才会产生相应的中断或触发事件。因此,如果A/D转换结果处于规定的范围内,将产生单个中断或触发事件。

迟滞持续触发模式
迟滞持续触发工作模式只能结合低值带或高值带工作,只有跨越中值带进入相反的区域时才会清除迟滞条件。在迟滞持续触发工作模式中,满足以下条件时才会产生相应的中断或触发事件:ADC转换值满足其比较条件,或之前的某个ADC结果满足比较条件,并且迟滞条件尚未清除(ADC转换值尚未落入相反的区域)。

因此,在ADC转换值进入相反的区域之前,将不断产生一连串的中断或触发事件。

迟滞单次触发模式
迟滞单次触发工作模式只能结合低值带或高值带工作,只有跨越中值带进入相反的区域时才会清除迟滞条件。在迟滞单次触发工作模式中,满足以下条件时才会产生相应的中断或触发事件:ADC 转换值满足其比较条件,且前一个 ADC 转换值不满足比较条件,且迟滞条件已清除。因此将产生单个中断或触发事件。

12.3.7.3 功能作用范围

ADC 数字比较器范围 (ADCDCCMPn) 寄存器中的两组比较门限 COMP0 和 COMP1 可将转换结果

• 有效划分为 3 个不同区域。这些区域分别称为这些区域分别称为:
• 低值带(小于 COMP0)
• 中值带(大于 COMP0 但小于等于 COMP1)
• 高值带(大于等于 COMP1)。

低值带内工作,须将 ADCDCCTLn 寄存器的 CIC 域或 CTC域设为 0x0。此设置会在低值带内按照编程的工作模式产生中断或触发事件。

• 图12-12 中显示了在高值带内各种工作模式下产生中断/触发事件的状态示例。注意,工作模式名称(持续触发、单次触发、迟滞持续触发、迟滞单次触发)之后一列中的“0”表示不产生中断或发事件信号,“1”表示产生中断或触发事件信号。

要让数字比较器在中值带内工作,必须将 ADCDCCTLn 寄存器的 CIC 域或 CTC 域设为 0x1。此设置会在中值带内按照工作模式产生中断或触发事件。只有持续触发工作模式和单次触发工作模式能够在中值带内工作。

图12-13 中显示了在中值带内各种允许的工作模式下产生中断/触发信号的状态示例。注意,工作模式名称(持续触发、单次触发)之后一列中的“0”表示不产生中断或触发事件信号,“1”表示产生中断或触发事件信号。

要让数字比较器在高值带内工作,必须将 ADCDCCTLn 寄存器的 CIC 域或 CTC 域设为 0x3。此设置会在高值带内按照工作模式产生中断或触发事件。

图12-14 中显示了在高值带内各种允许的工作模式下产生中断/触发信号的状态示例。注意,工作模式名称(持续触发、单次触发、迟滞持续触发、迟滞单次触发)之后一列中的“0”表示不产生中断或触发事件信号,“1”表示产生中断或触发事件信号。



资料仅供学习使用

如有错误欢迎留言交流

上理考研周导师的其他专栏:

光电融合集成电路技术     电路原理

C语言       复变函数与积分变换

单片机原理

模式识别原理

数字电子技术

自动控制原理 ​​​​​​    ​​​​​​ 传感器技术

模拟电子技术

数据结构

 概率论与数理统计

高等数学

传感器检测技术

智能控制

嵌入式系统

图像处理与机器视觉

热工与工程流体力学

数字信号处理

线性代数

工程测试技术

大学物理

上理考研周导师了解更多

  • 13
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值