12 a/d 第51 章 带阈值检测功能的...

64
© 2011-2012 Microchip Technology Inc. DS39739B_CN 51-1 带阈值检测功能的 12 A/D 转换器 51 51 带阈值检测功能的 12 A/D 转换器 目录 本章包括下列主题: 51.1 简介 ............................................................................................................................. 51-2 51.2 A/D 术语和转换序列 .................................................................................................... 51-4 51.3 寄存器 ......................................................................................................................... 51-6 51.4 A/D 模块配置............................................................................................................. 51-19 51.5 初始化 ....................................................................................................................... 51-23 51.6 控制采样过程 ............................................................................................................ 51-24 51.7 控制转换过程 ............................................................................................................ 51-24 51.8 A/D 结果缓冲区 ......................................................................................................... 51-30 51.9 扩展 DMA 操作 .......................................................................................................... 51-34 51.10 阈值检测操作 ............................................................................................................ 51-37 51.11 转换序列示例 ............................................................................................................ 51-44 51.12 A/D 采样要求............................................................................................................. 51-53 51.13 传递函数.................................................................................................................... 51-54 51.14 A/D 精度 / 误差 .......................................................................................................... 51-56 51.15 休眠和空闲模式期间的操作....................................................................................... 51-56 51.16 复位的影响 ................................................................................................................ 51-57 51.17 寄存器映射 ................................................................................................................ 51-58 51.18 电气规范.................................................................................................................... 51-59 51.19 设计技巧.................................................................................................................... 51-60 51.20 相关应用笔记 ............................................................................................................ 51-61 51.21 版本历史.................................................................................................................... 51-62

Upload: others

Post on 21-Jun-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

带阈值检测功能的

12位

A/D

转换器

51

第 51 章 带阈值检测功能的 12 位 A/D 转换器

目录

本章包括下列主题:

51.1 简介 ............................................................................................................................. 51-2

51.2 A/D 术语和转换序列 .................................................................................................... 51-4

51.3 寄存器 ......................................................................................................................... 51-6

51.4 A/D 模块配置 ............................................................................................................. 51-19

51.5 初始化 ....................................................................................................................... 51-23

51.6 控制采样过程 ............................................................................................................ 51-24

51.7 控制转换过程 ............................................................................................................ 51-24

51.8 A/D 结果缓冲区 ......................................................................................................... 51-30

51.9 扩展 DMA 操作 .......................................................................................................... 51-34

51.10 阈值检测操作 ............................................................................................................ 51-37

51.11 转换序列示例 ............................................................................................................ 51-44

51.12 A/D 采样要求 ............................................................................................................. 51-53

51.13 传递函数.................................................................................................................... 51-54

51.14 A/D 精度 / 误差 .......................................................................................................... 51-56

51.15 休眠和空闲模式期间的操作 ....................................................................................... 51-56

51.16 复位的影响 ................................................................................................................ 51-57

51.17 寄存器映射 ................................................................................................................ 51-58

51.18 电气规范.................................................................................................................... 51-59

51.19 设计技巧.................................................................................................................... 51-60

51.20 相关应用笔记 ............................................................................................................ 51-61

51.21 版本历史.................................................................................................................... 51-62

© 2011-2012 Microchip Technology Inc. DS39739B_CN 第 51-1 页

Page 2: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

PIC24F 系列参考手册

51.1 简介

PIC24F 12 位 A/D 转换器具有以下主要特性:

• 逐次逼近寄存器 (Successive Approximation Register, SAR)转换

• 转换速度 高可达 200 ksps

• 多 32 个模拟输入通道(内部和外部)

• 多个内部参考电压输入通道

• 外部参考电压输入引脚

• 单极型差分采样 / 保持(S/H)放大器

• 用以预先评估转换结果的自动阈值扫描和比较操作

• 可选择转换触发源

• 固定长度 (每通道一个字)的可配置转换结果缓冲区

• 4 个结果对齐选项

• 中断产生可配置

• 采用间接地址发生的 DMA 操作

• 可在 CPU 休眠和空闲模式下工作

12 位 A/D 转换器模块对一些 PIC24 器件中提供的 10 位模块进行了改进。这两种模块的内核均为逐次逼近寄存器 (SAR)转换器,并带有一系列用以支持灵活配置的硬件功能。 12 位模块对以下功能进行了扩展:提供 12 位分辨率、提供一系列更广泛的自动采样选项、更紧密地与其他模拟模块(例如 CTMU)进行集成,以及具有可配置的结果缓冲区。该模块还包含了一种独特的阈值检测功能,让模块自身可以基于转换结果做出简单决定。

与原先一样,内部采样 / 保持(S/H)放大器会采集一个输入信号样本,然后保证该值在转换过程中不变。一组输入多路开关可用于从 多 32 个模拟输入中选择要转换的信号,包括外部(模拟输入引脚)和内部 (例如,片上参考电压和其他模拟模块)。整个多路开关路径中包含了用于差分模拟输入的装置,以及有限数量的反相输入引脚。模块会保持采样电压,并转换为一个数字值;严格地说,该数字值代表的是输入电压与参考电压之比。通过一些配置选项,模块可以连接外部参考电压或使用器件电源和地(AVDD 和 AVSS)。参考电压和输入信号引脚的分配方式会有不同,具体取决于特定的器件。

通过一组定时和控制选项,用户可以构造灵活的扫描序列。转换可以通过程序控制单独启动、连续自由运行,或通过选定硬件事件触发。模块可以重复地对单个通道进行转换;可以对两个通道进行交替转换,也可以对部分或全部通道进行顺序扫描,然后根据用户定义的位图进行转换。产生的转换输出为 12 位数字,可以设为有符号或无符号、左对齐或右对齐。(在一些器件中,10 位分辨率是可供用户选择的一种选项;在其他器件中, 12 位分辨率是惟一可用的选项)。

转换结果自动存储在一个专用缓冲区中,从而允许在调用软件服务之前获取多个连续读数。缓冲区可以配置为 FIFO 缓冲区,也可以配置为通道索引(channel indexed)缓冲区。在 FIFO 模式下,缓冲区可以拆分为两个相等的部分,同时进行转换和读取操作。在索引模式下,缓冲区可以通过阈值扫描功能来确定转换结果是否满足用户定义的特定条件,并相应地存储或丢弃转换值,然后通过设置信号量标志来指示该事件。这使模块可以在 CPU 处于非活动状态时,以低功耗模式执行转换,并在出现特定条件时唤醒器件。

模块可以在以下情况下将其中断标志置 1:在执行选定次数的转换之后,在可以读取缓冲区时,或者在阈值检测比较成功之后。产生中断之后,序列会从缓冲区起始处重新开始。当中断标志置 1 时,根据先前的选择,扫描选择和输出缓冲区指针会返回到它们的起始位置。

图 51-1 给出了该模块的简化框图。

DS39739B_CN 第 51-2 页 © 2011-2012 Microchip Technology Inc.

Page 3: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

第 51 章 带阈值检测功能的 12 位 A/D 转换器51

带阈值检测功能的

12

位A

/D转换器

图 51-1: 12 位 A/D 转换器框图

比较器

12 位 SAR 转换逻辑

VREF+

DAC

AN(n-1)

ANn(1)

AN8

AN9

AN4

AN5

AN6

AN7

AN0

AN1

AN2

AN3

VREF-

采样控制

S/H

AVSS

AVDD

控制逻辑

数据格式

输入 MUX 控制

转换控制

引脚配置控制

内部数据总线

16

VR+VR-

MU

X A

MU

X B

VINH

VINL

VINH

VINH

VINL

VINL

VR+

VR-V

R选择

VBG(2)

VBG/6(2)

注 1: 根据特定的器件系列和各个器件的引脚数, 多可实现 32 个模拟通道。其中部分或全部通道可能是外部通道,具体

取决于器件。详情请参见具体器件的数据手册。

2: 在不同器件系列中,内部模拟通道使用不同的选项实现。详情请参见具体器件的数据手册。

3: 转换缓冲区的大小总是大于等于与外部通道数量(以字为单位) 接近而比其大的偶数。关于确切数量,请参见具

体器件的数据手册。

CTMU(2)

VDDCORE(2)

AVSS(2)

AVdd(2)

VBG/2(2)

VBG

ADC1BUF0:ADC1BUFn(3)

AD1CON1

AD1CON2

AD1CON3

AD1CHS

AD1CHITL

AD1CHITH

AD1CSSL

AD1CON5

AD1CSSHAD1CTMENL

AD1CTMENH

AD1DMBUF

AD1CON4

© 2011-2012 Microchip Technology Inc. DS39739B_CN 第 51-3 页

Page 4: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

PIC24F 系列参考手册

51.2 A/D 术语和转换序列

采样时间是 A/D 模块的 S/H 放大器连接到模拟输入引脚的时间。采样时间可以通过 A/D 转换器硬件或直接程序控制自动启动和结束。为了确保 S/H 放大器能为 A/D 转换提供足够的精度,需要有一个 小采样时间。

转换触发源结束采样时间并开始 A/D 转换或重复序列。转换触发源可从多种硬件源中选择,也可以通过软件直接控制。转换触发源选项之一是自动转换,自动转换之间的时间通过计数器和 A/D时钟设置。自动采样模式和自动转换触发可以一起使用,提供无需软件干预的连续自动转换功能。在使用自动采样时,扩展采样时间间隔位于采样结束和转换开始之间。

转换时间是 A/D 转换器转换 S/H 放大器保持电压所需的时间。除了两个时钟周期外,A/D 转换还需要一个 A/D 时钟周期(TAD)来转换结果中的每个位;对于 12 位转换,总共需要 14 个 TAD 周期。转换结束时,结果装入 A/D 结果缓冲区之一。S/H 可重新连接到输入引脚,并且可能会产生一个 CPU 中断。采样时间和 A/D 转换时间之和就是 A/D 总序列时间。图 51-2 显示了基本的转换序列,以及时间间隔之间的关系。

图 51-2: A/D 采样 / 转换序列

采样时间 A/D 转换时间

A/D 总序列时间

S/H 放大器连接到模拟

输入引脚进行采样。

从输入断开连接; S/H 放大器保持信号。

转换触发源启动 A/D 转换。

转换完成,结果装入A/D缓冲寄存器。 产生中断(可选)。

扩展采样时间 (1)

采样结束(手动或自动触发)。

A/D 总采样时间

注 1: 在自动采样模式下,当自动采样时间的值大于 0 时,会在序列中增加扩展采样时间。否则,每当 SAMP 位清零时,就

结束采样并启动转换。

DS39739B_CN 第 51-4 页 © 2011-2012 Microchip Technology Inc.

Page 5: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

第 51 章 带阈值检测功能的 12 位 A/D 转换器51

带阈值检测功能的

12

位A

/D转换器

51.2.1 以状态机方式工作

A/D 转换过程可以从有限状态机的角度来看待(图 51-3)。采样状态代表输入通道连接到 S/H 放大器、信号传递到转换器输入的时间。转换状态是过渡性的;模块会在退出采样状态时立即进入该状态,并在操作完成时切换为其他状态。非活动状态是模块初始化之前和进行软件控制转换之后的默认状态;通过使用自动采样模式,可以在操作中消除该状态。机器状态通过 AD1CON1(寄存器 51-1)中的几个控制和状态位来确定。

如果模块配置为自动采样模式,则操作会在采样和转换状态之间不断地来回 “ 乒乓式 ” 地切换。模块会自动选择要进行采样的输入通道 (如果使能了通道扫描),同时选定的转换触发源会控制整个操作的节奏。任何时候当转换不使用自动采样模式时,转换结束后即返回采样状态并保持。除了考虑关于系统吞吐量的一般问题之外,用户还需要确保采集时间是足够的。

在采样时间至关重要的应用中,由采样状态切换为转换状态也是非常关键的事件。它是采样 / 保持时间的结束点,信号值实际上是在此刻送到 A/D 来转换为数字。

图 51-3: A/D 模块状态机模型

无效

采样 转换

SAMP = 0DONE = 1

SAMP = 0DONE = 0

SAMP = 1DONE = x

SAMP 0 →1

ASAM = 1且 DONE 0→ 1

ASAM = 0 且

SSRCx 触发事件

DONE 0 → 1

器件复位

图注: HW = 自动硬件事件; SW = 软件控制的事件。

注: 关于 ASAM、 SAMP、 DONE 和 SSRC<3:0> 位的定义,请参见寄存器 51-1。

SW HWASAM 0 → 1 或�

� �

�HW

© 2011-2012 Microchip Technology Inc. DS39739B_CN 第 51-5 页

Page 6: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

PIC24F 系列参考手册

51.3 寄存器

12位A/D转换器模块 多可使用43个寄存器进行操作。所有的寄存器均映射到数据存储空间中。

51.3.1 控制寄存器

根据具体器件,模块 多具有 12 个控制和状态寄存器:

• AD1CON1:A/D 控制寄存器 1

• AD1CON2:A/D 控制寄存器 2

• AD1CON3:A/D 控制寄存器 3

• AD1CON4:A/D 控制寄存器 4

• AD1CON5:A/D 控制寄存器 5

• AD1CHS:A/D 输入通道选择寄存器

• AD1CHITH 和 AD1CHITL:A/D 扫描比较命中寄存器

• AD1CSSL 和 AD1CSSH:A/D 输入扫描选择寄存器

• AD1CTMENH 和 AD1CTMENL:CTMU 使能寄存器

AD1CON1、AD1CON2 和 AD1CON3 寄存器(寄存器 51-1、寄存器 51-2 和寄存器 51-3)用于控制 A/D 模块的总体操作。这包括:使能模块、配置转换时钟和参考电压源、选择采样和转换触发源,以及手动控制采样 / 转换序列。AD1CON4 寄存器(寄存器 51-4)设置分散 / 集中模式下的 DMA 缓冲区容量。AD1CON5 寄存器(寄存器 51-5)专门用于控制阈值检测操作的功能,包括它在节能模式下的功能。

AD1CHS 寄存器 (寄存器 51-6)用于选择要连接到 S/H 放大器的输入通道。它也用于选择输入多路开关和选择差分采样的参考源。

AD1CHITH 和 AD1CHITL 寄存器 (寄存器 51-7 和寄存器 51-8)是用于阈值检测操作的信号量寄存器。各个位 (某些情况下为位组成的对)的状态用于指示是否出现了匹配条件。在第51.10 节 “ 阈值检测操作 ” 中更详细地介绍了它们的用法。器件总是会实现 AD1CHITL,而具有 16 个或更少通道的器件中则可能未实现 AD1CHITH。

AD1CSSH/L 寄存器 (寄存器 51-9 和寄存器 51-10)用于选择要顺序扫描的通道。

AD1CTMENH/L 寄存器(寄存器 51-11 和寄存器 51-12)用于选择在转换期间由 CTMU 使用的通道。选择特定通道时,A/D 转换器可以控制 CTMU(具体地说,它的电流源)并通过该通道读取其数据。器件总是会实现 AD1CTMENL,而具有 16 个或更少通道的器件中则可能未实现AD1CTMENH。

51.3.2 A/D 结果缓冲区

模块具有多字的双端口 RAM,称为 ADC1BUF。缓冲区包含的字单元数量至少等于特定器件外部模拟通道的数量, 高数量为 32 个。缓冲区地址数量总是为偶数。每个单元都映射到数据存储空间中,并且可单独寻址。缓冲区中的单元称为 ADC1BUF0 至 ADC1BUFn( 高编号为 31)。

A/D 结果缓冲区是可读写的。当模块处于活动状态(AD1CON1<15> = 1)时,缓冲区是只读的,并存储 A/D 转换的结果。当模块处于非活动状态 (AD1CON1<15> = 0)时,缓冲区是可读写的。在该状态下,向缓冲单元写入数据将会设定阈值检测操作的阈值,如第 51.10.2 节 “ 设置比较阈值 ” 中所述。

使能扩展的 DMA 操作(AD1CON1<11> = 1)时,转换结果写入一个 16 位转换缓冲区AD1DMBUF。通过 ADON 位(AD1CON1<15>)停用模块时,缓冲区内容不会被清除。在 ADON被置 1 或清零时,转换结果及所有在 ADC1BUFn 寄存器中已设定的阈值都会保留。

DS39739B_CN 第 51-6 页 © 2011-2012 Microchip Technology Inc.

Page 7: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

第 51 章 带阈值检测功能的 12 位 A/D 转换器51

带阈值检测功能的

12

位A

/D转换器

寄存器 51-1: AD1CON1:A/D 控制寄存器 1

R/W-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0/U R/W-0 R/W-0

ADON — ADSIDL DMABM(3,4) DMAEN(3) MODE12(1) FORM1 FORM0

bit 15 bit 8

R/W-0 R/W-0 R/W-0 R/W-0 U-0 R/W-0 R/W-0 HSC R/C-0 HSC

SSRC3(2) SSRC2(2) SSRC1(2) SSRC0(2) — ASAM SAMP DONE

bit 7 bit 0

图注: C = 可清零位 U = 未实现位,读为 0

R = 可读位 W = 可写位 HSC = 硬件置 1/ 清零位

-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15 ADON: A/D 工作模式位

1 = A/D 转换器模块正在工作0 = A/D 转换器关闭

bit 14 未实现:读为 0

bit 13 ADSIDL: 空闲模式停止位

1 = 当器件进入空闲模式时,模块停止工作0 = 在空闲模式下模块继续工作

bit 12 DMABM:扩展 DMA 缓冲模式选择位 (3,4)

1 = 扩展缓冲模式:按转换顺序存储转换结果。

0 = 分散 / 集中模式: 根据转换通道存储转换结果。

bit 11 DMAEN:扩展 DMA/ 缓冲区使能位 (3)

1 = 使能扩展 DMA 和缓冲区功能

0 = 禁止扩展功能

bit 10 MODE12:12 位工作模式位 (1)

1 = 12 位 A/D 工作0 = 10 位 A/D 工作

bit 9-8 FORM<1:0>:数据输出格式位 (参见以下格式)

11 = 小数结果,有符号,左对齐10 = 绝对小数结果,无符号,左对齐01 = 十进制结果,有符号,右对齐00 = 绝对十进制结果,无符号,右对齐

注 1: 该位仅在具有用户可选分辨率的模块中实现。对于具有固定的 10 位或 12 位分辨率的 A/D 模块,该位未实现,应保持为 1或 0。关于该位的具体设置,请参见器件数据手册。

2: 每个器件系列定义的采样时钟触发源有所不同;可能并未定义所有触发源。详情请参见具体器件的数据手册。

3: 只有带有 DMA 的器件才实现 DMAEN 和 DMABM。对于不带 DMA 的器件,这两位未实现,读为 0。欲知更多信息,请参见具体器件的数据手册。

4: 该位仅在扩展 DMA/ 缓冲区功能有效(DMAEN = 1)时可用。

© 2011-2012 Microchip Technology Inc. DS39739B_CN 第 51-7 页

Page 8: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

PIC24F 系列参考手册

bit 7-4 SSRC<3:0>:采样时钟源选择位 (2)

1111 = SAMP 位由触发输入 15 的上升沿清零1110 = SAMP 位由触发输入 14 的上升沿清零• • •

1001 = SAMP 位由触发输入 9 的上升沿清零1000 = SAMP 位由触发输入 8 的上升沿清零0111 = SAMP 位在 SAMP 位置 1 的 SAMC<4:0> 个 TAD 时钟之后清零(自动转换模式)。不存在扩展

采样时间。0110 = SAMP 位由触发输入 6 的上升沿清零• • •

0001 = SAMP 位由触发输入 1 的上升沿清零0000 = SAMP 位必须用软件清零

bit 3 未实现:读为 0

bit 2 ASAM: A/D 采样自动启动位

1 = 后一次转换结束后立即开始采样; SAMP 位自动置 10 = 手动将 SAMP 位置 1 时开始采样

bit 1 SAMP: A/D 采样使能位

1 = A/D 采样 / 保持放大器正在采样0 = A/D 采样 / 保持放大器在保持采样结果

bit 0 DONE:A/D 转换状态位

1 = A/D 转换完成0 = A/D 转换尚未开始或在进行中

寄存器 51-1: AD1CON1:A/D 控制寄存器 1 (续)

注 1: 该位仅在具有用户可选分辨率的模块中实现。对于具有固定的 10 位或 12 位分辨率的 A/D 模块,该位未实现,应保持为 1或 0。关于该位的具体设置,请参见器件数据手册。

2: 每个器件系列定义的采样时钟触发源有所不同;可能并未定义所有触发源。详情请参见具体器件的数据手册。

3: 只有带有 DMA 的器件才实现 DMAEN 和 DMABM。对于不带 DMA 的器件,这两位未实现,读为 0。欲知更多信息,请参见具体器件的数据手册。

4: 该位仅在扩展 DMA/ 缓冲区功能有效 (DMAEN = 1)时可用。

DS39739B_CN 第 51-8 页 © 2011-2012 Microchip Technology Inc.

Page 9: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

第 51 章 带阈值检测功能的 12 位 A/D 转换器51

带阈值检测功能的

12

位A

/D转换器

寄存器 51-2: AD1CON2:A/D 控制寄存器 2

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 U-0 U-0

PVCFG1 PVCFG0 NVCFG0 OFFCAL BUFREGEN CSCNA — —

bit 15 bit 8

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

BUFS(1) SMPI4(2) SMPI3(2) SMPI2(2) SMPI1(2) SMPI0(2) BUFM(1) ALTS

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0

-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15-14 PVCFG<1:0>:转换器正参考电压配置位

11 = 内部 VRH210 = 内部 VRH101 = 外部 VREF+00 = AVDD

bit 13 NVCFG0:转换器负参考电压配置位

1 = 外部 VREF-0 = AVSS

bit 12 OFFCAL: 失调校准模式选择位

1 = 采样 / 保持通道的反相和同相输入与 AVSS 连接0 = 采样 / 保持通道的反相和同相输入与一般输入连接

bit 11 BUFREGEN: A/D 缓冲寄存器使能位

1 = 转换结果装入根据转换通道确定的缓冲单元0 = A/D 结果缓冲区视为 FIFO 缓冲区

bit 10 CSCNA: MUX A 通道扫描使能位

1 = 通过 AD1CSSH/AD1CSSL 寄存器选择扫描来自 MUX A 的输入0 = 不扫描输入

bit 9-8 未实现:读为 0

bit 7 BUFS:缓冲区填充状态位 (1)

1 = A/D 正在填充缓冲区的上半部分;用户应访问下半部分中的数据0 = A/D 正在填充缓冲区的下半部分;用户应访问上半部分中的数据

bit 6-2 SMPI<4:0>:中断采样 /DMA 递增速率选择位 (2)

当 DMAEN = 1时:11111 = 完成 32 次采样 / 转换操作后递增 DMA 地址 11110 = 完成 31 次采样 / 转换操作后递增 DMA 地址• • • 00001 = 完成 2 次采样 / 转换操作后递增 DMA 地址00000 = 完成 1 次采样 / 转换操作后递增 DMA 地址当 DMAEN = 0时:11111 = 对每 32 次采样进行转换后中断

11110 = 对每 31 次采样进行转换后中断• • • 00001 = 对每 2 次采样进行转换后中断00000 = 对每次采样进行转换后中断

注 1: 仅在缓冲区采用 FIFO 模式 (BUFREGEN = 0)时适用。此外, BUFS 仅在 BUFM = 1且 DMAEN = 0(若该位在具体器件系列中实现)时使用。

2: 在 DMAEN (AD1CON1<11>)未实现的器件中,始终由 SMPIx 位选择每次中断的采样 / 转换次数。

© 2011-2012 Microchip Technology Inc. DS39739B_CN 第 51-9 页

Page 10: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

PIC24F 系列参考手册

bit 1 BUFM:缓冲区填充模式选择位 (1)

1 = 第一次中断时从 AD1BUF0 处开始填充缓冲区,下一次中断时从 AD1BUF(n/2) 处开始填充(拆分缓冲区模式)

0 = 在地址 ADCBUF0 处开始填充缓冲区,后续中断则在每个连续地址处填充 (FIFO 模式)

bit 0 ALTS: 交替输入采样模式选择位

1 = 在第一次采样时使用采样多路开关 A 选择的输入通道,而在下一次采样时使用采样多路开关 B 选择的输入通道

0 = 总是使用采样多路开关 A 选择的输入通道

寄存器 51-2: AD1CON2:A/D 控制寄存器 2 (续)

注 1: 仅在缓冲区采用 FIFO 模式 (BUFREGEN = 0)时适用。此外, BUFS 仅在 BUFM = 1且 DMAEN = 0(若该位在具体器件系列中实现)时使用。

2: 在 DMAEN (AD1CON1<11>)未实现的器件中,始终由 SMPIx 位选择每次中断的采样 / 转换次数。

DS39739B_CN 第 51-10 页 © 2011-2012 Microchip Technology Inc.

Page 11: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

第 51 章 带阈值检测功能的 12 位 A/D 转换器51

带阈值检测功能的

12

位A

/D转换器

寄存器 51-3: AD1CON3:A/D 控制寄存器 3

R/W-0 R-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

ADRC EXTSAM PUMPEN(1) SAMC4 SAMC3 SAMC2 SAMC1 SAMC0

bit 15 bit 8

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

ADCS7 ADCS6 ADCS5 ADCS4 ADCS3 ADCS2 ADCS1 ADCS0

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0

-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15 ADRC: A/D 转换时钟源位

1 = RC 时钟0 = 时钟由系统时钟产生

bit 14 EXTSAM:扩展采样时间位

1 = A/D 在 SAMP = 0之后仍然在采样0 = A/D 完成采样

bit 13 PUMPEN:电荷泵使能位 (1)

1 = 使能开关的电荷泵0 = 禁止开关的电荷泵

bit 12-8 SAMC<4:0>:自动采样时间选择位

11111 = 31 TAD

• • • 00001 = 1 TAD

00000 = 0 TAD

bit 7-0 ADCS<7:0>:A/D 转换时钟选择位

11111111• • • = 保留0100000000111111 = 64·TCY = TAD

• • • 00000001 = 2·TCY = TAD

00000000 = TCY = TAD

注 1: 此功能仅在选定器件上可用。

© 2011-2012 Microchip Technology Inc. DS39739B_CN 第 51-11 页

Page 12: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

PIC24F 系列参考手册

DS39739B_CN 第 51-12 页 © 2011-2012 Microchip Technology Inc.

寄存器 51-4: AD1CON4:A/D 控制寄存器 4(1)

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 15 bit 8

U-0 U-0 U-0 U-0 U-0 R/W-0 R/W-0 R/W-0

— — — — — DMABL2(2) DMABL1(2) DMABL0(2)

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0

-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15-3 未实现位:读为 0

bit 2-0 DMABL<2:0>:DMA 缓冲区容量选择位 (2)

111 = 给每个模拟输入分配 128 字的缓冲区 110 = 给每个模拟输入分配 64 字的缓冲区 101 = 给每个模拟输入分配 32 字的缓冲区100 = 给每个模拟输入分配 16 字的缓冲区011 = 给每个模拟输入分配 8 字的缓冲区010 = 给每个模拟输入分配 4 字的缓冲区001 = 给每个模拟输入分配 2 字的缓冲区000 = 给每个模拟输入分配 1 字的缓冲区

注 1: 并非所有器件均实现 AD1CON4。欲知更多信息,请参见具体器件的数据手册。

2: 只有 AD1CON1<11> = 1时,才能使用 DMABL<2:0> 位;否则将忽略这些位的值。

Page 13: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

第 51 章 带阈值检测功能的 12 位 A/D 转换器51

带阈值检测功能的

12

位A

/D转换器

寄存器 51-5: AD1CON5:A/D 控制寄存器 5

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 U-0 R/W-0 R/W-0

ASEN LPEN CTMREQ BGREQ(1) VRSREQ(1) — ASINT1(2) ASINT0(2)

bit 15 bit 8

U-0 U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0

— — — — WM1 WM0 CM1 CM0

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0

-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15 ASEN: 自动扫描使能位

1 = 使能自动扫描0 = 禁止自动扫描

bit 14 LPEN:低功耗使能位

1 = 扫描之后使能低功耗0 = 扫描之后使能全功耗

bit 13 CTMREQ: CTMU 请求位

1 = 在 A/D 转换器使能并处于活动状态时使能 CTMU0 = 不通过 A/D 转换器使能 CTMU

bit 12 BGREQ:带隙请求位 (1)

1 = 在 A/D 转换器使能并处于活动状态时使能带隙0 = 不通过 A/D 转换器使能带隙

bit 11 VRSREQ: VREG 扫描请求位 (1)

1 = 在 A/D 转换器使能并处于活动状态时使能片上稳压器0 = 不通过 A/D 转换器使能片上稳压器

bit 10 未实现:读为 0

bit 9-8 ASINT<1:0>:自动扫描(阈值检测)中断模式位 (2)

11 = 在阈值检测序列完成且发生有效比较之后产生中断10 = 在发生有效比较之后产生中断01 = 在阈值检测序列完成之后产生中断00 = 不产生中断

bit 7-4 未实现:读为 0

bit 3-2 WM<1:0>:写模式位

11 = 保留10 = 仅自动比较 (不保存转换结果,但在发生由 CMx 和 ASINTx 位定义的有效匹配时产生中断)01 = 转换并保存 (当发生由 CMx 位定义的匹配时,转换结果保存到由寄存器位决定的存储单元中)00 = 传统操作 (转换数据保存到由缓冲寄存器位决定的存储单元中)

注 1: 这些位并未在所有器件上实现。

2: 只有在 ASEN = 1(AD1CON5<15>)和 DMAEN = 0(AD1CON1<11>)时, ASINTx 位的设置才有效。当DMAEN = 1时,每次成功写入 ADCRESDMA 寄存器(若实现)均会产生中断;否则中断的产生受SMPI<4:0> 位域控制。

© 2011-2012 Microchip Technology Inc. DS39739B_CN 第 51-13 页

Page 14: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

PIC24F 系列参考手册

bit 1-0 CM<1:0>:比较模式位

11 = 窗外模式 (如果转换结果超出相应缓冲区对定义的窗口,则发生有效匹配)10 = 窗内模式 (如果转换结果处于相应缓冲区对定义的窗口中,则发生有效匹配)01 = 大于模式 (如果结果大于相应缓冲寄存器中的值,则发生有效匹配)00 = 小于模式 (如果结果小于相应缓冲寄存器中的值,则发生有效匹配)

寄存器 51-5: AD1CON5:A/D 控制寄存器 5 (续)

注 1: 这些位并未在所有器件上实现。

2: 只有在 ASEN = 1(AD1CON5<15>)和 DMAEN = 0(AD1CON1<11>)时, ASINTx 位的设置才有效。当DMAEN = 1时,每次成功写入 ADCRESDMA 寄存器(若实现)均会产生中断;否则中断的产生受SMPI<4:0> 位域控制。

DS39739B_CN 第 51-14 页 © 2011-2012 Microchip Technology Inc.

Page 15: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

第 51 章 带阈值检测功能的 12 位 A/D 转换器51

带阈值检测功能的

12

位A

/D转换器

寄存器 51-6: AD1CHS:A/D 采样选择寄存器

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

CH0NB2 CH0NB1 CH0NB0 CH0SB4 CH0SB3 CH0SB2 CH0SB1 CH0SB0

bit 15 bit 8

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

CH0NA2 CH0NA1 CH0NA0 CH0SA4 CH0SA3 CH0SA2 CH0SA1 CH0SA0

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0

-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15-13 CH0NB<2:0>:采样多路开关 B 的通道 0 的反相输入选择位

已实现输入的数量和分配给它们的位组合因器件系列而不同。通常,为器件模拟地和 / 或外部负参考电压(VREF-)分配的位组合为 000。来自其他外部模拟通道或内部参考电压的输入可分配其他组合。关于特定器件的已实现输入的完整列表,请参见具体器件的数据手册。

器件数据手册中未明确列出的任何位组合均未实现。使用未实现的通道进行转换将产生不可预测的结果。

bit 12-8 CH0SB<4:0>:MUX B 多路开关设置的 S/H 放大器同相输入选择位

已实现输入的数量和分配给它们的位组合因器件系列而明显不同。通常,外部模拟输入的位组合从00000开始顺序分配,相应的通道从 AN0 开始, 高可能为 AN31 (11111)。 如果 32 个外部输入未实现,则内部带隙参考电压、外部参考电压和其他模拟模块(例如 CTMU)的输入在外部模拟通道之后实现。关于特定器件的已实现输入的完整列表,请参见具体器件的数据手册。

如果顺序输入未实现,则其相应的位值也未实现。此外,器件数据手册中未明确列出的任何位组合均未实现。使用未实现的通道进行转换将产生不可预测的结果。

bit 7-5 CH0NA<2:0>:采样多路开关 A 的通道 0 的反相输入选择位

与 CH0NB<2:0> 定义相同。

bit 4-0 CH0SA<4:0>:采样多路开关 A 的通道 0 的同相输入选择位

与 CH0SB<4:0> 定义相同。

© 2011-2012 Microchip Technology Inc. DS39739B_CN 第 51-15 页

Page 16: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

PIC24F 系列参考手册

寄存器 51-7: AD1CHITH:A/D 扫描比较命中寄存器 (高位字)

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

CHH31(1) CHH30(1) CHH29(1) CHH28(1) CHH27(1) CHH26(1) CHH25(1) CHH24(1)

bit 15 bit 8

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

CHH23(1) CHH22(1) CHH21(1) CHH20(1) CHH19(1) CHH18(1) CHH17(1) CHH16(1)

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0

-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15-0 CHH<31:16>:A/D 比较命中位 (1)

如果 CM<1:0> = 11:

1 = A/D 结果缓冲区 n 已写入数据或已发生匹配0 = A/D 结果缓冲区 n 尚未写入数据对于 CM<1:0> 的所有其他值:

1 = A/D 结果通道 n 上发生了匹配0 = A/D 结果通道 n 上未发生匹配

注 1: 实际的可用通道数取决于特定器件上实现了哪些通道。详情请参见器件数据手册。未实现的通道,读为 0。

寄存器 51-8: AD1CHITL:A/D 扫描比较命中寄存器 (低位字)

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

CHH15(1) CHH14(1) CHH13(1) CHH12(1) CHH11(1) CHH10(1) CHH9(1) CHH8(1)

bit 15 bit 8

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

CHH7(1) CHH6(1) CHH5(1) CHH4(1) CHH3(1) CHH2(1) CHH1(1) CHH0(1)

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0

-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15-0 CHH<15:0>:A/D 比较命中位 (1)

如果 CM<1:0> = 11:

1 = A/D 结果缓冲区 n 已写入数据或已发生匹配0 = A/D 结果缓冲区 n 尚未写入数据对于 CM<1:0> 的所有其他值:

1 = A/D 结果通道 n 上发生了匹配0 = A/D 结果通道 n 上未发生匹配

注 1: 实际的可用通道数取决于特定器件上实现了哪些通道;详情请参见具体器件的数据手册。未实现的通道,读为 0。

DS39739B_CN 第 51-16 页 © 2011-2012 Microchip Technology Inc.

Page 17: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

第 51 章 带阈值检测功能的 12 位 A/D 转换器51

带阈值检测功能的

12

位A

/D转换器

寄存器 51-9: AD1CSSH:A/D 输入扫描选择寄存器 (高位字)

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

CSS31(1) CSS30(1) CSS29(1) CSS28(1) CSS27(1) CSS26(1) CSS25(1) CSS24(1)

bit 15 bit 8

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

CSS23(1) CSS22(1) CSS21(1) CSS20(1) CSS19(1) CSS18(1) CSS17(1) CSS16(1)

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0

-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15-0 CSS<31:16>:A/D 输入扫描选择位 (1)

1 = 输入扫描时包含相应的通道0 = 输入扫描时跳过通道

注 1: 实际的可用通道数取决于特定器件上实现了哪些通道;详情请参见具体器件的数据手册。未实现的通道,读为 0。 不要选择未实现的通道进行采样,因为可能会产生不确定的结果。

寄存器 51-10: AD1CSSL:A/D 输入扫描选择寄存器 (低位字)

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

CSS15(1) CSS14(1) CSS13(1) CSS12(1) CSS11(1) CSS10(1) CSS9(1) CSS8(1)

bit 15 bit 8

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

CSS7(1) CSS6(1) CSS5(1) CSS4(1) CSS3(1) CSS2(1) CSS1(1) CSS0(1)

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0

-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15-0 CSS<15:0>:A/D 输入扫描选择位 (1)

1 = 输入扫描时包含相应的通道0 = 输入扫描时跳过通道

注 1: 实际的可用通道数取决于特定器件上实现了哪些通道;详情请参见具体器件的数据手册。未实现的通道,读为 0。 不要选择未实现的通道进行采样,因为可能会产生不确定的结果。

© 2011-2012 Microchip Technology Inc. DS39739B_CN 第 51-17 页

Page 18: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

PIC24F 系列参考手册

寄存器 51-11: AD1CTMENH:CTMU 使能寄存器 (高位字)

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

CTMEN31(1) CTMEN30(1) CTMEN29(1) CTMEN28(1) CTMEN27(1) CTMEN26(1) CTMEN25(1) CTMEN24(1)

bit 15 bit 8

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

CTMEN23(1) CTMEN22(1) CTMEN21(1) CTMEN20(1) CTMEN19(1) CTMEN18(1) CTMEN17(1) CTMEN16(1)

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0

-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15-0 CTMUEN<31:16>:转换期间 CTMU 使能位 (1)

1 = 在转换期间使能 CTMU 并连接到选定的通道0 = CTMU 不连接到该通道

注 1: 实际的可用通道数取决于特定器件上实现了哪些通道;详情请参见具体器件的数据手册。未实现的通道,读为 0。

寄存器 51-12: AD1CTMENL:CTMU 使能寄存器 (低位字)

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

CTMEN15(1) CTMEN14(1) CTMEN13(1) CTMEN12(1) CTMUEN11(1) CTMEN10(1) CTMEN9(1) CTMEN8(1)

bit 15 bit 8

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

CTMEN7(1) CTMEN6(1) CTMEN5(1) CTMEN4(1) CTMEN3(1) CTMEN2(1) CTMEN1(1) CTMEN0(1)

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0

-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15-0 CTMUEN<15:0>:转换期间 CTMU 使能位 (1)

1 = 在转换期间使能 CTMU 并连接到选定的通道0 = CTMU 不连接到该通道

注 1: 实际的可用通道数取决于特定器件上实现了哪些通道;详情请参见具体器件的数据手册。未实现的通道,读为 0。

DS39739B_CN 第 51-18 页 © 2011-2012 Microchip Technology Inc.

Page 19: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

第 51 章 带阈值检测功能的 12 位 A/D 转换器51

带阈值检测功能的

12

位A

/D转换器

51.4 A/D 模块配置

在上一节介绍的所有寄存器都必须进行配置,模块才能完全工作。一种有效的方法是先描述特定应用的信号和序列。通常,要反复执行下列步骤:为信号分配端口引脚、确定时序方法和构造扫描方案,以及将整个过程与软件设计相集成。

模块的各种配置和控制功能分布在模块的 6 个控制寄存器中。控制功能大致可分成 4 类:输入、时序、转换和输出。表 51-1 按寄存器列出了控制或状态位的寄存器单元。

表 51-1: 按寄存器和位列出的 A/D 模块功能

执行 A/D 转换时应遵循以下步骤:

1. 配置 A/D 模块:

• 选择输出分辨率 (如果可配置)

• 选择参考电压源以匹配模拟引脚上的预期范围

• 选择模拟转换时钟以使期望的数据速率与处理器时钟匹配

• 确定采样如何发生

• 设置多路开关输入分配

• 选择所需的采样 / 转换序列

• 选择输出数据格式

• 选择要保存输出值的目标

• 选择每次中断的读取次数

2. 配置 A/D 中断(如需要):

• 清零 AD1IF 位

• 选择 A/D 中断优先级

3. 开启 A/D 模块。

每个配置步骤的选项将在后面的章节中说明。

A/D 功能 寄存器 特定位

输入 AD1CON2 PVCFG<1:0>, NVCFG, OFFCAL, CSCNA, ALTS

AD1CON5 CTMREQ, BGREQ, VRSREQ

AD1CHS CH0NB<2:0>, CH0SB<4:0>, CH0NA<2:0>,CH0SA<4:0>

AD1CSSH/L CSS<31:16>, CSS<15:0>(1)

AD1CTMENH/L CTMEN<31:16>, CTMEN<15:0>(1)

转换 AD1CON1 ADON, ADSIDL, SSRC<3:0>, ASAM, SAMP, DONE

AD1CON2 SMPI<4:0>

AD1CON3 EXTSAM

AD1CON5 ASEN, LPEN, ASINT<1:0>

时序 AD1CON3 ADRC, SAMC<4:0>, ADCS<7:0>

输出 AD1CON1 FORM<1:0>, DMAEN, DMABM

AD1CON2 BUFS, BUFM, BUFREGEN

AD1CON4 DMABL<2:0>

AD1CON5 WM<1:0>, CM<1:0>

注 1: 已实现位的数量和位置取决于具体器件。更多信息,请参见具体器件的数据手册。

注: 当 ADON = 1 时,不要写 SSRCx、 BUFS、 SMPIx、 BUFM 和 ALTS 位,或者AD1CON3 和 AD1CSSL 寄存器;否则可能产生不确定的转换数据。

© 2011-2012 Microchip Technology Inc. DS39739B_CN 第 51-19 页

Page 20: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

PIC24F 系列参考手册

51.4.1 选择分辨率

A/D 模块的大多数版本都具有 12 位(多数)或 10 位的固定转换分辨率。在配置允许时,MODE12 位 (AD1CON1<10>)控制输出分辨率。该位置 1 时将选择 12 位分辨率。

51.4.2 选择参考电压源

A/D 转换的参考电压通过 PVCFG<1:0> 和 NVCFG 控制位(AD1CON2<15:13>)进行选择。参考电压高电压(VR+)可以为 AVDD、外部 VREF+ 或内部带隙参考电压。参考电压低电压(VR-)可以为 AVSS 或 VREF- 输入引脚电压。可用选项因器件系列而异。

在低引脚数器件上,外部参考电压引脚可与AN0和AN1输入共用。当这些引脚与VREF+和VREF-输入引脚共用时, A/D 转换器仍然可以在这些引脚上执行转换。

加到外部参考电压引脚上的电压必须符合特定的规范。更多详细信息,请参见器件数据手册。

51.4.3 选择 A/D 转换时钟

A/D 转换器有一个可以完成转换的 大速率。模拟模块时钟 TAD 用于控制转换时序。进行 12 位A/D 转换需要 14 个时钟周期(14 TAD),10 位 A/D 转换需要 12 个时钟周期(12 TAD)。A/D 时钟来自于器件指令时钟。

A/D 转换时钟的周期通过一个 6 位计数器用软件选择。有 64 个可能的 TAD 选项,由 AD1CON3寄存器中的 ADCSx 位指定。公式 51-1 给出了 TAD 值与 ADCSx 控制位,以及器件指令时钟周期TCY 之间的关系。为了正确进行 A/D 转换,所选择的 A/D 转换时钟 (TAD)必须可确保 小 TAD

时间,由器件系列数据手册指定。

公式 51-1: A/D 转换时钟周期

A/D 转换器还具有自己专用的 RC 时钟源,可用于执行转换。当器件处于休眠模式时执行转换,应使用 A/D RC 时钟源。可通过将 ADRC 位(AD1CON3<15>)置 1 选择 RC 振荡器。当 ADRC位置 1 时, ADCSx 位对 A/D 操作没有影响。

51.4.4 配置模拟端口引脚

A/D 模块不具有用于配置端口引脚模拟操作的内部装置。输入引脚通过模拟选择寄存器(ANSn,其中的 “n” 是端口名称)配置为模拟输入。当相应的 ANSn 位置 1 时,引脚将配置为模拟输入。默认情况下,复用模拟和数字功能的引脚在器件复位时会被配置为模拟引脚。

对于外部模拟输入, ANSn 寄存器和相应的 TRIS 寄存器位一起控制 A/D 端口引脚的操作。还必须将用作模拟输入的端口引脚所对应的 TRIS 位置 1,以将引脚指定为输入。在器件复位后,所有 TRIS 位都会置 1。如果与 A/D 通道关联的 I/O 引脚被配置为数字输出(TRIS 位清零),而引脚被配置为模拟模式,则端口的数字输出电平 (VOH 或 VOL)将被转换。

注 1:当读 PORT 寄存器时,任何配置为模拟输入的引脚都读为 0。

2:任何定义为数字输入的引脚上的模拟电平都可能导致输入缓冲器消耗的电流超出器件规范。

TCY (ADCSx + 1)

ADCSx = – 1TAD

TCY

注 :基于 TCY = 2/FOSC ;打盹模式和 PLL 被禁止。

TAD =

DS39739B_CN 第 51-20 页 © 2011-2012 Microchip Technology Inc.

Page 21: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

第 51 章 带阈值检测功能的 12 位 A/D 转换器51

带阈值检测功能的

12

位A

/D转换器

51.4.5 输入通道选择

A/D 转换器采用了两组独立的输入多路开关 (MUX A 和 MUX B),使用户可以选择要采样的模拟通道。由 CH0SAx 位和 CH0NAx 位指定的输入统称为 MUX A 输入。由 CH0SBx 位和 CH0NBx位指定的输入统称为 MUX B 输入。

从功能角度来说,MUX A 与 MUX B 彼此非常相似。两个多路开关均允许选择任意的模拟输入通道进行单独采样,也允许选择差分信号的负参考源。此外,MUX A 还可以配置为进行顺序模拟通道扫描。在第 51.4.5.1 节 “ 配置 MUX A 和 MUX B 输入 ” 和第 51.4.5.3 节 “ 扫描多个输入 ” 中对此进行了更详细的讨论。

51.4.5.1 配置 MUX A 和 MUX B 输入

用户可以选择 A/D 转换器 多 32 个可用输入中的任意一个作为 S/H 放大器的同相输入。对于MUX A,通常使用 CH0SA<4:0> 位(AD1CHS<4:0>)选择同相输入的模拟通道。对于 MUX B,使用 CH0SB<4:0> 位(AD1CHS<12:8>)选择同相输入通道。

所有外部模拟通道都可以用作同相输入。除了外部输入之外,它们还可以包括器件电源电压(AVDD)、逻辑内核电源电压(VDDCORE)、内部带隙电压 (VBG)和 / 或 VBG 的倍压或分压。一个或多个附加的输入通道用于 CTMU。这些选项会使 A/D 与所有其他输入断开。选项会因器件系列而异;详情请参见具体器件的数据手册。

CTMU 输入通过 AD1CTMENH/L 寄存器进行选择。将其中一个寄存器中的特定位置 1 时,实际上会将 CTMU 的模拟输出分配给相应的 A/D 输入通道,从而自动使能 CTMU。许多器件都已具有一个用于 CTMU 的 CH0SAx 位组合。该设置会使转换器与所有其他负载断开。该通道应为通过相应的 AD1CTMEN 位选择的通道。如果选择了其他通道,则需要确认是否所有其他模拟信号源都与该通道断开;否则,可能会产生错误的读数。

对于放大器的负(反相)输入,用户 多具有 8 个选项,通过 CH0NA<2:0> 和 CH0NB<2:0> 位(分别为 AD1CHS<7:5> 和 AD1CHS<15:13>)进行选择。选项通常包括器件地(AVss)、由NVCFG 位(AD1CON2<13>)指定的电流源 VR-,以及一个或多个外部模拟输入通道。与同相输入一样,选项会因器件系列而异。

51.4.5.2 交替 MUX A 和 MUX B 输入选择

默认情况下, A/D 转换器仅采样并转换 MUX A 选择的输入。在连续采样期间, ALTS 位(AD1CON2<0>)会使模块在 MUX A 和 MUX B 选择的两组输入之间交替。

如果 ALTS 位为 0,则仅选择对 CH0SAx 和 CH0NAx 位指定的输入进行采样。当 ALTS 位为 1时,模块将交替采样,即在前一次采样 MUX A 输入,而在下一次采样 MUX B 输入。

如果在第一次采样 / 转换序列时 ALTS 位为 1,则选择对 CH0SAx 位和 CH0NAx 位指定的输入进行采样。在下一次采样 / 转换序列时,选择对 CH0SBx 位和 CH0NBx 位指定的输入进行采样。该模式将在后续采样转换序列中重复。

注: 不同的PIC24F器件具有不同数量的模拟输入。请根据具体器件的数据手册验证所提供的模拟输入。

© 2011-2012 Microchip Technology Inc. DS39739B_CN 第 51-21 页

Page 22: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

PIC24F 系列参考手册

51.4.5.3 扫描多个输入

使用MUX A来选择模拟输入时,A/D模块可以扫描多个模拟通道。当CSCNA位(AD1CON2<10>)置 1 时, CH0SA 位被忽略,而对 AD1CSSL 寄存器指定的通道顺序地进行采样。

AD1CSSL 寄存器和 AD1CSSH 寄存器中的每个位(已实现时)对应于一个模拟通道。如果AD1CSSL 或 AD1CSSH 寄存器中的某个位置 1,则在扫描序列中将包含对应的模拟通道。输入扫描总是在每次发生中断后从第一个选定通道开始,从编号较低的输入扫描到编号较高的输入。

AD1CSSH/L寄存器位用于指定通道的同相输入。CH0NAx位仍用于选择扫描时通道的反相输入。

扫描仅对于 MUX A 输入选择可用。由 CH0SBx 位指定的 MUX B 输入选择仍选择交替输入。当选择在 MUX A 和 MUX B 之间交替采样 (ALTS = 1)时,输入将在一组 AD1CSSH/L 寄存器指定的扫描输入和 CH0SBx 位指定的固定输入之间交替。

自动扫描可以与阈值检测功能配合使用,用以在 CPU 处于非活动状态时,确定是否有一个或多个模拟通道满足预先确定的一组条件。在第51.10节 “阈值检测操作 ”中对此进行了详细的说明。

51.4.5.4 内部通道处于低功耗模式

虽然 A/D 模块可以在低功耗模式下扫描并转换模拟输入,但一些内部模拟输入在休眠模式下可能不可用。主要示例就是 CTMU 模块、内部带隙电压源和片上稳压器(对于那些包含稳压器的器件)。A/D 模块提供了通过 CTMREQ、BGREQ 和 VRSREQ 位(分别为 AD1CON5<13:11>)自动使这些资源可用的方法。将其中一个或多个位置 1 时,相应的内部模拟源会在通道扫描期间变为有效。

CTMREQ 位在所有器件上都可用。BGREQ 位在将内部带隙参考电压作为输入通道和 / 或 VREF+提供给 A/D 模块的器件上可用。 VRSREQ 位仅在使用片上稳压器的器件系列中可用。

51.4.6 使能模块

当 ADON 位(AD1CON1<15>)置 1 时,模块以全功耗、全功能模式工作。当 ADON 为 0时,模块被禁止。虽然为了 大程度节省电流,电路的数字和模拟部分会被关闭,但所有寄存器的内容会被保留。

存储在 ADC1BUF 寄存器中的转换数据也会保留,包括由用户存储的所有阈值。在重新使能模块之前,可能需要将这些寄存器重新初始化为正确的值。

在通过将 ADON 位置 1 而使能模块时,用户必须等待模拟级稳定下来。关于稳定时间,请参见第 51.18 节 “ 电气规范 ”。

注 1:如果所选的扫描输入个数大于每次中断的采样数,则编号较高的输入将不会被采样。

2:如果要在扫描操作中包含 CTMU 通道,则需要确认是否选择了正确的模拟输入通道,以及 AD1CTMEN 寄存器是否正确地配置。更多信息,请参见第 51.4.5.1 节 “ 配置MUX A 和 MUX B 输入 ”。

DS39739B_CN 第 51-22 页 © 2011-2012 Microchip Technology Inc.

Page 23: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

第 51 章 带阈值检测功能的 12 位 A/D 转换器51

带阈值检测功能的

12

位A

/D转换器

51.5 初始化

例 51-1 给出了 A/D 模块的简单初始化代码示例。在空闲模式下工作被禁止,输出数据使用无符号小数格式, AVDD 和 AVSS 用作 VR+ 和 VR-。采样启动和转换启动(转换触发源)通过软件直接执行。输入扫描被禁止,中断在每个采样 / 转换序列 (1 个转换结果)后发生,仅转换 1 个通道 (AN0)。 A/D 转换器时钟为 TCY/2。

在这种特定配置中,所有 16 个模拟输入引脚均设置为模拟输入。对于该 A/D 模块,I/O 引脚使用ANSn 模拟选择寄存器配置为在 I/O 端口上进行模拟或数字操作,注意到这一点很重要。具体器件数据手册的 I/O 端口章节中详细介绍了这些寄存器的用法。

该示例显示了通过手动置 1 和清零 SAMP 位(AD1CON1<1>)控制采样 / 转换序列的一种方法。在第 51.6 节 “ 控制采样过程 ” 和第 51.7 节 “控制转换过程 ” 中完整地讨论了该方法和其他方法。

例 51-1: A/D 初始化代码示例

AD1CON1 = 0x2200; // Configure sample clock source// and conversion trigger mode.// Unsigned Fraction format (FORM<1:0>=10),// Manual conversion trigger (SSRC<3:0>=0000),// Manual start of sampling (ASAM=0),// No operation in Idle mode (ADSIDL=1),// S/H in Sample (SAMP = 1)

AD1CON2 = 0; // Configure A/D voltage reference// and buffer fill modes.// Vr+ and Vr- from AVdd and AVss(PVCFG<1:0>=00, NVCFG=0),// Inputs are not scanned,// Interrupt after every sample

AD1CON3 = 0; // Configure sample time = 1Tad,// A/D conversion clock as Tcy

AD1CHS = 0; // Configure input channels,// S/H+ input is AN0,// S/H- input is Vr- (AVss).

AD1CSSL = 0; // No inputs are scanned.IFS0bits.AD1IF = 0; // Clear A/D conversion interrupt.

// Configure A/D interrupt priority bits (AD1IP<2:0>) here, if// required.Default priority level is 4.

IEC0bits.AD1IE = 1; // Enable A/D conversion interruptAD1CON1bits.ADON = 1; // Turn on A/DAD1CON1bits.SAMP = 1; // Start sampling the inputDelay(); // Ensure the correct sampling time has elapsed

// before starting conversion.AD1CON1bits.SAMP = 0; // End A/D sampling and start conversion

// Example code for A/D ISR:void __attribute__ ((__interrupt__)) _ADC1Interrupt(void){

IFS0bits.AD1IF = 0;}

© 2011-2012 Microchip Technology Inc. DS39739B_CN 第 51-23 页

Page 24: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

PIC24F 系列参考手册

51.6 控制采样过程

51.6.1 手动采样

在 ASAM 位(AD1CON1<2>)清零时将 SAMP 位(AD1CON1<1>)置 1 会使 A/D 转换器开始采样。清零 SAMP 位会结束采样并自动开始转换;但是,在置 1 和清零 SAMP 之间必须有足够的延时,采样过程才会开始(tPSS,参数 AD61)。在 SAMP 位再次置 1 前,不会重新开始采样。示例请参见图 51-4。

51.6.2 自动采样

将 ASAM 位置 1 会使 A/D 转换器在转换完成后自动开始采样。可以使用几个选项之一作为结束采样并完成转换的事件。在正在进行的转换完成之后,采样将在下一个选定通道上继续。示例请参见图 51-5。

51.6.3 监视采样状态

SAMP 位用于指示 A/D 转换器的采样状态。通常,当 SAMP 清零时(指示采样结束), DONE位会自动清零,指示转换开始。如果SAMP为0,而DONE为1,则说明A/D转换器处于无效状态。

51.6.4 中止采样

处于手动采样模式时,清零 SAMP 位将终止采样。如果 SSRC<3:0> = 0000,则它还会自动启动转换。

在自动采样模式下清零 ASAM 位将不会终止正在进行的采样 / 转换序列;但是,在随后的转换完成之后,采样不会自动重新开始。

51.7 控制转换过程

转换触发源会终止采样并启动选定的转换序列。SSRC<3:0> 位(AD1CON1<7:4>)用于选择转换触发源。

51.7.1 手动控制

当 SSRC<3:0> = 0000时,转换触发处于软件控制下。清零 SAMP 位(AD1CON1<1>)会启动转换序列。

图 51-4 的示例说明了将 SAMP 位置 1 启动采样,将 SAMP 位清零终止采样并启动转换的过程。用户软件必须对置 1 和清零 SAMP 位定时,以确保有足够的采样时间对输入信号进行采样。

图 51-5 的示例说明了将 ASAM 位置 1 启动自动采样,将 SAMP 位清零终止采样并启动转换的过程。转换完成之后,模块会将 SAMP 位置 1 并恢复为采样状态。用户软件必须对清零 SAMP 位定时,以确保有足够的采样时间对输入信号进行采样,因为自先前清零 SAMP 位以来的时间包括转换时间 (紧随其后)和下一个采样时间。

注 1:可用的转换触发源根据 PIC24F 器件型号的不同而不同。关于可用的转换触发源,请参见具体器件的数据手册。

2:当使能 A/D 模块时,不应更改 SSRCx 选择位。如果用户希望更改转换触发源,请确保先通过清零 ADON 位(AD1CON1<15>)来禁止 A/D 模块。

DS39739B_CN 第 51-24 页 © 2011-2012 Microchip Technology Inc.

Page 25: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

第 51 章 带阈值检测功能的 12 位 A/D 转换器51

带阈值检测功能的

12

位A

/D转换器

图 51-4: 转换 1 个通道,手动采样启动,手动转换启动

例 51-2: 转换 1 个通道,手动采样启动,手动转换启动的代码

图 51-5: 转换 1 个通道,自动采样启动,手动转换启动

A/D 时钟

SAMP

ADC1BUF0

TSAMP TCONV

BCF AD1CON1, SAMPBSF AD1CON1, SAMP指令执行

DONE

int ADCValue;

ANSB = 0x0001; // AN2 as analog, all other pins are digitalAD1CON1 = 0x0000; // SAMP bit = 0 ends sampling and starts convertingAD1CHS = 0x0002; // Connect AN2 as S/H+ input

// in this example AN2 is the inputAD1CSSL = 0;AD1CON3 = 0x0002; // Manual Sample, Tad = 3TcyAD1CON2 = 0;AD1CON1bits.ADON = 1; // turn ADC ON

while (1) // repeat continuously{

AD1CON1bits.SAMP = 1; // start sampling...Delay(); // Ensure the correct sampling time has elapsed

// before starting conversion.AD1CON1bits.SAMP = 0; // start convertingwhile (!AD1CON1bits.DONE){}; // conversion done?ADCValue = ADC1BUF0; // yes then get ADC value

}

A/D 时钟

SAMP

ADC1BUF0

TSAMP TCONV

BCF AD1CON1, SAMP

TCONV

BSF AD1CON1, ASAM BCF AD1CON1, SAMP

TSAMPTAD0 TAD0

指令执行

© 2011-2012 Microchip Technology Inc. DS39739B_CN 第 51-25 页

Page 26: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

PIC24F 系列参考手册

51.7.2 对转换触发计时

当 ADRC = 1时,转换触发处于 A/D 时钟控制下。SAMCx 位(AD1CON3<12:8>)用于选择启动采样和启动转换之间的 TAD 时钟周期数。在启动采样后,模块会对 SAMCx 位指定的 TAD 时钟周期计数。 SAMCx 位必须始终设定为至少 1 个时钟周期,以确保满足采样要求。

公式 51-2: 计时转换触发时间

图 51-6 显示了如何对由用户软件启动的采样使用计时转换触发。

图 51-6: 转换 1 个通道,手动采样启动,基于 TAD 的转换启动

例 51-3: 转换 1 个通道,手动采样启动,基于 TAD 的转换启动的代码

TSMP = SAMC<4:0> * TAD

A/D 时钟

SAMP

ADC1BUF0

TSAMP TCONV

BSF AD1CON1, SAMP指令执行

DONE

int ADCValue;

ANSB = 0x1000; // all PORTB = Digital; RB12 = analogAD1CON1 = 0x00E0; // SSRC<2:0> = 111 implies internal counter ends sampling

// and starts converting.AD1CHS = 0x000C; // Connect AN12 as S/H input.

// in this example AN12 is the inputAD1CSSL = 0;AD1CON3 = 0x1F02; // Sample time = 31Tad, Tad = 3TcyAD1CON2 = 0;AD1CON1bits.ADON = 1; // turn ADC ONwhile (1) // repeat continuously{

AD1CON1bits.SAMP = 1; // start sampling, then after 31Tad go to conversionwhile (!AD1CON1bits.DONE){}; // conversion done?ADCValue = ADC1BUF0; // yes then get ADC value

} // repeat

DS39739B_CN 第 51-26 页 © 2011-2012 Microchip Technology Inc.

Page 27: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

第 51 章 带阈值检测功能的 12 位 A/D 转换器51

带阈值检测功能的

12

位A

/D转换器

51.7.2.1 自由运行采样转换序列

使用自动转换触发模式 (SSRC<3:0> = 0111),配合自动采样启动模式 (ASAM = 1),可使A/D 模块确定采样 / 转换序列,而无需用户干预或其他器件资源。此 “ 计时 ” 模式(如图 51-7 所示)允许在模块初始化之后进行连续数据收集。

请注意,该模式下的所有时序都使用 TAD 进行衡量,无论是来自 A/D 内部 RC 时钟还是来自 TCY

(通过 ADCS<7:0> 位进行预分频)。在两种情况下,都使用 SAMC<4:0> 位来设置 TSAMP 中的TAD 时钟数量。 TCONV 固定为 12 个 TAD。

图 51-7: 转换 1 个通道,自动采样启动,基于 TAD 的转换启动

例 51-4: 转换 1 个通道,自动采样启动,基于 TAD 的转换启动的代码

A/D 时钟

SAMP

ADC1BUF1

TSAMP TCONV

DONE

TSAMP TCONV

ADC1BUF0

BSF AD1CON1, ASAM指令执行

由软件复位

int ADCValue, count;int *ADC16Ptr;

ANSB = 0x0001; // AN2 as analog, all other pins are digitalAD1CON1 = 0x00E0; // SSRC bit = 111 implies internal counter

// ends sampling and starts converting.AD1CHS = 0x0002; // Connect RB2/AN2 as CH0 input..

// in this example RB2/AN2 is the inputAD1CSSL = 0;AD1CON3 = 0x0F00; // Sample time = 15Tad, Tad = TcyAD1CON2 = 0x0004; // Set AD1IF after every 2 samplesAD1CON1bits.ADON = 1; // turn ADC ONwhile (1) // repeat continuously{

ADCValue = 0; // clear variableADC16Ptr = &ADC1BUF0; // initialize ADC1BUF pointerIFS0bits.AD1IF = 0; // clear ADC interrupt flagAD1CON1bits.ASAM = 1; // auto start sampling for 31Tad

// then go to conversionwhile (!IFS0bits.AD1IF){}; // conversion done?AD1CON1bits.ASAM = 0; // yes then stop sample/convertfor(count = 0; count < 2; count++) // average the 2 ADC value{

ADCValue = ADCValue + *ADC16Ptr++;}ADCValue = ADCValue >> 1;

} // repeat

© 2011-2012 Microchip Technology Inc. DS39739B_CN 第 51-27 页

Page 28: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

PIC24F 系列参考手册

51.7.2.2 使用计时转换触发和自动采样时采样时间的注意事项

用户必须确保采样时间满足第 51.12 节 “A/D 采样要求 ” 中规定的采样要求。假设模块设置为自动采样并使用计时转换触发,则采样时间间隔由 SAMCx 位指定。

51.7.3 事件触发转换启动

通常需要将采样结束和转换启动与某个其他时间事件同步。根据器件系列的不同,A/D 模块 多具有 16 个可用作转换触发事件的源。事件触发源通过 SSRC<3:0> 位 (AD1CON1<7:4>)进行选择。

如前面所述,可用的事件触发源会因器件系列而不同。具体信息,请参见具体器件的数据手册。下面的示例代表了在大多数器件上实现的触发源。请注意, SSRCx 位的分配在一些器件上可能会有所不同。

51.7.3.1 外部 INT0 引脚触发

当 SSRC<3:0> = 0001时,A/D 转换由 INT0 引脚上的有效电平跳变触发。引脚可以设定为使用上升沿输入或下降沿输入。

51.7.3.2 通用定时器比较触发

当 SSRC<3:0> = 0010 时, A/D 通过 32 位定时器对 TMR3/TMR2 与 32 位组合周期寄存器PR3/PR2 之间的匹配事件触发。匹配会导致定时器产生特殊的 A/D 转换触发事件信号。

在一些器件中,也为 TMR5/TMR4 定时器对实现了该功能。详情请参见具体器件的数据手册。

51.7.3.3 将 A/D 操作与内部或外部事件同步

外部事件触发脉冲结束采样和启动转换的模式可以与自动采样 (ASAM = 1)结合使用,使 A/D转换器将采样转换事件与触发脉冲源同步。例如,在图 51-9 中(其中, SSRC<3:0> = 0010且ASAM = 1),A/D 转换器的结束采样和启动转换总是与定时器比较触发事件同步。A/D 转换器有与定时器比较事件速率对应的采样转换速率。

51.7.3.4 自动采样 / 转换序列的采样时间注意事项

不同的采样 / 转换序列为 S/H 通道提供不同的可用采样时间来采集模拟信号。用户必须确保采样时间满足第 51.12 节 “A/D 采样要求 ” 中规定的采样要求。

假设模块设置为自动采样,并且使用外部触发脉冲作为转换触发源,则采样时间间隔是触发脉冲时间间隔的一部分。采样时间等于触发脉冲周期减去完成转换所需的时间。

公式 51-3: 计算顺序采样的可用采样时间

TSMP = 触发脉冲时间间隔 (TSEQ) – 转换时间 (TCONV) = TSEQ – TCONV

DS39739B_CN 第 51-28 页 © 2011-2012 Microchip Technology Inc.

Page 29: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

第 51 章 带阈值检测功能的 12 位 A/D 转换器51

带阈值检测功能的

12

位A

/D转换器

图 51-8: 手动采样启动,基于转换触发的转换启动

图 51-9: 自动采样启动,基于转换触发的转换启动

例 51-5: 转换 1 个通道,自动采样启动,基于转换触发的转换启动的代码

转换触发信号

A/D 时钟

SAMP

ADC1BUF0

TSAMP TCONV

BSF AD1CON1, SAMP指令执行

转换触发信号

A/D 时钟

SAMP

ADC1BUF0

TSAMP TCONV

BSF AD1CON1, ASAM

TCONVTSAMP

ADC1BUF1

DONE 由软件复位

指令执行

int ADCValue;

ANSB = 0x0001; // AN2 as analog, all other pins are digitalAD1CON1 = 0x0040; // SSRC bit = 010 implies GP TMR3

// compare ends sampling and starts converting.AD1CHS = 0x0002; // Connect AN2 as CH0 input...

// in this example AN2 is the inputAD1CSSL = 0;AD1CON3 = 0x0000; // Sample time is TMR3, Tad = TcyAD1CON2 = 0x0004; // Set AD1IF after 2 conversionsTMR3 = 0x0000; // set TMR3 to time out every 125 msPR3 = 0x3FFF;T3CON = 0x8010;AD1CON1bits.ADON = 1; // turn ADC ONAD1CON1bits.ASAM = 1; // start auto sampling every 125 mswhile (1) // repeat continuously{

while (!IFS0bits.AD1IF){}; // conversion done?ADCValue = ADC1BUF0; // yes then get first ADC valueIFS0bits.AD1IF = 0; // clear AD1IF

}

© 2011-2012 Microchip Technology Inc. DS39739B_CN 第 51-29 页

Page 30: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

PIC24F 系列参考手册

51.7.4 监视采样 / 转换状态

DONE 位 (AD1CON1<0>)用于指示 A/D 转换器的转换状态。通常,当 SAMP 位清零时(指示采样结束),DONE 位会自动清零,指示转换开始。如果 SAMP 为 0,而 DONE 为 1,则说明A/D 转换器处于无效状态。

在某些工作模式下,SAMP 位也可以启用和终止采样。在这些模式下,DONE 位不能用于终止正在进行中的转换。

51.7.5 产生 A/D 中断

SMPI<4:0> 位 (AD1CON2<6:2>)用于控制 A/D 中断标志 AD1IF。启动采样之后,在达到由SMPIx 位指定的采样 / 转换序列数量后,A/D 中断标志置 1 ;并在每次经过相同次数的采样之后重新产生中断。由 SMPIx 位指定的值也对应于缓冲区中的数据样本数, 大为 16。要允许中断,必须将 A/D 中断允许位 AD1IE 置 1。

若 DMAEN (AD1CON1<11>)置 1,那么每次成功写入 AD1DMBUF 寄存器都会产生中断。欲知更多信息,请参见第 51.9 节 “ 扩展 DMA 操作 ”。

若使能自动扫描 (AD1CON5<15> = 1),那么中断产生受 ASINTx 位 (AD1CON5<9:8>)控制。欲知更多信息,请参见第 51.10.4 节 “ 阈值检测中断 ”。

51.7.6 中止转换

在转换期间清零 ADON 位将中止当前的转换。不会用部分完成的 A/D 转换样本来更新 A/D 结果缓冲区;即,对应的 ADC1BUF 缓冲单元将仍然保持上一次转换完成后的值(即上一次写入该缓冲区的值)。

51.7.7 失调校准

模块提供了一种简单的校准方法来消除内部器件噪声的影响。虽然并非总是必要,但它对于需要转换弱模拟信号的情形可能会很有用。校准通过使用 OFFCAL 位 (AD1CON2<12>)来执行。它会使 S/H 放大器与所有输入完全断开。模块会在 OFFCAL 位置 1 的情况下,执行单参考电压转换。该转换的结果代表由于内部器件噪声而增加的值。应用程序可以存储该结果,然后用作未来转换的偏移值。

51.8 A/D 结果缓冲区

在转换完成时,模块会将转换结果写入 A/D 结果缓冲区。该缓冲区为固定字大小的 RAM 阵列,通过 SFR 空间进行访问。缓冲区的大小由器件上外部模拟输入通道的数量决定,以使每个通道对应一个字。根据不同的器件,可能会为一个或多个内部模拟通道(例如,带隙源)提供附加的缓冲区空间。缓冲区地址的数量总是为偶数,并且总是至少等于外部通道的数量。

用户软件可以尝试在产生每个 A/D 转换结果时读取它,但这样可能会消耗太多的 CPU 时间。通常,为了 大程度降低软件开销,模块可以将结果填入缓冲区,然后在缓冲区填满时产生中断。

注: 本节介绍传统模式(AD1CON5<3:2> = 00)下的缓冲区操作。对于阈值检测功能使用 “ 仅比较 ” 或 “ 比较并保存 ” 模式时,缓冲区操作会有不同。欲知更多信息,请参见第 51.10 节 “ 阈值检测操作 ”。

DS39739B_CN 第 51-30 页 © 2011-2012 Microchip Technology Inc.

Page 31: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

第 51 章 带阈值检测功能的 12 位 A/D 转换器51

带阈值检测功能的

12

位A

/D转换器

51.8.1 每个中断对应的转换次数

SMPI<4:0> 位用于选择在产生 CPU 中断之前,进行多少次 A/D 转换。每个中断对应的转换次数范围为 1 至 16 次。在每次中断之后,A/D 转换器模块总是从缓冲区开始处开始写它的转换结果。例如,如果 SMPI<4:0> = 00000,则转换结果将总是被写入 ADC1BUF0。在该示例中,由于指定了每个中断仅对应一个序列,所以未使用任何其他缓冲单元。

51.8.2 缓冲区填充模式

结果缓冲区可配置为工作于两种模式:标准 FIFO 模式 (与先前的 10 位 A/D 模块兼容,它是默认模式)或通道索引模式。填充模式通过 BUFREGEN 位 (AD1CON2<11>)进行选择。

51.8.2.1 FIFO 模式

当 BUFREGEN = 0 时,结果缓冲区工作于 FIFO 模式。在启动转换之后,第一个转换结果将写入第一个可用的缓冲区地址。后续的转换结果将会写入紧接着的连续缓冲单元,一直持续到该过程被中断为止。如果任其持续下去而不中断,模块将会填充每一个存储单元,然后回绕到第一个地址,继续这一过程。

BUFM 位 (AD1CON2<1>)用于控制缓冲区的填充方式。当 BUFM 为 1 时,缓冲区会被拆分为两个相等的部分:下半部分(ADC1BUF0至ADC1BUF[(n/2) – 1])和上半部分(ADC1BUF[n/2]至 ADC1BUFn);其中,n 代表可用模拟通道的数量(包括内部和外部通道)。缓冲区将在每次中断事件后交替接收转换结果。在 BUFM 置 1 之后,初始时使用的缓冲区是低位字组。

当 BUFM 为 0时,对于所有转换序列都使用整个缓冲区。

决定是否使用分拆的缓冲区取决于,在发生中断后有多少时间可用于传送缓冲区内容(时间由应用程序决定)。如果应用程序可以在采样和转换一个通道的时间内快速地读取整个缓冲区,则BUFM 位可以为 0,每次中断 多可以进行 16 次转换。在第一个缓冲单元被覆盖之前,应用程序将有一个采样 / 转换时间可以用于读取数据。

如果处理器无法在采样和转换时间内读取缓冲区,则BUFM位应为1。例如,如果SMPI<4:0> = 00111,则会有 8 个转换结果装入缓冲区的下半部分,之后会发生中断。紧接的 8 个转换结果将装入缓冲区的上半部分。因此,处理器将可以使用中断之间的全部时间,用于将 8 个转换结果移出缓冲区。

51.8.2.1.1 缓冲区填充状态

将转换结果缓冲区分拆 (BUFM = 1)时, BUFS 状态位 (AD1CON2<7>)用于指示 A/D 转换器当前正在写缓冲区的哪一半。如果 BUFS = 0,则说明 A/D 转换器在填充低位字组,用户应用程序应从高位字组读取转换值。如果 BUFS = 1,则说明情况相反,用户应用程序应从低位字组读取转换值。

51.8.2.2 通道索引模式

当 BUFREGEN = 1时,FIFO 操作会被禁止。在该填充模式下,每个通道的转换结果仅写入对应于该通道的缓冲单元。例如,对 AN0 执行的任何转换都仅存储到 ADC1BUF0 中。对于 AN1 和ADC1BUF1 也是一样,如此类推。对于某个特定通道,在产生中断之前发生的后续转换都会导致相应存储单元中的先前数据被覆盖。

通道索引模式与阈值检测功能配合使用时特别有用,因为这使用户可以简便地测试特定模拟通道上的特定条件,而无需产生多余的 CPU 开销。在第 51.10 节 “ 阈值检测操作 ” 中对此进行了更详细的说明。

注: 当 BUFM 位置 1 时,用户不应将 SMPIx 位设为指定每个中断对应多于 (n/2)次转换的值。

© 2011-2012 Microchip Technology Inc. DS39739B_CN 第 51-31 页

Page 32: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

PIC24F 系列参考手册

51.8.3 缓冲区数据格式

每个 A/D 转换的结果均为 12 位宽(或者,在某些器件中为 10 位宽)。为了保持数据格式兼容性,每次转换的结果自动转换为 4 种可选的 16 位格式之一。FORM<1:0> 位(AD1CON1<9:8>)用于选择格式。图 51-10 和图 51-11 给出了可供选择的数据输出格式。表 51-2 至表 51-5 列出了各种转换结果代码的等价数值。

图 51-10: A/D 输出数据格式 (12 位)

表 51-2: 各种结果代码的等价数值:12 位整数格式

表 51-3: 各种结果代码的等价数值:12 位小数格式

RAM 内容: d11 d10 d09 d08 d07 d06 d05 d04 d03 d02 d01 d00

读出到总线:

整数 0 0 0 0 d11 d10 d09 d08 d07 d06 d05 d04 d03 d02 d01 d00

有符号整数 d11 d11 d11 d11 d11 d10 d09 d08 d07 d06 d05 d04 d03 d02 d01 d00

小数 (1.15) d11 d10 d09 d08 d07 d06 d05 d04 d03 d02 d01 d00 0 0 0 0

有符号小数 (1.15) d11 d10 d09 d08 d07 d06 d05 d04 d03 d02 d01 d00 0 0 0 0

VIN/VREF12 位

输出码

16 位整数格式 /等价十进制值

16 位有符号整数格式 /等价十进制值

4095/4096 1111 1111 1111 0000 1111 1111 1111 4095 0000 0111 1111 1111 2047

4094/4096 1111 1111 1110 0000 1111 1111 1110 4094 0000 0111 1111 1110 2046

•••2049/4096 1000 0000 0001 0000 1000 0000 0001 2049 0000 0000 0000 0001 1

2048/4096 1000 0000 0000 0000 1000 0000 0000 2048 0000 0000 0000 0000 0

2047/4096 0111 1111 1111 0000 0111 1111 1111 2047 1111 1111 1111 1111 -1

•••

1/4096 0000 0000 0001 0000 0000 0000 0001 1 1111 1000 0000 0001 -2047

0/4096 0000 0000 0000 0000 0000 0000 0000 0 1111 1000 0000 0000 -2048

VIN/VREF12 位

输出码

16 位小数格式 /等价十进制值

16 位有符号小数格式 /等价十进制值

4095/4096 1111 1111 1111 1111 1111 1111 0000 0.999 0111 1111 1111 0000 0.499

4094/4096 1111 1111 1110 1111 1111 1110 0000 0.998 0111 1111 1110 0000 0.498

•••2049/4096 1000 0000 0001 1000 0000 0001 0000 0.501 0000 0000 0001 0000 0.001

2048/4096 1000 0000 0000 1000 0000 0000 0000 0.500 0000 0000 0000 0000 0.000

2047/4096 0111 1111 1111 0111 1111 1111 0000 0.499 1111 1111 1111 0000 -0.001

•••

1/4096 0000 0000 0001 0000 0000 0001 0000 0.001 1000 0000 0001 0000 -0.499

0/4096 0000 0000 0000 0000 0000 0000 0000 0.000 1000 0000 0000 0000 -0.500

DS39739B_CN 第 51-32 页 © 2011-2012 Microchip Technology Inc.

Page 33: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

第 51 章 带阈值检测功能的 12 位 A/D 转换器51

带阈值检测功能的

12

位A

/D转换器

图 51-11: A/D 输出数据格式 (10 位)

表 51-4: 各种结果代码的等价数值:10 位整数格式

表 51-5: 各种结果代码的等价数值:10 位小数格式

RAM 内容: d09 d08 d07 d06 d05 d04 d03 d02 d01 d00

读出到总线:

整数 0 0 0 0 0 0 d09 d08 d07 d06 d05 d04 d03 d02 d01 d00

有符号整数 d09 d09 d09 d09 d09 d09 d09 d08 d07 d06 d05 d04 d03 d02 d01 d00

小数 (1.15) d09 d08 d07 d06 d05 d04 d03 d02 d01 d00 0 0 0 0 0 0

有符号小数 (1.15) d09 d08 d07 d06 d05 d04 d03 d02 d01 d00 0 0 0 0 0 0

VIN/VREF10 位

输出码

16 位整数格式 /等价十进制值

16 位有符号整数格式 /等价十进制值

1023/1024 11 1111 1111 0000 0011 1111 1111 1023 0000 0001 1111 1111 511

1022/1024 11 1111 1110 0000 0011 1111 1110 1022 0000 0001 1111 1110 510

•••

513/1024 10 0000 0001 0000 0010 0000 0001 513 0000 0000 0000 0001 1

512/1024 10 0000 0000 0000 0010 0000 0000 512 0000 0000 0000 0000 0

511/1024 01 1111 1111 0000 0001 1111 1111 511 1111 1111 1111 1111 -1

•••

1/1024 00 0000 0001 0000 0000 0000 0001 1 1111 1110 0000 0001 -511

0/1024 00 0000 0000 0000 0000 0000 0000 0 1111 1110 0000 0000 -512

VIN/VREF10 位

输出码

16 位小数格式 /等价十进制值

16 位有符号小数格式 /等价十进制值

1023/1024 11 1111 1111 1111 1111 1100 0000 0.999 0111 1111 1100 0000 0.499

1022/1024 11 1111 1110 1111 1111 1000 0000 0.998 0111 1111 1000 0000 0.498

•••

513/1024 10 0000 0001 1000 0000 0100 0000 0.501 0000 0000 0100 0000 0.001

512/1024 10 0000 0000 1000 0000 0000 0000 0.500 0000 0000 0000 0000 0.000

511/1024 01 1111 1111 0111 1111 1100 0000 0.499 1111 1111 1100 0000 -0.001

•••1/1024 00 0000 0001 0000 0000 0100 0000 0.001 1000 0000 0100 0000 -0.499

0/1024 00 0000 0000 0000 0000 0000 0000 0.000 1000 0000 0000 0000 -0.500

© 2011-2012 Microchip Technology Inc. DS39739B_CN 第 51-33 页

Page 34: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

PIC24F 系列参考手册

51.9 扩展 DMA 操作

对于使能了 DMA 的模块,即 DMAEN(AD1CON1<11>)= 1时,A/D 转换值可写入数据存储器中用户定义的区域,从而扩大转换存储区,使之不仅包含 ADC1BUFn 缓冲区。 这使 ADC1BUFn缓冲区不仅可以存储转换值,还可保存阈值。 DMA操作还分配了专用存储区来存储较高通道上的转换结果,这些通道在 A/D 模块内没有自己的存储器映射的缓冲区。

在扩展 DMA 操作中, A/D 转换结果写入 AD1DMBUF 寄存器。 成功写入 AD1DMBUF 寄存器之后会产生中断。 该中断可用于触发 DMA 操作,将转换值写入期望的存储单元。 扩展 DMA 以两种模式进行操作: 扩展缓冲区模式和分散 / 集中模式。

有关配置 DMA 通道进行存储器操作的更多信息,请参见《PIC24F 系列参考手册》中的第 54 章 “ 直接存储器访问控制器(DMA) ” (DS39742)。

51.9.1 扩展缓冲区模式

DMABM(AD1CON1<12>) = 1时,使能扩展缓冲区模式。 在此缓冲区模式下,DMA 将按转换完成的顺序在存储区中安排缓冲区。这对于存储较高通道上的转换结果非常有用,这些通道在A/D 模块内没有自己的存储器映射的缓冲区。 该模式还可用于将任一 A/D 通道上的转换结果存储在数据 RAM 中任何实现的地址中。 在扩展缓冲区模式下,要扫描多个通道,必须将 DMA 配置为外设间接模式。 DMADST 寄存器指向缓冲区的开头部分。 A/D 模块提供块间地址,指向 DMA 数据块中的存储单元。 缓冲区的地址由两部份通过逻辑或运算连接起来。在一定数量的转换之后,必须设置 DMA 计数和 SMPIx 位(AD1CON2<6:2>)以产生中断。 转换数据写入 DMA 控制器指定的目标单元。

这允许用户实现用于存储较高编号通道的转换结果的专用存储区,这些通道没有自己的存储器映射的 A/D 缓冲区单元。 使用扩展缓冲区模式时,始终置 1 BUFREGEN 位以禁止 FIFO 操作。 此外,通过清零 BUFM 位禁止分割缓冲区模式。

51.9.2 分散 / 集中模式

DMABM = 0时,A/D 模块配置为与 DMA 控制器配合工作以实现分散 / 集中模式操作。 按扫描通道的顺序写缓冲区。 A/D 模块产生一个 11 位间接地址(Indirect Address, IA)。 该 IA 与 DMA控制器中的目标地址进行逻辑或运算来定义存储 A/D 转换数据的位置。

在分散 / 集中模式下,为每个模拟通道分配一个缓冲区,用于存储转换数据。 每个缓冲区都是连续的,而每个通道缓冲区的大小通过 DMABLx 位 (AD1CON4<2:0>)选择。 每个缓冲区大小的选择范围为从单个字到 128 个字。 每个通道均分配缓冲区,无论将来是否会对具体的通道执行转换。 该规则的例外情况是:当每个通道的缓冲区大小足够大以致并非所有通道都能被寻址时(DMABL<2:0>= 110或 111)。

如果使用外设间接寻址(Peripheral Indirect Addressing,PIA),通过将通道缓冲区中的基址与标识通道的 3 到 5 位(具体取决于缓冲区大小)组合来创建间接地址(IA)。 基址的宽度范围为0 到 7 位,具体取决于缓冲区大小。 地址右边补 0以保持地址在数据空间中对齐。 然后,合并的通道和基址位根据需要在左边补 0以构成 11 位 IA。

通道缓冲区中的写地址由A/D模块控制。 缓冲区单元计数器为简单的计数器。 该计数器在A/D模块初始化时初始化为 0。 计数器的 大值通过 DMABLx 位定义。 达到 大值后,计数器将计满返回到 0。它根据 SMPIx 位 (AD1CON2<6:2>)递增。 实质上,计数器在模块不处于 DMA 模式下产生 A/D 中断时递增(更多信息,请参见第 51.8.1 节 “ 每个中断对应的转换次数 ”)。

DS39739B_CN 第 51-34 页 © 2011-2012 Microchip Technology Inc.

Page 35: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

第 51 章 带阈值检测功能的 12 位 A/D 转换器51

带阈值检测功能的

12

位A

/D转换器

IA 配置为在写操作期间根据 SMPI<4:0> 位 (AD1CON2<6:2>)自动递增。 有三种 SMPIx 位与DMA 配合使用的有用情况。 当 A/D 设置为存储每个通道的一个转换时, SMPIx 位应设置为00000,这表示地址在发生每次采样时递增。 当 ALTS = 1时,表示选择了交替扫描模拟输入,此时应设置 SMPI<4:0> = 00001以允许每采样两次递增一次地址。 当使用扫描时,SMPIx 位应设置为扫描的输入数。 因此,举例来说,当 AD1CSSL = 0xFFFF 时,指示将扫描 AN0-AN15,此时应设置 SMPI<4:0> = 01111,在 16 个采样 / 转换序列后递增地址。

和任何使能 DMA 模块的 PIA 操作一样,必须适当地掩码 DMADST 寄存器中的目标基址以包含IA。表 51-6 给出了构成完整地址的方式。 请注意,选择的缓冲区大小不同,地址掩码也会有所不同。 由于掩码需要,某些地址范围可能不可用于某些缓冲区大小。 用户应验证 DMA 基址是否与所选的缓冲区大小兼容。

图 51-12 给出了地址的各部分如何定义数据存储器中的缓冲区单元。 在这种情况下,模块将 256字节的数据 RAM(1000h 至 1100h)分配给 32 个缓冲区,每个缓冲区 4 个字。 然而,这不是硬分配,这些单元还可用于其他目的。 例如,在当前情况下,如果模拟通道 2、7 和 29 被采样和转换,转换数据将仅写入分别起始于 1008h、1038h 和 10F0h 的通道缓冲区。 PIA 缓冲空间中的空存储单元可用于任何其他目的。

请注意,不会检查生成的缓冲区地址是否超出边界。 用户有必要跟踪缓冲区单元并防止数据改写。 另外,可用模拟输入数与 DMABLx 位指定的缓冲区大小的乘积不得超出总 DMA 缓冲区域。

表 51-6: PIA 模式下的间接地址生成

DMABL<2:0> 每个通道的缓冲区大小 (字)

生成的偏移地址(低 11 位)

可用输入通道数

允许的 DMADST 地址

000 1 000 00cc ccc0 32 xxxx xxxx xx00 0000

001 2 000 0ccc ccn0 32 xxxx xxxx x000 0000

010 4 000 cccc cnn0 32 xxxx xxxx 0000 0000

011 8 00c cccc nnn0 32 xxxx xxx0 0000 0000

100 16 0cc cccn nnn0 32 xxxx xx00 0000 0000

101 32 ccc ccnn nnn0 32 xxxx x000 0000 0000

110 64 ccc cnnn nnn0 16 xxxx x000 0000 0000

111 128 ccc nnnn nnn0 8 xxxx x000 0000 0000

图注: ccc = 通道数 (3 至 5 位); n = 缓冲区基址 (0 至 7 位);x = 用于基址的 DMADST 的用户定义范围; 0 = 用于 IA 的 DMADST 掩码位。

© 2011-2012 Microchip Technology Inc. DS39739B_CN 第 51-35 页

Page 36: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

PIC24F 系列参考手册

图 51-12: PIA 模式下缓冲区地址生成示例 (每个通道 4 字缓冲区)

51.9.3 带阈值检测功能的扩展 DMA 操作

将阈值检测操作与扩展DMA配合使用时,务必将写模式配置为转换并保存(ASINT<1:0> = 01),否则转换值不会保存在期望的存储单元。 另外,如果通道未能生成有效的比较,则不会将不希望的值写入存储器,这将被 DMA 解析为不完整的 DMA 会话。 因此,用户应轮询 AD1CHITL 和 / 或AD1CHITH 寄存器以确定给定的存储单元是否包含有效数据。关于 DMA 操作的更多信息,请参见第 54 章 “ 直接存储器访问控制器(DMA)”。 要了解有关阈值检测操作的更多信息,请参见第51.10 节 “ 阈值检测操作 ”。

数据 RAM

目标

A/D 模块

BBA 通道

DMA 通道

DMADST

nn(0-3)

1000h(DMA 基址)

范围

ccccc(0-31)000 cccc cnn0(IA)

1000h

DMABL<2:0> = 010(16 字缓冲区大小)

1008h1010h1018h

10F8h

1100h

通道 0 缓冲区(4 字)

通道 1 缓冲区(4 字)

通道 2 缓冲区(4 字)

通道 3 缓冲区(4 字)

通道 29 缓冲区(4 字)

通道 30 缓冲区(4 字)

通道 31 缓冲区(4 字)

10F0h

(缓冲区基址)

1000h

1002h1004h1006h

通道 0,字 0通道 0,字 1通道 0,字 2通道 0,字 3通道 1,字 0通道 1,字 1通道 1,字 2通道 1,字 3

1008h100Ah100Ch100Eh

0001 0000 0000 00000001 0000 0000 00100001 0000 0000 01000001 0000 0000 01100001 0000 0000 10000001 0000 0000 10100001 0000 0000 11000001 0000 0000 1110

DMA 基址

地址掩码

通道地址

缓冲区地址

1038h1040h

通道 7 缓冲区(4 字)

通道 8 缓冲区(4 字)

(PIA 模式)

DS39739B_CN 第 51-36 页 © 2011-2012 Microchip Technology Inc.

Page 37: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

第 51 章 带阈值检测功能的 12 位 A/D 转换器51

带阈值检测功能的

12

位A

/D转换器

51.10 阈值检测操作

阈值检测功能是对于先前 10 位 A/D 模块中提供的自动扫描功能的重要扩展。除了能够对预定义的模拟通道序列重复进行采样之外,通过阈值检测功能,用户还可以基于转换结果来定义匹配条件,并基于这些条件产生中断。在正常工作期间,它将有助于减少用于处理 A/D 中断的 CPU 时间量。对于低功耗应用,它可以让 CPU 更长时间地保持非活动状态,仅在满足特定模拟条件时唤醒。

当用户选择阈值检测功能时,该功能会改变 A/D 结果缓冲区的操作,使它成为转换结果和比较(阈值)值的读 / 写阵列。这也会使 AD1CHIT 寄存器发挥作用,该寄存器用于指示匹配条件。通过可独立选择的比较和缓冲区存储设置,可以实现一系列广泛的操作组合。

51.10.1 工作模式

阈值检测操作大部分由 AD1CON5 寄存器(寄存器 51-5)控制。ASEN 位(AD1CON5<15>)用于控制阈值检测的整体操作;将该位置 1 可以使能该功能。

与传统的自动扫描操作一样,要包含的通道使用 AD1CSSH/L 寄存器来选择。将其中任一寄存器中的特定位置 1 时,相应通道就会包含在自动顺序扫描中。用户可以选择一个或多个通道。选定通道之后,同时将 CSCNA 和 ASEN 位置 1 可以使能对指定通道的单次扫描。扫描本身通过由SSRC<3:0> 位设定的触发源触发。

通过 LPEN 位(AD1CON5<14>),可以让阈值检测与低功耗功能一起工作。按照设计,阈值检测可以在器件处于休眠或空闲模式时执行比较操作,并在它产生中断时唤醒 CPU。将 LPEN 置 1会将器件配置为在处理中断之后恢复低功耗工作。

比较模式位 CM<1:0> (AD1CON5<1:0>)用于选择要执行的比较类型。有 4 种类型可用:

• 当前转换的结果大于参考阈值;

• 当前转换的结果小于参考阈值;

• 当前转换的结果介于两个预定义阈值之间(“ 窗内 ”);

• 当前转换的结果超出预定义阈值(“ 窗外 ”)

写模式位 WM<1:0> (AD1CON5<3:2>)用于决定如何处理转换结果。有 3 种选项可用:

• 执行比较之后丢弃转换结果;

• 执行比较之后存储转换结果;

• 不进行比较即存储转换结果 (传统模式)。

51.10.1.1 缓冲区操作和比较

对于涉及到存储转换结果的缓冲区写模式(WM<1:0> = 0x), BUFM 和 BUFREGEN 位用于控制缓冲区的工作方式(用作通道索引缓冲区、单一 FIFO 缓冲区或拆分 FIFO 缓冲区)。但是,当选择 “ 比较并存储 ” 选项(WM<1:0> = 01)时,使用 FIFO 模式可能会覆盖其他通道的缓冲区,导致不可预测的比较结果。因此,当使用 “ 比较并存储 ” 选项时,请总是使用通道索引缓冲区模式 (BUFREGEN = 1)。

注: 传统自动扫描(即,顺序扫描 MUX A 上的模拟通道,不进行任何比较)由 CSCNA 位(AD1CON2<10>)控制,不依赖于 ASEN 位即可工作。

© 2011-2012 Microchip Technology Inc. DS39739B_CN 第 51-37 页

Page 38: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

PIC24F 系列参考手册

51.10.1.2 窗口比较下的缓冲区操作 (通道镜像)

使用窗口比较会改变结果缓冲区的可用选项。为了存储两个阈值,缓冲区会被自动拆分为两个部分,类似于拆分 FIFO 模式。上下两个部分中的缓冲区地址进行配对,即一个缓冲区中的 低地址与上半部分中的缓冲区地址匹配。(例如,在一个 16 字缓冲区中,ADC1BUF0 与 ADC1BUF9配对, ADC1BUF1 与 ADC1BUF10 配对,如此类推。)这种配对方式称为 “ 通道镜像 ”。

镜像显然仅适用于编号较低的 A/D 通道;对于大多数器件,这对应于外部模拟通道的下半部分。这并不意味着这些缓冲单元不能用于其他用途。但是,在使用通道镜像的特定缓冲单元存储任何其他数据有可能会导致错误的比较评估。

51.10.2 设置比较阈值

阈值检测的比较阈值使用这种方法进行设置:将所需值写入 A/D 结果缓冲区的相应单元。这只能在模块停用 (AD1CON1<15> = 0)时执行。

阈值的存储单元由比较类型决定。对于简单的大于和小于比较,值将写入对应于要监视输入通道的缓冲单元。例如,如果需要通过 AN0 监视某个电压是否超过特定电平,则上限阈值存储在ADC1BUF0 中。

窗口比较阈值需要用到两个存储单元,因而要写入两个地址。低值写入对应于所监视通道的地址。高值存储在缓冲区上半部分的相应镜像地址中。扩展前面的示例,如果 AN0 上的转换结果需要进行窗口比较,则下限阈值将存储在 ADC1BUF0 中,而上限阈值则存储在 ADC1BUF9 中。

51.10.3 比较命中寄存器

为了确定是否发生了特定的事件,A/D 模块使用两个寄存器来记录匹配事件。这两个寄存器称为比较命中寄存器,并表示为:AD1CHITL 和 AD1CHITH。寄存器会将它们的各个位顺序映射到( 多)32 个模拟通道中的每一个通道。如果某个特定通道在器件中未实现,则相应的比较命中位 (CHHn)也未实现。

每个位都用作其相应通道的事件信号量。当该通道上发生所设定的事件时,该位会被置 1 并保持置 1,直到应用程序将它清零为止。在应用程序对它们进行评估之后,用户负责清零这些位。

根据事件的不同,可能会有不止一个比较命中位置 1。应用程序必须根据所选定比较模式的现场信息来解释一个置 1 位的意义。第 51.10.5 节 “ 比较模式示例 ” 中介绍了一些特定的示例。

51.10.4 阈值检测中断

A/D 模块可以基于阈值检测操作产生中断并将 AD1IF 标志置 1。产生中断的条件可以是阈值检测序列完成和 / 或发生了有效的比较。当使能阈值检测 (ASEN = 1)时, A/D 模块的中断产生受 ASINTx 位 (AD1CON5<9:8>)控制,取代了 SMPIx 位 (AD1CON2<6:2>)实现的任何配置。欲知各种中断设置的更多信息,请参见第 51.8.1 节 “ 每个中断对应的转换次数 ”。

阈值检测中断通过 ASINT<1:0> 位 (AD1CON5<9:8>)进行配置。中断选项包括:在扫描序列之后产生中断、在发生有效匹配的扫描序列之后产生中断、在发生有效匹配之后产生中断(无需等待序列结束),或者不产生中断。

DS39739B_CN 第 51-38 页 © 2011-2012 Microchip Technology Inc.

Page 39: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

第 51 章 带阈值检测功能的 12 位 A/D 转换器51

带阈值检测功能的

12

位A

/D转换器

51.10.5 比较模式示例

以下示例说明了有效比较对于结果缓冲区和比较命中寄存器的影响。在每张图中,寄存器中的变化使用粗体表示。

为了简便起见,示例假设器件只有 16 个模拟输入。具有更多通道(因而具有更大的结果缓冲区和两个比较命中寄存器)的器件将以类似的方式工作。

51.10.5.1 简单比较 (大于和小于结果)

当比较模式位 CM<1:0> (AD1CON5<1:0>)设定为 0x 时,转换器会对采样值进行比较,确定它是大于(CM<1:0> = 01)还是小于(CM<1:0> = 00)缓冲单元中的阈值。如果满足条件,则会发生以下两个事件:

• 相应通道的比较命中位 (CHHn)置 1

• 如果写模式位 WM<1:0>(AD1CON5<3:2>)设定为 01,则转换后的值会被写入缓冲区,替换阈值。如果 WM<1:0> = 10,则转换后的值将被丢弃。

图 51-13 显示了结果缓冲区和比较命中寄存器的变化。请注意,对于两种类型的简单比较,它们是相同的。

图 51-13: 简单比较操作(大于和小于)

注: 当使用任意比较模式时,请总是使用通道索引缓冲区存储(BUFREGEN = 1)。否则,其他通道的阈值可能会被覆盖,导致不可预测的比较。

ADC1BUF15 —

ADC1BUF14 —

ADC1BUF13 —

ADC1BUF12 —

ADC1BUF11 —

ADC1BUF10 —

ADC1BUF9 —

ADC1BUF8 —

ADC1BUF7 —

ADC1BUF6 —

ADC1BUF5 —

ADC1BUF4 —

ADC1BUF3 —

ADC1BUF2 阈值

ADC1BUF1 —

ADC1BUF0 —

转换与比较前

AD1CHITL

15 14 13 12 11 10 9 8

0 0 0 0 0 0 0 0

7 6 5 4 3 2 1 0

0 0 0 0 0 1 0 0

转换与比较后

仅比较(10)

比较并存储(01)

ADC1BUF15 — —

ADC1BUF14 — —

ADC1BUF13 — —

ADC1BUF12 — —

ADC1BUF11 — —

ADC1BUF10 — —

ADC1BUF9 — —

ADC1BUF8 — —

ADC1BUF7 — —

ADC1BUF6 — —

ADC1BUF5 — —

ADC1BUF4 — —

ADC1BUF3 — —

ADC1BUF2 阈值 转换值

ADC1BUF1 — —

ADC1BUF0 — —

AD1CHITL

15 14 13 12 11 10 9 8

0 0 0 0 0 0 0 0

7 6 5 4 3 2 1 0

0 0 0 0 0 0 0 0

© 2011-2012 Microchip Technology Inc. DS39739B_CN 第 51-39 页

Page 40: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

PIC24F 系列参考手册

51.10.5.2 窗内比较

当比较模式位 CM<1:0> 设定为 10时,转换器会对采样值进行比较,确定它是否介于缓冲区和镜像通道单元中的阈值之间。由于镜像通道单元中的值总是两个阈值中的较大值,所以在以下情况下可以满足条件:

阈值 2 > 转换值 > 阈值 1

在这种情况下,将会发生以下两个事件:

• 相应通道的比较命中位 (CHHn)置 1 ;镜像通道的比较命中位保持清零

• 如果写模式位 WM<1:0>(AD1CON5<3:2>)设定为 01,则转换后的值会被写入缓冲区,替换下限阈值。如果 WM<1:0> = 10,则转换后的值将被丢弃。

图 51-14 显示了结果缓冲区和比较命中寄存器的变化。

图 51-14: 窗内比较操作

ADC1BUF15 —

ADC1BUF14 —

ADC1BUF13 —

ADC1BUF12 —

ADC1BUF11 —

ADC1BUF10 阈值 2

ADC1BUF9 —

ADC1BUF8 —

ADC1BUF7 —

ADC1BUF6 —

ADC1BUF5 —

ADC1BUF4 —

ADC1BUF3 —

ADC1BUF2 阈值 1

ADC1BUF1 —

ADC1BUF0 —

转换与比较前

AD1CHITL

15 14 13 12 11 10 9 8

0 0 0 0 0 0 0 0

7 6 5 4 3 2 1 0

0 0 0 0 0 1 0 0

转换与比较后

仅比较(10)

比较并存储(01)

ADC1BUF15 — —

ADC1BUF14 — —

ADC1BUF13 — —

ADC1BUF12 — —

ADC1BUF11 — —

ADC1BUF10 阈值 2 阈值 2

ADC1BUF9 — —

ADC1BUF8 — —

ADC1BUF7 — —

ADC1BUF6 — —

ADC1BUF5 — —

ADC1BUF4 — —

ADC1BUF3 — —

ADC1BUF2 阈值 1 转换值

ADC1BUF1 — —

ADC1BUF0 — —

AD1CHITL

15 14 13 12 11 10 9 8

0 0 0 0 0 0 0 0

7 6 5 4 3 2 1 0

0 0 0 0 0 0 0 0

DS39739B_CN 第 51-40 页 © 2011-2012 Microchip Technology Inc.

Page 41: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

第 51 章 带阈值检测功能的 12 位 A/D 转换器51

带阈值检测功能的

12

位A

/D转换器

51.10.5.3 窗外比较

当比较模式位 CM<1:0> 设定为 11时,转换器会对采样值进行比较,确定它是否超出缓冲区和镜像通道单元中的阈值。再次重申,由于镜像通道单元中的值总是两个阈值中的较大值,所以在以下任一情况下可以满足条件:

转换值 > 阈值 2,

阈值 1 > 转换值

在这些情况下,将会发生以下事件:

• 相应通道的比较命中位 (CHHn)置 1。

• 如果转换值大于阈值 2,则镜像通道的 CHHn 位也会置 1。如果小于阈值 1,则镜像通道位保持为 0。

• 如果写模式位 WM<1:0> (AD1CON5<3:2>)设定为 01:

- 如果转换值大于阈值 2,则转换值会被写入镜像通道地址,替换上限阈值。

- 如果转换值小于阈值 1,则转换值会被写入通道地址,替换下限阈值。

• 如果 WM<1:0> = 10,则转换后的值将被丢弃。

图 51-15 (大于上限阈值)和图 51-16 (小于下限阈值)显示了结果缓冲区和比较命中寄存器的变化。

请注意,当选择窗口比较模式并使能通道镜像时,没有任何方法可以阻止其他操作的转换结果被存储到镜像通道单元中。在前面的窗口操作示例中,如果在阈值检测操作中包含了 AN10,则AN10 上的转换结果可能会使用存储在该单元的 AN2 上限阈值进行测试。这可能导致阈值被覆盖和 / 或 CHH10 位被置 1。

因此,在使用窗口比较模式时,用户必须总是仔细地考虑上半部分模拟通道(包括外部和内部)的分配和使用。只要有可能,请将上半部分模拟通道排除在阈值检测操作之外,并在单独的程序中对这些通道进行转换和测试。

© 2011-2012 Microchip Technology Inc. DS39739B_CN 第 51-41 页

Page 42: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

PIC24F 系列参考手册

图 51-15: 窗外比较操作(大于阈值 2)

ADC1BUF15 —

ADC1BUF14 —

ADC1BUF13 —

ADC1BUF12 —

ADC1BUF11 —

ADC1BUF10 阈值 2

ADC1BUF9 —

ADC1BUF8 —

ADC1BUF7 —

ADC1BUF6 —

ADC1BUF5 —

ADC1BUF4 —

ADC1BUF3 —

ADC1BUF2 阈值 1

ADC1BUF1 —

ADC1BUF0 —

转换与比较前

AD1CHITL

15 14 13 12 11 10 9 8

0 0 0 0 0 1 0 0

7 6 5 4 3 2 1 0

0 0 0 0 0 1 0 0

转换与比较后

仅比较(10)

比较并存储(01)

ADC1BUF15 — —

ADC1BUF14 — —

ADC1BUF13 — —

ADC1BUF12 — —

ADC1BUF11 — —

ADC1BUF10 阈值 2 转换值

ADC1BUF9 — —

ADC1BUF8 — —

ADC1BUF7 — —

ADC1BUF6 — —

ADC1BUF5 — —

ADC1BUF4 — —

ADC1BUF3 — —

ADC1BUF2 阈值 1 阈值 1

ADC1BUF1 — —

ADC1BUF0 — —

AD1CHITL

15 14 13 12 11 10 9 8

0 0 0 0 0 0 0 0

7 6 5 4 3 2 1 0

0 0 0 0 0 0 0 0

DS39739B_CN 第 51-42 页 © 2011-2012 Microchip Technology Inc.

Page 43: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

第 51 章 带阈值检测功能的 12 位 A/D 转换器51

带阈值检测功能的

12

位A

/D转换器

图 51-16: 窗外比较操作(小于阈值 1)

ADC1BUF15 —

ADC1BUF14 —

ADC1BUF13 —

ADC1BUF12 —

ADC1BUF11 —

ADC1BUF10 阈值 2

ADC1BUF9 —

ADC1BUF8 —

ADC1BUF7 —

ADC1BUF6 —

ADC1BUF5 —

ADC1BUF4 —

ADC1BUF3 —

ADC1BUF2 阈值 1

ADC1BUF1 —

ADC1BUF0 —

转换与比较前

AD1CHITL

15 14 13 12 11 10 9 8

0 0 0 0 0 0 0 0

7 6 5 4 3 2 1 0

0 0 0 0 0 1 0 0

转换与比较后

仅比较(10)

比较并存储(01)

ADC1BUF15 — —

ADC1BUF14 — —

ADC1BUF13 — —

ADC1BUF12 — —

ADC1BUF11 — —

ADC1BUF10 阈值 2 阈值 2

ADC1BUF9 — —

ADC1BUF8 — —

ADC1BUF7 — —

ADC1BUF6 — —

ADC1BUF5 — —

ADC1BUF4 — —

ADC1BUF3 — —

ADC1BUF2 阈值 1 转换值

ADC1BUF1 — —

ADC1BUF0 — —

AD1CHITL

15 14 13 12 11 10 9 8

0 0 0 0 0 0 0 0

7 6 5 4 3 2 1 0

0 0 0 0 0 0 0 0

© 2011-2012 Microchip Technology Inc. DS39739B_CN 第 51-43 页

Page 44: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

PIC24F 系列参考手册

51.11 转换序列示例

下面的配置示例说明了在不同采样和缓冲配置下的 A/D 操作。在每个示例中,将 ASAM 位置 1 会启动自动采样。转换触发结束采样并启动转换。

51.11.1 多次采样和转换单个通道

图 51-17 和例 51-6 给出了 A/D 的基本配置。在这种情况下,将采样并转换一个 A/D 输入 AN0。结果存储在 ADC1BUFn 缓冲区中。该过程会重复 16 次,直到缓冲区满为止,然后模块产生中断。然后重复整个过程。

ALTS 位清零时,只有 MUX A 输入有效。CH0SAx 位和 CH0NAx 位指定(AN0 – VR-)为采样 /保持通道的输入。所有其他输入选择位均未使用。

图 51-17: 每次中断转换 1 个通道 16 次 转换

A/D 时钟

SAMP

ADC1BUF0

TSAMP

TCONV

BSF AD1CON1, ASAM

ADC1BUF1

DONE

ADC1BUFE

ADC1BUFF

模拟输入 AN0

TSAMP

TCONV

AN0

TSAMP

TCONV

AN0

TSAMP

TCONV

AN0

AD1IF

ASAM

触发信号

指令执行

DS39739B_CN 第 51-44 页 © 2011-2012 Microchip Technology Inc.

Page 45: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

第 51 章 带阈值检测功能的 12 位 A/D 转换器51

带阈值检测功能的

12

位A

/D转换器

例 51-6: 多次采样和转换单个通道 int ADCValue, count;int *ADC16Ptr;ANSB = 0x0001; // Only AN0 as analog inputAD1CON1 = 0x00E0; // Internal counter triggers conversionAD1CHS = 0x0000; // Connect AN0 as positive inputAD1CSSL = 0;AD1CON3 = 0x0F00; // Sample time = 15Tad, Tad = TcyAD1CON2 = 0x003C; // Set AD1IF after every 16 samplesAD1CON1bits.ADON = 1; // turn ADC ONwhile(1) // repeat continuously{

ADCValue = 0; // clear valueADC16Ptr = &ADC1BUF0; // initialize ADC1BUF pointerIFS0bits.AD1IF = 0; // clear ADC interrupt flagAD1CON1bits.ASAM = 1; // auto start sampling for 31Tad

// then go to conversionwhile (!IFS0bits.AD1IF){}; // conversion done?AD1CON1bits.ASAM = 0; // yes then stop sample/convertfor (count = 0; count < 16; count++) // average the 16 ADC value{

ADCValue = ADCValue + *ADC16Ptr++;}ADCValue = ADCValue >> 4;

} // repeat

© 2011-2012 Microchip Technology Inc. DS39739B_CN 第 51-45 页

Page 46: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

PIC24F 系列参考手册

例 51-7: 每次中断转换单个通道 16 次

A/D 配置:

• 选择 AN0 作为 S/H+ 输入 (CH0SA<4:0> = 00000)

• 选择 VR- 作为 S/H- 输入 (CH0NA<2:0> = 000)

• 配置为不进行输入扫描 (CSCNA = 0)

• 仅使用 MUX A 进行采样 (ALTS = 0)

• 在每隔 16 次采样后将 AD1IF 置 1 (SMPI<4:0> = 01111)

• 将缓冲区配置为单个 16 字结果缓冲区(BUFM = 0)

工作序列:

1. 采样 MUX A 输入 AN0 ;转换并写入缓冲区 0h 单元

2. 采样 MUX A 输入 AN0 ;转换并写入缓冲区 1h 单元

3. 采样 MUX A 输入 AN0 ;转换并写入缓冲区 2h 单元

4. 采样 MUX A 输入 AN0 ;转换并写入缓冲区 3h 单元

5. 采样 MUX A 输入 AN0 ;转换并写入缓冲区 4h 单元

6. 采样 MUX A 输入 AN0 ;转换并写入缓冲区 5h 单元

7. 采样 MUX A 输入 AN0 ;转换并写入缓冲区 6h 单元

8. 采样 MUX A 输入 AN0 ;转换并写入缓冲区 7h 单元

9. 采样 MUX A 输入 AN0 ;转换并写入缓冲区 8h 单元

10. 采样 MUX A 输入 AN0 ;转换并写入缓冲区 9h 单元

11. 采样 MUX A 输入 AN0 ;转换并写入缓冲区 Ah 单元

12. 采样 MUX A 输入 AN0 ;转换并写入缓冲区 Bh 单元

13. 采样 MUX A 输入 AN0 ;转换并写入缓冲区 Ch 单元

14. 采样 MUX A 输入 AN0 ;转换并写入缓冲区 Dh 单元

15. 采样 MUX A 输入 AN0 ;转换并写入缓冲区 Eh 单元

16. 采样 MUX A 输入 AN0 ;转换并写入缓冲区 Fh 单元

17. 将 AD1IF 标志置 1 (并在允许中断时产生中断)

18. 从中断返回后重复 (1-16)

结果存储在缓冲区中(2 个周期之后):

缓冲区地址发生第 1 次 AD1IF 事件 发生第 2 次 AD1IF 事件

时的缓冲区内容ADC1BUF0 AN0,采样 1 AN0,采样 17ADC1BUF1 AN0,采样 2 AN0,采样 18ADC1BUF2 AN0,采样 3 AN0,采样 19ADC1BUF3 AN0,采样 4 AN0,采样 20ADC1BUF4 AN0,采样 5 AN0,采样 21ADC1BUF5 AN0,采样 6 AN0,采样 22ADC1BUF6 AN0,采样 7 AN0,采样 23ADC1BUF7 AN0,采样 8 AN0,采样 24ADC1BUF8 AN0,采样 9 AN0,采样 25ADC1BUF9 AN0,采样 10 AN0,采样 26ADC1BUF10 AN0,采样 11 AN0,采样 27ADC1BUF11 AN0,采样 12 AN0,采样 28ADC1BUF12 AN0,采样 13 AN0,采样 29ADC1BUF13 AN0,采样 14 AN0,采样 30ADC1BUF14 AN0,采样 15 AN0,采样 31ADC1BUF15 AN0,采样 16 AN0,采样 32

DS39739B_CN 第 51-46 页 © 2011-2012 Microchip Technology Inc.

Page 47: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

第 51 章 带阈值检测功能的 12 位 A/D 转换器51

带阈值检测功能的

12

位A

/D转换器

51.11.2 扫描所有模拟输入时的 A/D 转换

图 51-18 和例 51-9 给出了一个典型的设置,其中对所有可用的模拟输入通道都进行采样和转换。在此例中,假设器件具有 16 个模拟输入。将 CSCNA 位置 1 指定对作为 S/H 同相输入的 A/D 输入进行扫描。其他情况与第 51.11.1 节 “ 多次采样和转换单个通道 ” 中所述类似。

首先,AN0 输入被采样并转换。结果存储在 ADC1BUFn 缓冲区中。然后,AN1 输入被采样并转换。该扫描输入的过程重复 16 次,直到缓冲区满为止,然后模块产生中断。然后重复整个过程。

图 51-18: 每次中断扫描所有 16 个输入

例 51-8: 采样并转换所有通道

转换

A/D 时钟

SAMP

ADC1BUF0

TSAMP

TCONV

BSET AD1CON1, #ASAM

ADC1BUF1

DONE

ADC1BUFE

ADC1BUFF

模拟输入 AN0

TSAMP

TCONV

AN1

TSAMP

TCONV

AN14

TSAMP

TCONV

AN15

AD1IF

ASAM

触发信号

指令执行

int ADCValue, count;int *ADC16Ptr;ANSA = 0xFFFF; // Configure all pins as analog inputsANSB = 0xFFFF; // (small-pincount device w/16 channels shown here)ANSC = 0xFFFF; //AD1CSSL = 0xFFFF; // Include all channels in scanAD1CON1 = 0x00E0; // Internal counter triggers conversionAD1CON3 = 0x0F00; // Sample time = 15Tad, Tad = TcyAD1CON2 = 0x043C; // Set AD1IF after every 16 samples, enable scanningAD1CON1bits.ADON = 1; // turn ADC ONwhile (1) // repeat continuously{

ADCValue = 0; // clear valueADC16Ptr = &ADC1BUF0; // initialize ADC1BUF pointerIFS0bits.AD1IF = 0; // clear ADC interrupt flagAD1CON1bits.ASAM = 1; // auto start sampling for 31Tad

// then go to conversionwhile (!IFS0bits.AD1IF){}; // conversion done?AD1CON1bits.ASAM = 0; // yes then stop sample/convertfor (count = 0; count < 16; count++) // average the 16 ADC value{

ADCValue = ADCValue + *ADC16Ptr++;}ADCValue = ADCValue >> 4;

} // repeat

© 2011-2012 Microchip Technology Inc. DS39739B_CN 第 51-47 页

Page 48: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

PIC24F 系列参考手册

例 51-9: 每次中断扫描并转换所有 16 个通道

A/D 配置:

• 选择任意通道作为 S/H+ 输入 (CH0SA<4:0> = xxxxx)

• 选择 VR- 作为 S/H- 输入 (CH0NA<2:0> = 000)

• 仅使用 MUX A 进行采样 (ALTS = 0)

• 配置 MUX A 进行输入扫描 (CSCNA = 1)

• 在扫描中包含所有模拟通道 (AD1CSSL = 1111 1111 1111 1111)

• 在每隔 16 次采样后将 AD1IF 置 1 (SMPI<4:0> = 01111)

• 将缓冲区配置为单个 16 字结果缓冲区(BUFM = 0)

工作序列:

1. 采样 MUX A 输入 AN0 ;转换并写入缓冲区 0h 单元

2. 采样 MUX A 输入 AN1 ;转换并写入缓冲区 1h 单元

3. 采样 MUX A 输入 AN2 ;转换并写入缓冲区 2h 单元

4. 采样 MUX A 输入 AN3 ;转换并写入缓冲区 3h 单元

5. 采样 MUX A 输入 AN4 ;转换并写入缓冲区 4h 单元

6. 采样 MUX A 输入 AN5 ;转换并写入缓冲区 5h 单元

7. 采样 MUX A 输入 AN6 ;转换并写入缓冲区 6h 单元

8. 采样 MUX A 输入 AN7 ;转换并写入缓冲区 7h 单元

9. 采样 MUX A 输入 AN8 ;转换并写入缓冲区 8h 单元

10. 采样 MUX A 输入 AN9 ;转换并写入缓冲区 9h 单元

11. 采样 MUX A 输入 AN10 ;转换并写入缓冲区 Ah 单元

12. 采样 MUX A 输入 AN11 ;转换并写入缓冲区 Bh 单元

13. 采样 MUX A 输入 AN12 ;转换并写入缓冲区 Ch 单元

14. 采样 MUX A 输入 AN13 ;转换并写入缓冲区 Dh 单元

15. 采样 MUX A 输入 AN14 ;转换并写入缓冲区 Eh 单元

16. 采样 MUX A 输入 AN15 ;转换并写入缓冲区 Fh 单元

17. 将 AD1IF 标志置 1 (并在允许中断时产生中断)

18. 从中断返回后重复 (1-16)

结果存储在缓冲区中(2 个周期之后):

缓冲区地址发生第 1 次 AD1IF 事件 发生第 2 次 AD1IF 事件

时的缓冲区内容ADC1BUF0 采样 1 (AN0,采样 1) 采样 17 (AN0,采样 2)ADC1BUF1 采样 2 (AN1,采样 1) 采样 18 (AN1,采样 2)ADC1BUF2 采样 3 (AN2,采样 1) 采样 19 (AN2,采样 2)ADC1BUF3 采样 4 (AN3,采样 1) 采样 20 (AN3,采样 2)ADC1BUF4 采样 5 (AN4,采样 1) 采样 21 (AN4,采样 2)ADC1BUF5 采样 6 (AN5,采样 1) 采样 22 (AN5,采样 2)ADC1BUF6 采样 7 (AN6,采样 1) 采样 23 (AN6,采样 2)ADC1BUF7 采样 8 (AN7,采样 1) 采样 24 (AN7,采样 2)ADC1BUF8 采样 9 (AN8,采样 1) 采样 25 (AN8,采样 2)ADC1BUF9 采样 10 (AN9,采样 1) 采样 26 (AN9,采样 2)ADC1BUF10 采样 11 (AN10,采样 1) 采样 27 (AN10,采样 2)ADC1BUF11 采样 12 (AN11,采样 1) 采样 28 (AN11,采样 2)ADC1BUF12 采样 13 (AN12,采样 1) 采样 29 (AN12,采样 2)ADC1BUF13 采样 14 (AN13,采样 1) 采样 30 (AN13,采样 2)ADC1BUF14 采样 15 (AN14,采样 1) 采样 31 (AN14,采样 2)ADC1BUF15 采样 16 (AN15,采样 1) 采样 32 (AN15,采样 2)

DS39739B_CN 第 51-48 页 © 2011-2012 Microchip Technology Inc.

Page 49: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

第 51 章 带阈值检测功能的 12 位 A/D 转换器51

带阈值检测功能的

12

位A

/D转换器

51.11.3 使用双缓冲区

图 51-19 和例 51-10 说明了使用双缓冲区和交替填充缓冲区。将 BUFM 位置 1 使能双缓冲区。在该示例中,在每次采样后都会产生中断。BUFM 设置不会影响其他工作参数。开始时,转换序列从缓冲区的 ADC1BUF0 单元开始填充。第一次中断发生之后,缓冲区从 ADC1BUF8 单元开始填充。 BUFS 状态位在每次中断后取反。

图 51-19: 每次中断转换单个通道一次,使用两个 8 字缓冲区

A/D 时钟

SAMP

ADC1BUF0

BSET AD1CON1, #ASAM

模拟输入 AN3

TSAMP

AD1IF

ADC1BUF8

AN3

TSAMP

AN3

TSAMP

BUFS

转换触发信号

TCONVTCONVTCONV TCONVTCONVTCONVTCONV TCONVTCONVTCONV

BCLR IFS0, #AD1IF BCLR IFS0, #AD1IF

TCONVTCONV

指令执行

© 2011-2012 Microchip Technology Inc. DS39739B_CN 第 51-49 页

Page 50: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

PIC24F 系列参考手册

例 51-10: 每次中断转换单个通道一次,双缓冲模式

A/D 配置:

• 选择 AN3 作为 S/H+ 输入 (CH0SA<4:0> = 00011)

• 选择 VR- 作为 S/H- 输入 (CH0NA<2:0> = 000)

• 配置为不进行输入扫描 (CSCNA = 0)

• 仅使用 MUX A 进行采样 (ALTS = 0)

• 在每次采样后将 AD1IF 置 1 (SMPI<4:0> = 00000)

• 将缓冲区配置为两个 8 字分段 (BUFM = 1)

工作序列:

1. 采样 MUX A 输入 AN3 ;转换并写入缓冲区 0h 单元

2. 将 AD1IF 标志置 1 (并在允许中断时产生中断);写访问自动切换到交替缓冲区

3. 采样 MUX A 输入 AN3 ;转换并写入缓冲区 8h 单元

4. 将 AD1IF 标志置 1 (并在允许中断时产生中断);写访问自动切换到交替缓冲区

5. 重复 (1-4)

结果存储在缓冲区中(2 个周期之后):

缓冲区地址发生第 1 次 AD1IF 事件

时的缓冲区内容

发生第 2 次 AD1IF 事件

时的缓冲区内容ADC1BUF0 采样 1 (AN3,采样 1) (未定义)

ADC1BUF1 (未定义) (未定义)ADC1BUF2 (未定义) (未定义)ADC1BUF3 (未定义) (未定义)ADC1BUF4 (未定义) (未定义)ADC1BUF5 (未定义) (未定义)ADC1BUF6 (未定义) (未定义)ADC1BUF7 (未定义) (未定义)ADC1BUF8 (未定义) 采样 2 (AN3,采样 2)ADC1BUF9 (未定义) (未定义)ADC1BUFA (未定义) (未定义)ADC1BUFB (未定义) (未定义)ADC1BUFC (未定义) (未定义)ADC1BUFD (未定义) (未定义)ADC1BUFE (未定义) (未定义)ADC1BUFF (未定义) (未定义)

DS39739B_CN 第 51-50 页 © 2011-2012 Microchip Technology Inc.

Page 51: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

第 51 章 带阈值检测功能的 12 位 A/D 转换器51

带阈值检测功能的

12

位A

/D转换器

51.11.4 使用交替 MUX A 和 MUX B 输入选择

图 51-20 和例 51-11 说明了对分配给 MUX A 和 MUX B 的输入进行交替采样。将 ALTS 位置 1 使能交替输入选择。第一次采样使用由 CH0SAx 和 CH0NAx 位指定的 MUX A 输入。下一次采样使用由 CH0SBx 和 CH0NBx 位指定的 MUX B 输入。

该示例同样使用两个 8 字缓冲区进行说明。中断在每隔 8 次采样之后产生,使得在每次中断时在缓冲区中填充 8 个字。

图 51-20: 使用交替输入选择转换两个输入

A/D 时钟

SAMP

ADC1BUF0

ADC1BUF1

DONE

ADC1BUF2

ADC1BUF3

模拟输入 AN1

TSAMP

AD1IF

TCONV

ADC1BUF4

ADC1BUF5

ADC1BUF6

ADC1BUF7

AN15

TSAMP

TCONV

ASAM

BUFS

AN1

TSAMP

TCONV

AN15

TSAMP

TCONV

ADC1BUF8

ADC1BUF9

ADC1BUFA

ADC1BUFB

TCONV

TSAMP

AN15

转换触发信号

用软件清零

用软件清零

TCONV TCONV TCONV TCONV TCONV

© 2011-2012 Microchip Technology Inc. DS39739B_CN 第 51-51 页

Page 52: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

PIC24F 系列参考手册

例 51-11: 通过交替 MUX A 和 MUX B 转换两个输入

A/D 配置:

• 选择 AN1 作为 MUX A S/H+ 输入(CH0SA<4:0> = 00001)

• 选择 VR- 作为 MUX A S/H- 输入 (CH0NA<2:0> = 000)

• 配置为不进行输入扫描 (CSCNA = 0)

• 选择 AN15 作为 MUX B S/H+ 输入(CH0SB<4:0> = 11111)

• 选择 VR- 作为 MUX B S/H- 输入 (CH0NB<2:0> = 000)

• 交替 MUX A 和 MUX B 进行采样(ALTS = 1)

• 在每隔 8 次采样后将 AD1IF 置 1 (SMPI<4:0> = 00111)

• 将缓冲区配置为两个 8 字分段 (BUFM = 1)

工作序列:

1. 采样 MUX A 输入 AN1 ;转换并写入缓冲区 0h 单元

2. 采样 MUX B 输入 AN15 ;转换并写入缓冲区 1h 单元

3. 采样 MUX A 输入 AN1 ;转换并写入缓冲区 2h 单元

4. 采样 MUX B 输入 AN15 ;转换并写入缓冲区 3h 单元

5. 采样 MUX A 输入 AN1 ;转换并写入缓冲区 4h 单元

6. 采样 MUX B 输入 AN15 ;转换并写入缓冲区 5h 单元

7. 采样 MUX A 输入 AN1 ;转换并写入缓冲区 6h 单元

8. 采样 MUX B 输入 AN15 ;转换并写入缓冲区 7h 单元

9. 将 AD1IF 标志置 1 (并在允许中断时产生中断);写访问自动切换到交替缓冲区

10. 重复 (1-9);继续从缓冲区 8h 单元 (交替缓冲区的第一个地址)处开始写缓冲区

结果存储在缓冲区中(2 个周期之后):

缓冲区地址发生第 1 次 AD1IF 事件

时的缓冲区内容

发生第 2 次 AD1IF 事件

时的缓冲区内容ADC1BUF0 采样 1 (AN1,采样 1) (未定义)

ADC1BUF1 采样 2 (AN15,采样 1) (未定义)

ADC1BUF2 采样 3 (AN1,采样 2) (未定义)

ADC1BUF3 采样 4 (AN15,采样 2) (未定义)

ADC1BUF4 采样 5 (AN1,采样 3) (未定义)

ADC1BUF5 采样 6 (AN15,采样 3) (未定义)

ADC1BUF6 采样 7 (AN1,采样 4) (未定义)

ADC1BUF7 采样 8 (AN15,采样 4) (未定义)

ADC1BUF8 (未定义) 采样 9 (AN1,采样 5)ADC1BUF9 (未定义) 采样 10 (AN15,采样 5)ADC1BUF10 (未定义) 采样 11 (AN1,采样 6)ADC1BUF11 (未定义) 采样 12 (AN15,采样 6)ADC1BUF12 (未定义) 采样 13 (AN1,采样 7)ADC1BUF13 (未定义) 采样 14 (AN15,采样 7)ADC1BUF14 (未定义) 采样 15 (AN1,采样 8)ADC1BUF15 (未定义) 采样 16 (AN15,采样 8)

DS39739B_CN 第 51-52 页 © 2011-2012 Microchip Technology Inc.

Page 53: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

第 51 章 带阈值检测功能的 12 位 A/D 转换器51

带阈值检测功能的

12

位A

/D转换器

51.12 A/D 采样要求

图 51-21 给出了 12 位 A/D 转换器的模拟输入模型。 A/D 转换器的总采样时间是保持电容充电时间的函数。

为了使 A/D 转换器达到规定的精度,必须让充电保持电容(CHOLD)充分充电至模拟输入引脚上的电压。信号源阻抗(RS)、片内走线等效电阻(RIC)和内部采样开关阻抗(RSS)共同直接影响着电容 CHOLD 充电所需的时间。因此,模拟信号源的合并阻抗必须足够小,以便在选择的采样时间内对保持电容充分充电。为了将引脚泄漏电流对 A/D 转换器精度的影响降到 低,建议使用的 大信号源阻抗 RS 为 2.5 kΩ。选择(更改)了模拟输入通道后,该采样功能必须在启动转换前完成。在每次采样操作之前,内部保持电容将处于放电状态。

两次转换之间应留出至少 1 个 TAD 时间段作为采样时间。更多详细信息,请参见第 51.18 节 “ 电气规范 ”。

图 51-21: 12 位 A/D 转换器模拟输入模型

CPINVA

Rs ANx

ILEAKAGE

RIC ≤ 250Ω采样开关

RSS

CHOLD

VSS

= 4.4 pF±500 nA

图注 : CPIN

VT

ILEAKAGE

RIC

RSS

CHOLD

= 输入电容= 阈值电压= 由各连接点在引脚上产生的泄漏电流= 片内走线等效电阻= 采样开关电阻= 采样 / 保持电容(来自 DAC)

注:CPIN 值取决于器件的封装,未经测试。如果 Rs ≤ 5 kΩ,可忽略 CPIN 的影响。

RSS ≤ 3 kΩ

© 2011-2012 Microchip Technology Inc. DS39739B_CN 第 51-53 页

Page 54: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

PIC24F 系列参考手册

51.13 传递函数

图 51-22 和图 51-23 分别给出了 12 位和 10 位分辨率的 A/D 转换器的传递函数。在两种情况下,输入电压差值 (VINH – VINL)与参考电压差值 ((VR+) – (VR-))进行比较。

对于 12 位传递函数:

• 当输入电压为 ((VR+) – (VR-))/4096 或 1.0 LSb 时,发生第一个代码转换。

• 0000 0000 0001代码中点位于 VR- + (1.5 * ((VR+) – (VR-))/4096)。

• 0010 0000 0000代码中点位于 VREFL + (2048.5 * ((VR+) – (VR-))/4096)。

• 小于 VR- + (((VR-) – (VR-))/4096) 的输入电压转换为 0000 0000 0000。

• 大于 (VR-) + (4096 ((VR+) – (VR-))/4096) 的输入电压转换为 1111 1111 1111。

图 51-22: 12 位 A/D 传递函数

0010 0000 0001 (2049)

0010 0000 0010 (2050)

0010 0000 0011 (2051)

0001 1111 1101 (2045)

0001 1111 1110 (2046)

0001 1111 1111 (2047)

1111 1111 1110 (4094)

1111 1111 1111 (4095)

0000 0000 0000 (0)

0000 0000 0001 (1)

输出码

0010 0000 0000 (2048)

(VIN

H –

VIN

L)

VR

-

VR

+ –

VR

-

409

6

20

48 *

(V

R+

– V

R-)

409

6

VR

+

VR

- +

VR

-+

409

5 *

(V

R+

– V

R-)

409

6V

R- +

0

(二进制 ( 十进制 ))

电平

DS39739B_CN 第 51-54 页 © 2011-2012 Microchip Technology Inc.

Page 55: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

第 51 章 带阈值检测功能的 12 位 A/D 转换器51

带阈值检测功能的

12

位A

/D转换器

对于 10 位传递函数(当 10 位分辨率可用时):

• 当输入电压为 ((VR+) – (VR-))/1024 或 1.0 LSb 时,发生第一个代码转换。

• 00 0000 0001代码中点位于 VR- + (1.5 *(((VR+) – (VR-))/1024)。

• 10 0000 0000代码中点位于 VREFL + (512.5 *(((VR+) – (VR-))/1024)。

• 小于 VR- + (((VR-) – (VR-))/1024) 的输入电压转换为 00 0000 0000。

• 大于 (VR-) + ((1023((VR+) – (VR-))/1024) 的输入电压转换为 11 1111 1111。

图 51-23: 10 位 A/D 传递函数

10 0000 0001 (513)

10 0000 0010 (514)

10 0000 0011 (515)

01 1111 1101 (509)

01 1111 1110 (510)

01 1111 1111 (511)

11 1111 1110 (1022)

11 1111 1111 (1023)

00 0000 0000 (0)

00 0000 0001 (1)

输出码

10 0000 0000 (512)

(VIN

H –

VIN

L)

VR

-

VR

+ –

VR

-

10

24

51

2 *

(V

R+

– V

R-)

10

24

VR

+

VR

- +

VR

-+

10

23 *

(V

R+

– V

R-)

10

24V

R- +

0

(二进制 ( 十进制 ))

电平

© 2011-2012 Microchip Technology Inc. DS39739B_CN 第 51-55 页

Page 56: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

PIC24F 系列参考手册

51.14 A/D 精度 / 误差

请参见第 51.20 节 “ 相关应用笔记 ” 获取讨论 A/D 精度的文档列表。

51.15 休眠和空闲模式期间的操作

休眠和空闲模式有助于将转换噪声降至 小,因为 CPU、总线和其他外设的数字活动被减到少。

51.15.1 不使用 A/D RC 时钟的 CPU 休眠模式

当器件进入休眠模式时,模块的所有时钟源被关闭并保持逻辑 0状态。

如果在一次转换过程中进入休眠状态,转换会中止,除非 A/D 转换器将其内部 RC 时钟发生器作为时钟源。在从休眠模式退出时,转换器不会继续进行部分完成的转换。

器件进入或退出休眠模式不会影响寄存器的内容。

51.15.2 使用 A/D RC 时钟的 CPU 休眠模式

如果将内部 A/D RC 振荡器设置为 A/D 时钟源 (ADRC = 1), A/D 模块就可以在休眠模式下工作。这样做可以消除转换中的数字开关噪声。转换完成时,DONE 位将置 1,转换结果被装入 A/D结果缓冲区 n ADC1BUFn。

如果允许 A/D 中断(AD1IE = 1), A/D 中断发生时器件将从休眠模式唤醒。如果 A/D 中断的优先级大于当前 CPU 的优先级,程序执行将在 A/D 中断服务程序 (ISR)执行后恢复。否则,程序将从使器件进入休眠模式的 PWRSAV指令后的指令继续执行。

如果禁止 A/D 中断,即使 ADON 位保持置 1,还是会关闭 A/D 模块。

为了将数字噪声对 A/D 模块操作的影响降至 低,用户应选择转换触发源以确保 A/D 转换可在休眠模式下进行。自动转换触发源选项可用于休眠模式下的采样和转换 (SSRC<3:0> = 0111)。要使用自动转换选项,应在 PWRSAV指令前的指令中将 ADON 位置 1。

51.15.3 CPU 空闲模式期间的 A/D 操作

ADSIDL 位(AD1CON1<13>)决定模块在空闲模式下是停止工作还是继续工作。如果 ADSIDL = 0,当器件进入空闲模式时,模块将继续正常工作。如果允许 A/D 中断(AD1IE = 1),A/D 中断发生时器件将从空闲模式唤醒。如果 A/D 中断的优先级大于当前 CPU 的优先级,程序执行将在A/D 中断服务程序(ISR)执行后恢复。否则,程序将从使器件进入空闲模式的 PWRSAV指令后的指令继续执行。

如果 ADSIDL = 1,在空闲模式下模块将停止工作。如果器件在一次转换过程中进入空闲模式,转换将中止。在从空闲模式退出时,转换器不会继续进行部分完成的转换。

注: 为了使A/D模块可以在休眠模式下工作,必须将RC设置为A/D时钟源(ADRC = 1)。

DS39739B_CN 第 51-56 页 © 2011-2012 Microchip Technology Inc.

Page 57: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

第 51 章 带阈值检测功能的 12 位 A/D 转换器51

带阈值检测功能的

12

位A

/D转换器

51.15.4 外设模块禁止 (PMD)寄存器

外设模块禁止(Peripheral Module Disable,PMD)寄存器提供了一种方法,可通过停止向其提供的所有时钟源来禁止 A/D 模块。通过相关的 PMDx 控制位禁止某个外设时,外设将处于 低功耗状态。与外设相关的控制和状态寄存器也会被禁止,因此写入那些寄存器不会有影响,且读取值无效。只有 PMDx 寄存器中的 ADC1MD 位清零时,才会使能 A/D 模块。

51.16 复位的影响

器件复位将强制所有寄存器进入复位状态。这将强制 A/D 模块关闭并中止任何正在进行的转换。所有与模拟输入复用的引脚将被配置为模拟输入。相应的 TRIS 位将被置 1。

上电复位时,不会初始化 ADC1BUFn 寄存器中的值;它们将包含不确定的数据。

© 2011-2012 Microchip Technology Inc. DS39739B_CN 第 51-57 页

Page 58: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

PIC

24F系

列参

考手

DS

39739B_C

N第

51-58页

© 2011-2012 M

icrochip Technolo

gy Inc.

Bit 3 Bit 2 Bit 1 Bit 0所有

复位时

的状态

xxxx

xxxx

xxxx

xxxx

xxxx

xxxx

xxxx

xxxx

xxxx

xxxx

•••

xxxx

— ASAM SAMP DONE 0000

SMPI1 SMPI0 BUFM ALTS 0000

ADCS3 ADCS2 ADCS1 ADCS0 0000

— DMABL2(2,5) DMABL1(2,5) DMABL0(2,5) 0000

CH0SA3 CH0SA2 CH0SA1 CH0SA0 0000

CSS19 CSS18 CSS17 CSS16 xxxx

CSS3 CSS2 CSS1 CSS0 0000

WM1 WM0 CM1 CM0 0000

CHH19 CHH18 CHH17 CHH16 0000

CHH3 CHH2 CHH1 CHH0 0000

0 CTMEN19 CTMEN18 CTMEN17 CTMEN16 0000

CTMEN3 CTMEN2 CTMEN1 CTMEN0 0000

51.17 寄存器映射

表 51-7 中提供了与 PIC24F 带阈值检测功能的 10 位 A/D 转换器相关的寄存器汇总。

表 51-7: A/D 寄存器映射

寄存器名称 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4

ADC1BUF0 A/D 数据缓冲区 0/AN0 的阈值检测值

ADC1BUF1 A/D 数据缓冲区 1/AN1 的阈值检测值

ADC1BUF2 A/D 数据缓冲区 2/AN2 的阈值检测值

ADC1BUF3 A/D 数据缓冲区 3/AN3 的阈值检测值

ADC1BUF4 A/D 数据缓冲区 4/AN4 的阈值检测值

ADC1BUF5 A/D 数据缓冲区 5/AN5 的阈值检测值

ADC1BUF6 A/D 数据缓冲区 6/AN6 的阈值检测值

ADC1BUF7 A/D 数据缓冲区 7/AN7 的阈值检测值

ADC1BUF8 A/D 数据缓冲区 8/AN8 的阈值检测值

ADC1BUF9 A/D 数据缓冲区 9/AN9 的阈值检测值

•••

•••

ADC1BUFn(1) A/D 数据缓冲区 n/ANn 的阈值检测值

AD1CON1 ADON — ADSIDL DMABM(2) DMAEN(2) MODE12(2) FORM1 FORM0 SSRC3 SSRC2 SSRC1 SSRC0

AD1CON2 PVCFG1 PVCFG0 NVCFG OFFCAL BUFREGEN CSCNA — — BUFS SMPI4 SMPI3 SMPI2

AD1CON3 ADRC EXTSAM PUMPEN(2) SAMC4 SAMC3 SAMC2 SAMC1 SAMC0 ADCS7 ADCS6 ADCS5 ADCS4

AD1CON4(4) — — — — — — — — — — — —

AD1CHS CH0NB2 CH0NB1 CH0NB0 CH0SB4 CH0SB3 CH0SB2 CH0SB1 CH0SB0 CH0NA2 CH0NA1 CH0NA0 CH0SA4

AD1CSSH(3) CSS31 CSS30 CSS29 CSS28 CSS27 CSS26 CSS25 CSS24 CSS23 CSS22 CSS21 CSS20

AD1CSSL CSS15 CSS14 CSS13 CSS12 CSS11 CSS10 CSS9 CSS8 CSS7 CSS6 CSS5 CSS4

AD1CON5 ASEN LPEN CTMREQ BGREQ(2) VRSREQ(2) — ASINT1 ASINT0 — — — —

AD1CHITH(3) CHH31 CHH30 CHH29 CHH28 CHH27 CHH26 CHH25 CHH24 CHH23 CHH22 CHH21 CHH20

ADCCHITL CHH15 CHH14 CHH13 CHH12 CHH11 CHH10 CHH9 CHH8 CHH7 CHH6 CHH5 CHH4

AD1CTMENH(3) CTMEN31 CTMEN30 CTMEN29 CTMEN28 CTMEN27 CTMEN26 CTMEN25 CTMEN24 CTMEN23 CTMEN22 CTMEN21 CTMEN2

AD1CTMENL CTMEN15 CTMEN14 CTMEN13 CTMEN12 CTMEN11 CTMEN10 CTMEN9 CTMEN8 CTMEN7 CTMEN6 CTMEN5 CTMEN4

图注: x = 复位时的未知值, — = 未实现,读为 0。复位值以十六进制显示。

注 1: AD1BUF 寄存器的数量至少等于外部模拟通道数并入为 接近的偶数。关于确切数量,请参见具体器件的数据手册。

2: 这些位并未在所有器件上实现。请参见具体器件的数据手册。

3: 这些寄存器和位仅在具有超过 16 个模拟通道的器件中实现。 “H” 寄存器中可能并未实现所有位。请参见具体器件的数据手册。

4: 并非所有器件均实现 AD1CON4。欲知更多信息,请参见特定器件的数据手册。

5: DMABL<2:0> 位仅在 AD1CON1<11> = 1时可用;否则忽略其值。

Page 59: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

第 51 章 带阈值检测功能的 12 位 A/D 转换器51

带阈值检测功能的

12

位A

/D转换器

51.18 电气规范

图 51-24: A/D 转换时序

表 51-8: A/D 转换要求 (4)

参数编号

符号 特性 小值 典型值 大值 单位 条件

AD61 tPSS 从 SAMP 置 1 到采样启动的延时 2 — 3 TAD

AD130 TAD A/D 时钟周期 300 — — ns 基于 TOSC

— 250 — ns A/D RC 模式

AD131 TCNV 转换时间 (不包括采集时间) ——

1214

——

TAD 10 位结果12 位结果(注 1)

AD132 TACQ 采集时间 — — 750 ns (注 2)

AD135 TSWC 转换到采样的切换时间 — — (注 3)

AD137 TDIS 电容放电时间 1 — — TAD

A/D稳定时间(从ADON置1到SAMP置1) — 300 — ns

注 1:可在后续 TCY 周期内读 ADC1BUFn 寄存器。2:转换完成后当电压满量程变化时(AVDD 至 AVSS 或 AVSS 至 AVDD),保持电容采集一个 “ 新 ” 输入电压所需

的时间。3:在器件时钟的下一个周期。 4:不同器件的参数值可能不同。欲知特定于器件的信息,请参见器件系列的数据手册。

131

130132

BCLR AD1CON1, SAMP

Q3/Q4

A/D 时钟 (1)

A/D 数据

ADC1BUFn

AD1IF

SAMP

旧数据

采样已停止

新数据

(注 2)

9 8 7 2 1 0

注 1:如果选择 RC 作为 A/D 转换的时钟源,在 A/D 时钟启动前要加上一个 TCY 时间,用以执行 SLEEP指令。

2:这是 小的 RC 延时 (典型值为 100 ns),在这段时间保持电容与模拟输入端是断开的。

. . . . . .

TCY

BSET AD1CON1, SAMP

135

© 2011-2012 Microchip Technology Inc. DS39739B_CN 第 51-59 页

Page 60: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

PIC24F 系列参考手册

51.19 设计技巧

问 1: 如何优化 A/D 转换器的系统性能?

答 1: 在优化 A/D 性能时,需要考虑三个主要方面:

1. 请确保满足了所有时序规范要求。如果关闭模块后再打开,必须等待一个 小延时再开始采样。如果改变了输入通道,同样需要等待一个 小延时; 后是TAD,它是转换每一位所需要的时间。TAD 在 AD1CON3 中选择,且应在第 51.18节 “ 电气规范 ” 规定的范围内。如果 TAD 太短,转换终止之前有可能还未对结果进行完全转换;如果 TAD 太长,采样电容上的电压会在转换结束前衰减。在器件数据手册的 “ 电气特性 ” 章节中提供了这些时序规范。

2. 模拟信号源阻抗经常很高(大于 2.5 kΩ),因此模拟信号源泄漏电流和为采样电容充电的电流可能会影响精度。如果输入信号的变化不是太快,可以尝试在模拟输入端连接一个 0.1 μF 的电容。该电容可充电到所采样的模拟电压,并为内部保持电容提供充电所需的瞬态电流。

3. 在启动 A/D 转换前使器件进入休眠模式。在休眠模式下的转换需要选择 RC 时钟源。这种技术可以提高精度,因为来自 CPU 和其他外设的数字噪声被降至

小。

问 2: 是否可以推荐关于 A/D 转换器的优秀参考资料?

答 2: Prentice Hall 出版的 “Analog-Digital Conversion Handbook” 第三版 (ISBN0-13-03-2848-0)对理解 A/D 转换很有帮助。

问 3: 当通道 / 采样和采样 / 中断组合超出缓冲区大小时,缓冲区会发生什么情况?

答 3: 不建议这种配置。缓冲区中将包含不确定的结果。

DS39739B_CN 第 51-60 页 © 2011-2012 Microchip Technology Inc.

Page 61: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

第 51 章 带阈值检测功能的 12 位 A/D 转换器51

带阈值检测功能的

12

位A

/D转换器

51.20 相关应用笔记

本节列出了与手册本章内容相关的应用笔记。这些应用笔记可能并不是专为 PIC24F 器件系列而编写的,但其概念是相近的,通过适当修改并受到一定限制即可使用。当前与带阈值检测功能的12 位 A/D 转换器模块相关的应用笔记有:

标题 应用笔记编号

Using the Analog-to-Digital (A/D) Converter AN546Four-Channel Digital Voltmeter with Display and Keyboard AN557《理解 A/D 转换器的性能参数》 AN693

注: 如需获取更多 PIC24F 系列器件的应用笔记和代码示例,请访问 Microchip 网站(www.microchip.com)。

© 2011-2012 Microchip Technology Inc. DS39739B_CN 第 51-61 页

Page 62: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

PIC24F 系列参考手册

51.21 版本历史

版本 A (2011 年 3 月)

这是本文档的初始版本。

版本 B (2011 年 12 月)

此版本包含以下更新:

• 更新了 12 位 A/D 转换器框图 (见图 51-1)

• 在 第 51.3.1 节 “ 控制寄存器 ” 中添加了 AD1CON4

• 对 AD1CON1 寄存器 (见寄存器 51-1)做了以下更新:

- 更新了 DMAEN 和 DMABM 位的定义

- 添加了注 3 和注 4

• 对 AD1CON2 寄存器 (见寄存器 51-2)做了以下更新:

- 更新了 bit 6-2 (SMPI<4:0>)的定义

- 更新了注 1

- 添加了注 2

• 添加了 AD1CON4 寄存器 (见寄存器 51-4)

• 在 AD1CON5 寄存器 (见寄存器 51-5)中添加了注

• 在第 51.7.5 节 “ 产生 A/D 中断 ” 中添加有关 DMAEN 位的新段落

• 添加了 第 51.9 节 “ 扩展 DMA 操作 ”

• 更新了第 51.10.4 节 “ 阈值检测中断 ” 的内容

• 更新了例 51-6 中的代码

• 更新了 例 51-8 中的代码

DS39739B_CN 第 51-62 页 © 2011-2012 Microchip Technology Inc.

Page 63: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

请注意以下有关 Microchip 器件代码保护功能的要点:

• Microchip 的产品均达到 Microchip 数据手册中所述的技术指标。

• Microchip 确信:在正常使用的情况下, Microchip 系列产品是当今市场上同类产品中 安全的产品之一。

• 目前,仍存在着恶意、甚至是非法破坏代码保护功能的行为。就我们所知,所有这些行为都不是以 Microchip 数据手册中规定的

操作规范来使用 Microchip 产品的。这样做的人极可能侵犯了知识产权。

• Microchip 愿与那些注重代码完整性的客户合作。

• Microchip 或任何其他半导体厂商均无法保证其代码的安全性。代码保护并不意味着我们保证产品是 “牢不可破 ” 的。

代码保护功能处于持续发展中。Microchip 承诺将不断改进产品的代码保护功能。任何试图破坏 Microchip 代码保护功能的行为均可视

为违反了《数字器件千年版权法案(Digital Millennium Copyright Act)》。如果这种行为导致他人在未经授权的情况下,能访问您的

软件或其他受版权保护的成果,您有权依据该法案提起诉讼,从而制止这种行为。

提供本文档的中文版本仅为了便于理解。请勿忽视文档中包含

的英文部分,因为其中提供了有关 Microchip 产品性能和使用

情况的有用信息。Microchip Technology Inc. 及其分公司和相

关公司、各级主管与员工及事务代理机构对译文中可能存在的任何差错不承担任何责任。建议参考 Microchip TechnologyInc. 的英文原版文档。

本出版物中所述的器件应用信息及其他类似内容仅为您提供便

利,它们可能由更新之信息所替代。确保应用符合技术规范,

是您自身应负的责任。Microchip 对这些信息不作任何明示或

暗示、书面或口头、法定或其他形式的声明或担保,包括但不

限于针对其使用情况、质量、性能、适销性或特定用途的适用

性的声明或担保。 Microchip 对因这些信息及使用这些信息而

引起的后果不承担任何责任。如果将 Microchip 器件用于生命

维持和 / 或生命安全应用,一切风险由买方自负。买方同意在

由此引发任何一切伤害、索赔、诉讼或费用时,会维护和保障

Microchip 免于承担法律责任,并加以赔偿。在 Microchip 知识

产权保护下,不得暗中或以其他方式转让任何许可证。

2011-2012 Microchip Technology Inc.

QUALITY MANAGEMENT SYSTEM CERTIFIED BY DNV

== ISO/TS 16949 ==

商标

Microchip 的名称和徽标组合、 Microchip 徽标、 dsPIC、

KEELOQ、 KEELOQ 徽标、 MPLAB、 PIC、 PICmicro、PICSTART、 PIC32 徽标、 rfPIC 和 UNI/O 均为 Microchip Technology Inc. 在美国和其他国家或地区的注册商标。

FilterLab、 Hampshire、 HI-TECH C、 Linear Active Thermistor、MXDEV、MXLAB、SEEVAL 和 The Embedded Control Solutions Company 均为 Microchip Technology Inc.在美国的注册商标。

Analog-for-the-Digital Age、 Application Maestro、 chipKIT、chipKIT 徽标、 CodeGuard、 dsPICDEM、 dsPICDEM.net、dsPICworks、 dsSPEAK、 ECAN、 ECONOMONITOR、

FanSense、 HI-TIDE、 In-Circuit Serial Programming、ICSP、 Mindi、 MiWi、 MPASM、 MPLAB Certified 徽标、

MPLIB、MPLINK、mTouch、Omniscient Code Generation、PICC、 PICC-18、 PICDEM、 PICDEM.net、 PICkit、PICtail、 REAL ICE、 rfLAB、 Select Mode、 Total Endurance、 TSHARC、 UniWinDriver、 WiperLock 和ZENA 均为 Microchip Technology Inc. 在美国和其他国家或地

区的商标。

SQTP 是 Microchip Technology Inc. 在美国的服务标记。

在此提及的所有其他商标均为各持有公司所有。

2011-2012, Microchip Technology Inc. 版权所有。

ISBN:978-1-62076-277-6

DS39739B_CN 第 51-63 页

Microchip 位于美国亚利桑那州 Chandler 和 Tempe 与位于俄勒冈州Gresham 的全球总部、设计和晶圆生产厂及位于美国加利福尼亚州和印度的设计中心均通过了 ISO/TS-16949:2002 认证。公司在 PIC®

MCU 与 dsPIC® DSC、KEELOQ® 跳码器件、串行 EEPROM、单片机外设、非易失性存储器和模拟产品方面的质量体系流程均符合 ISO/TS-16949:2002。此外,Microchip 在开发系统的设计和生产方面的质量体系也已通过了 ISO 9001:2000 认证。

Page 64: 12 A/D 第51 章 带阈值检测功能的 12ww1.microchip.com/downloads/cn/DeviceDoc/39739b_cn.pdf · 第51 章 带阈值检测功能的12 位a/d 转换器 51 带阈值检测功能的

DS39739B_CN 第 51-64 页 2011-2012 Microchip Technology Inc.

美洲公司总部 Corporate Office2355 West Chandler Blvd.Chandler, AZ 85224-6199Tel: 1-480-792-7200 Fax: 1-480-792-7277技术支持:http://www.microchip.com/support网址:www.microchip.com

亚特兰大 AtlantaDuluth, GA Tel: 1-678-957-9614Fax:1-678-957-1455

波士顿 BostonWestborough, MA Tel: 1-774-760-0087 Fax: 1-774-760-0088

芝加哥 ChicagoItasca, IL Tel: 1-630-285-0071 Fax: 1-630-285-0075

克里夫兰 ClevelandIndependence, OH Tel: 1-216-447-0464

Fax: 1-216-447-0643

达拉斯 DallasAddison, TX Tel: 1-972-818-7423 Fax: 1-972-818-2924

底特律 DetroitFarmington Hills, MI Tel: 1-248-538-2250Fax: 1-248-538-2260

印第安纳波利斯IndianapolisNoblesville, IN Tel: 1-317-773-8323Fax: 1-317-773-5453

洛杉矶 Los AngelesMission Viejo, CA Tel: 1-949-462-9523 Fax: 1-949-462-9608

圣克拉拉 Santa ClaraSanta Clara, CA Tel: 1-408-961-6444Fax: 1-408-961-6445

加拿大多伦多 TorontoMississauga, Ontario, CanadaTel: 1-905-673-0699 Fax: 1-905-673-6509

亚太地区

亚太总部 Asia Pacific OfficeSuites 3707-14, 37th FloorTower 6, The GatewayHarbour City, KowloonHong KongTel: 852-2401-1200Fax: 852-2401-3431

中国 - 北京Tel: 86-10-8569-7000Fax: 86-10-8528-2104

中国 - 成都Tel: 86-28-8665-5511Fax: 86-28-8665-7889

中国 - 重庆Tel: 86-23-8980-9588Fax: 86-23-8980-9500

中国 - 杭州Tel: 86-571-2819-3187Fax: 86-571-2819-3189

中国 - 香港特别行政区Tel: 852-2401-1200 Fax: 852-2401-3431

中国 - 南京Tel: 86-25-8473-2460Fax: 86-25-8473-2470

中国 - 青岛Tel: 86-532-8502-7355 Fax: 86-532-8502-7205

中国 - 上海Tel: 86-21-5407-5533 Fax: 86-21-5407-5066

中国 - 沈阳Tel: 86-24-2334-2829 Fax: 86-24-2334-2393

中国 - 深圳Tel: 86-755-8203-2660 Fax: 86-755-8203-1760

中国 - 武汉Tel: 86-27-5980-5300 Fax: 86-27-5980-5118

中国 - 西安Tel: 86-29-8833-7252

Fax: 86-29-8833-7256

中国 - 厦门Tel: 86-592-238-8138

Fax: 86-592-238-8130

中国 - 珠海Tel: 86-756-321-0040 Fax: 86-756-321-0049

亚太地区

台湾地区 - 高雄Tel: 886-7-536-4818Fax: 886-7-330-9305

台湾地区 - 台北Tel: 886-2-2500-6610Fax: 886-2-2508-0102

台湾地区 - 新竹Tel: 886-3-5778-366Fax: 886-3-5770-955

澳大利亚 Australia - SydneyTel: 61-2-9868-6733 Fax: 61-2-9868-6755

印度 India - BangaloreTel: 91-80-3090-4444 Fax: 91-80-3090-4123

印度 India - New DelhiTel: 91-11-4160-8631Fax: 91-11-4160-8632

印度 India - PuneTel: 91-20-2566-1512Fax: 91-20-2566-1513

日本 Japan - OsakaTel: 81-66-152-7160

Fax: 81-66-152-9310

日本 Japan - YokohamaTel: 81-45-471- 6166 Fax: 81-45-471-6122

韩国 Korea - DaeguTel: 82-53-744-4301Fax: 82-53-744-4302

韩国 Korea - SeoulTel: 82-2-554-7200 Fax: 82-2-558-5932 或82-2-558-5934

马来西亚 Malaysia - KualaLumpurTel: 60-3-6201-9857Fax: 60-3-6201-9859

马来西亚 Malaysia - PenangTel: 60-4-227-8870Fax: 60-4-227-4068

菲律宾 Philippines - ManilaTel: 63-2-634-9065Fax: 63-2-634-9069

新加坡 SingaporeTel: 65-6334-8870 Fax: 65-6334-8850

泰国 Thailand - BangkokTel: 66-2-694-1351Fax: 66-2-694-1350

欧洲奥地利 Austria - WelsTel: 43-7242-2244-39Fax: 43-7242-2244-393

丹麦 Denmark-CopenhagenTel: 45-4450-2828 Fax: 45-4485-2829

法国 France - ParisTel: 33-1-69-53-63-20 Fax: 33-1-69-30-90-79

德国 Germany - MunichTel: 49-89-627-144-0 Fax: 49-89-627-144-44

意大利 Italy - Milan Tel: 39-0331-742611 Fax: 39-0331-466781

荷兰 Netherlands - DrunenTel: 31-416-690399 Fax: 31-416-690340

西班牙 Spain - MadridTel: 34-91-708-08-90Fax: 34-91-708-08-91

英国 UK - WokinghamTel: 44-118-921-5869Fax: 44-118-921-5820

全球销售及服务网点

11/29/11