LPC2103之Analog-to-Digital Converter
0赞Analog-to-Digital Converter (ADC)
Features
LPC2103的ADC特性:
1. 10bit逐次逼近型模数转换器
2. 低功耗模式
3. 测量范围0V—VDD(3.3V)(通常为3V,不超过VDDA)
4. 10bit转换时间> 2.44us
5. 单输入或多输入突发转换模式
6. 每路模数通道有专用的结果寄存器
Description
APB时钟为A/D转换基本时钟。转换器中包括可编程分频时钟,逐次逼近处理所需的时钟最大能达到4.5MHz,彻底准确的转换需要11个这样的时钟周期。
Pin description
Pin |
Type |
Description |
AD0.7:0 |
Input |
模拟输入端口。 |
VDD(3V3) |
Reference |
参考电压 |
VDDA,VSSA |
Power |
模拟电压和地 |
Register description
//模数控制寄存器
#define AD0CR (*((volatile unsigned long *) 0xE0034000))
A/D转换发生前,必须设置ADCR寄存器选择操作模式。复位值为0x00000001。可读可写寄存器。
位 |
信号 |
功能 |
7:0 |
SEL |
选择AD0.7:0管脚哪一路进行采样和转换。8bit数据分别对应8路A/D输入管脚,有且只有一位可以写1。写0x00默认为0x01。 |
15:8 |
CLKDIV |
APB时钟(PCLK)的分频系数。必须使得A/D转换时钟小等于4.5MHz。 |
16 |
BURST |
1——突发模式,转换时间和转换精度由CLKS决定 0——正常模式,11clock/10bits |
19:17 |
CLKS |
突发(BURST)模式下转换时钟周期选择(转换时间和转换精度的取舍)。 000——11clock/10bits 001——10clock/9bits 010——9clock/8bits 011——8clock/7bits 100——7clock/6bits 101——6clock/5bits 110——5clock/4bits 111——4clock/3bits |
20 |
保留 |
|
21 |
PDN |
1——A/D转换可操作 0——A/D转换工作于低功耗模式 |
23:22 |
保留 |
|
26:24 |
START |
当BURST位为0时,以下设置控制是否以及何时A/D转换开始。 000——不启动(该值应该使用于PDN=0时) 001——立刻启动 010——Start conversion when the edge selected by bit 27 occurs on P0.16/EINT0/MAT0.2 pin. 011——Start conversion when the edge selected by bit 27 occurs on P0.22. 100——Start conversion when the edge selected by bit 27 occurs on MAT0.1. 101——Start conversion when the edge selected by bit 27 occurs on MAT0.3. 110——Start conversion when the edge selected by bit 27 occurs on MAT1.0. 111——Start conversion when the edge selected by bit 27 occurs on MAT1.1. |
27 |
EDGE |
此位的设置仅在START选择了010-111时 1——Start conversion on a falling edge on the selected CAP/MAT signal. 0——Start conversion on a rising edge on the selected CAP/MAT signal. |
31:28 |
保留 |
//模数全局数据寄存器
#define AD0GDR (*((volatile unsigned long *) 0xE0034004))
可读可写寄存器。该寄存器包括了ADC的DONE位和最近的A/D转换结果。
位 |
信号 |
功能 |
5:0 |
保留 |
|
15:6 |
RESULT |
转换结果 |
23:16 |
保留 |
|
26:24 |
CHN |
该位包含了RESULT位所转换的通道。 |
29:27 |
保留 |
|
30 |
OVERUN |
溢出标志位 |
31 |
DONE |
A/D转换完成该位置1,读该位和写ADCR时该位清除。当写ADCR时转换正在进行中,该位置1并且开始新的转换。 |
//模数状态寄存器
#define AD0STAT (*((volatile unsigned long *) 0xE0034030))
只读寄存器。该寄存器包括了所有A/D通道的DONE和OVERRUN标志位,也包括了A/D中断标志。
位 |
信号 |
功能 |
0 |
DONE0 |
该位反映了结果寄存器中A/D通道0的DONE状态。 |
1 |
DONE1 |
该位反映了结果寄存器中A/D通道1的DONE状态。 |
2 |
DONE2 |
该位反映了结果寄存器中A/D通道2的DONE状态。 |
3 |
DONE3 |
该位反映了结果寄存器中A/D通道3的DONE状态。 |
4 |
DONE4 |
该位反映了结果寄存器中A/D通道4的DONE状态。 |
5 |
DONE5 |
该位反映了结果寄存器中A/D通道5的DONE状态。 |
6 |
DONE6 |
该位反映了结果寄存器中A/D通道6的DONE状态。 |
7 |
DONE7 |
该位反映了结果寄存器中A/D通道7的DONE状态。 |
8 |
OVERRUN0 |
该位反映了结果寄存器中A/D通道0的OVERRUN状态。 |
9 |
OVERRUN1 |
该位反映了结果寄存器中A/D通道1的OVERRUN状态。 |
10 |
OVERRUN2 |
该位反映了结果寄存器中A/D通道2的OVERRUN状态。 |
11 |
OVERRUN3 |
该位反映了结果寄存器中A/D通道3的OVERRUN状态。 |
12 |
OVERRUN4 |
该位反映了结果寄存器中A/D通道4的OVERRUN状态。 |
13 |
OVERRUN5 |
该位反映了结果寄存器中A/D通道5的OVERRUN状态。 |
14 |
OVERRUN6 |
该位反映了结果寄存器中A/D通道6的OVERRUN状态。 |
15 |
OVERRUN7 |
该位反映了结果寄存器中A/D通道7的OVERRUN状态。 |
16 |
ADINT |
A/D中断标志位。当任何A/D DONE标志位置位时该位置位,并且影响ADINTEN寄存器的A/D中断。 |
31:17 |
保留 |
//模数中断使能寄存器
#define AD0INTEN (*((volatile unsigned long *) 0xE003400C))
该寄存器控制A/D转换完成是否产生一个中断。
位 |
信号 |
功能 |
0 |
ADINTEN0 |
1——A/D通道0转换完成产生中断 0——A/D通道0转换完成不产生中断 |
1 |
ADINTEN 1 |
1——A/D通道1转换完成产生中断 0——A/D通道1转换完成不产生中断 |
2 |
ADINTEN 2 |
1——A/D通道2转换完成产生中断 0——A/D通道2转换完成不产生中断 |
3 |
ADINTEN 3 |
1——A/D通道3转换完成产生中断 0——A/D通道3转换完成不产生中断 |
4 |
ADINTEN 4 |
1——A/D通道4转换完成产生中断 0——A/D通道4转换完成不产生中断 |
5 |
ADINTEN 5 |
1——A/D通道5转换完成产生中断 0——A/D通道5转换完成不产生中断 |
6 |
ADINTEN 6 |
1——A/D通道6转换完成产生中断 0——A/D通道6转换完成不产生中断 |
7 |
ADINTEN 7 |
1——A/D通道7转换完成产生中断 0——A/D通道7转换完成不产生中断 |
8 |
ADINTEN |
1——只要ADINTEN7:0使能就可以产生中断 0——只有ADDR中的全局DONE标志位使能才产生中断 |
31:9 |
保留 |
//模数通道0/1/2/3/4/5/6/7数据寄存器
//模数通道0数据寄存器
#define AD0DR0 (*((volatile unsigned long *) 0xE0034010))
//模数通道1数据寄存器
#define AD0DR1 (*((volatile unsigned long *) 0xE0034014))
//模数通道2数据寄存器
#define AD0DR2 (*((volatile unsigned long *) 0xE0034018))
//模数通道3数据寄存器
#define AD0DR3 (*((volatile unsigned long *) 0xE003401C))
//模数通道4数据寄存器
#define AD0DR4 (*((volatile unsigned long *) 0xE0034020))
//模数通道5数据寄存器
#define AD0DR5 (*((volatile unsigned long *) 0xE0034024))
//模数通道6数据寄存器
#define AD 0DR6 (*((volatile unsigned long *) 0xE0034028))
//模数通道7数据寄存器
#define AD0DR7 (*((volatile unsigned long *) 0xE003402C))
只读存储器。
位 |
信号 |
功能 |
5:0 |
保留 |
|
15:6 |
RESULT |
转换结果。 |
29:16 |
保留 |
|
30 |
OVERRUN |
溢出标志位。 |
31 |
DONE |
完成标志位,读该寄存器清除该位 |