越能准确逼近模拟量,但转换所需的时间也越长。
逐次逼近式的A/D转换器的主要特点是:
转换速度较快,在1—100/μs以内,分辨率可以达18位,特别适用于工业控制系统。转换时间固定,不随输入信号的变化而变化。抗干扰能力相对积分型的差。例如,对模拟输入信号采样过程中,若在采样时刻有一个干扰脉冲迭加在模拟信号上,则采样时,包括干扰信号在内,都被采样和转换为数字量,这就会造成较大的误差,所以有必要采取适当的滤波
措施。
图2-17 逐次逼近式A/D转换原理图
2.A/D转换的重要指标
1)分辨率(Resolution):
分辨率反映A/D转换器对输入微小变化响应的能力,通常用数字输出最低位(LSB)所对应的模拟输入的电平值表示。n位A/D能反应1/2n满量程的模拟输入电平。由于分辨率直接与转换器的位数有关,所以一般也可简单地用数字量的位数来表示分辨率,即n位二进制数,最低位所具有的权值,就是它的分辨率。
值得注意的是,分辨率与精度是两个不同的概念,不要把两者相混淆。即使分辨率很高,也可能由于温度漂移、线性度等原因,而使其精度不够高。
2)精度(Accuracy)
精度有绝对精度(Absolute Accuracy)和相对精度(Relative Accuracy)两种表示方法。 ① 绝对误差
在一个转换器中,对应于一个数字量的实际模拟输入电压和理想的模拟输入电压之差并非是一个常数。我们把它们之间的差的最大值,定义为“绝对误差”。通常以数字量的最小有效位(LSB)的分数值来表示绝对误差,例如:?1LSB等。绝对误差包括量化误差和其它所有误差。
② 相对误差
是指整个转换范围内,任一数字量所对应的模拟输入量的实际值与理论值之差,用模拟电压满量程的百分比表示。
例如,满量程为10V,10位A/D芯片,若其绝对精度为?1/2LSB,则其最小有效位的量
化单位:9.77mV,其绝对精度为=4.88mV,其相对精度为0.048%。
3)转换时间(Conversion Time)
转换时间是指完成一次A/D转换所需的时间,即由发出启动转换命令信号到转换结束信号开始有效的时间间隔。
转换时间的倒数称为转换速率。例如AD570的转换时间为25us,其转换速率为40KHz。 4)电源灵敏度(power supply sensitivity)
电源灵敏度是指A/D转换芯片的供电电源的电压发生变化时,产生的转换误差。一般用电源电压变化1%时相当的模拟量变化的百分数来表示。
5)量程
量程是指所能转换的模拟输入电压范围,分单极性、双极性两种类型。 例如,单极性 量程为0~+5V,0~+10V,0~+20V; 双极性 量程为-5~+5V,-10~+10V。 6)输出逻辑电平
多数A/D转换器的输出逻辑电平与TTL电平兼容。在考虑数字量输出与微处理的数据总线接口时,应注意是否要三态逻辑输出,是否要对数据进行锁存等。
7)工作温度范围
由于温度会对比较器、运算放大器、电阻网络等产生影响,故只在一定的温度范围内才能保证额定精度指标。一般A/D转换器的工作温度范围为(0~700C),军用品的工作温度范围为(-55~+1250C)。 3.ARM自带的十位A/D转换器
S3C440BX芯片自带一个8路10位A/D转换器,该转换器可以通过软件设置为Sleep摸式,可以节电减少功率损失,最大转换率为500K,非线性度为正负1位,其转换时间可以通过下式计算:如果系统时钟为66MHz,比例值为9,则为
66MHz/2 (9+1)/16 (完成转换至少需要16个时钟周期)=205.25KHz(相当于4.85us) ARM芯片与A/D功能有关的引脚为以下几个,其中AIN[7:0]为8路模拟采集通道,AREFT为参考正电压,AREFB为参考负电压,AVCOM为模拟共电压。
表2-24 S3C44B0自带A/D功能有关的引脚 信号 ADC
AIN[7:0] AREFT AREFB AVCOM AI ADC 输入[7:0] AI ADC Vref AI ADC Vref AI ADC Vref I/O 描述
在电路中,对上述引脚需要按照图2-18所示加上电容。
图2-18 外部引脚配置参考
与AD相关的寄存器主要是以下三个:
1)ADCPSR:采样比率寄存器。
通过设置该寄存器,可以设置采样率,最后得到的除数因子=2(寄存器值+1)。 参考:ADCPSR=20。
2)ADCCON:采样控制寄存器。
该寄存器的0位是转换使能位,写1表示转换开始。1位是读操作使能转换,写1表示转换在读操作时开始。2、3、4位是通道号。5位为睡眠模式设定,6位为转换标志位(只读)。
通过该寄存器设置A/D转换开始可以参见下例: rADCCON=0x11(通道4开始转换)。
3)ADCDAT:转换结果数据寄存器。该寄存器的十位表示转换后的结果,全为1时为满量程2.5伏。
4.AD转换器在开发平台的接法如下:
即前四路通过分压电位器接到2.5v电源上,如下图2-19所示。
图2-19 AD转换器在扩展版的接法
六、实验步骤
D/A接口实验
1.新建工程,将“Exp4 D/A实验”中的文件添加到工程。 2.定义宏(Max504.c)
#define MAX504_CS #define MAX504_CLR #define SIOLSB
0x2 0x1
//EXIO1 //EXIO0
0x40
do{CLREXIOBIT(MAX504_CS);}while(0)
#define MAX504_ENABLE()
#define MAX504_DISABLE() do{SETEXIOBIT(MAX504_CS);}while(0) #define MAX504_CLEAR() do{CLREXIOBIT(MAX504_CLR);Delay(1); SETEXIOBIT(MAX504_CLR);}while(0) #define Max504_FULL
4.096f
3.编写D/A输出函数(Max504.c),如图2-15所示。
将数据左移两位关闭MAX504MAX504_DISABLE()将DAC寄存器设为0MAX504_CLEAR()发送低8位SendSIOData()延时开启MAX504MAX504_ENABLE()发送高8位SendSIOData()
图2-15 D/A输出函数流程图
4.编写主函数(main.c),输出方波信号。主函数流程图如图2-16所示。
开发板初始化ARMTargetInit()是Flag==0?否输出0V输出满量程Flag=1Flag=0延时
图2-16 主函数流程图
D/A接口实验main.c程序:
#include\#include\#include\#include
#pragma import(__use_no_semihosting_swi) // ensure
no functions that use semihosting
int main(void) {
int flag=0;
ARMTargetInit(); //开发版初始化 while(1) {
if(flag==0) {
Max504_SetDA(0);//输出0v flag=1; } else {
Max504_SetDA(1023);//输出满量程 flag=0; }
Delay(10); } return 0; }
A/D接口实验
1.新建工程,将“Exp5 ARM A/D接口实验”种的文件添加到工程。 2.编写获取转换结果函数(main.c),程序流程图如图2-20所示。
启动指定通道延时否转换结束?是返回转换结果