Cortex-M3学习日志(五)-- -- DAC实验
图1-1 DAC原理框图
数字量以串行或并行方式输入,存储于数码寄存器中,数码寄存器输出的名位数码分别控制对应的模拟开关,使数码为1的位在位权网络上产生与其值成正比的电流值或电压值,再由求和电路将各权值相加,即得到数字量对应的模拟量。按解码网络结构不同可以将DAC转换器分成T
1、
图1-2 T型电阻网络D/A转换器模型
2、
图1-3
3、
图1-4
4、
图
按模拟电子开关的电路的不同,也可以将D/A转换器分为CMOS开关型D/A转换器(速度要求不高),双极型D/A转换器。而双极型D/A转换器双可以划分为电流开关型(速度要求较高)与ECL电流开关型(转换速度更高)两种。如果对欧姆定律不陌生的话,我想上面各个模型是如何输出电压的应该就可以理解了,在这里就不总结公式了,因为这只是模型,对应,实际电路与模型是有所出入的,在实际应用中要着重关注一下以下几个参数:
1、
D/A转换器的分辨率用最小分辨电压VLSB与满量程输出电压VFSV的比值来表示:
从上式可以看出D/A转换器的分辨率只与输入二进制数的位数n有关,因此大部分情况下我们直接把n做为分辨率如8位,10位,12位等,由此我们也可以知道分辨率值越小,分辨能力越高。
2、
在D/A转换器中,一般用转换误差来描述转换精度。DAC转换误差是指实际输出模拟电压值与理想值的最大偏差。转换误差是一个综合性的静态指标,主要由三部分构成:
1)非线性误差:一般是由于模拟电子开关的导通电阻和导通压降及R、2R电阻值的偏差引起。
2)漂移误差:一般是由于运算放大器的零点漂移引起。
3)增益误差:一般是由于参考电压偏离标准值、运放增益不稳定引起。
3、
转换速度一般由建立时间决定,从输入由全0突变全1起,到输出电压稳定(最大输出电压正负二分之一最小输出电压)止,称为DAC转换时间。它是DAC最大响应时间。例如,DAC 5G7520响应时间不大于500ns。
除了以上三个常见的指标D/A转换器的指标还包括电源抑制比、功率消耗、温度系数以及输入高、低逻辑电平的数值等技术指标。关于D/A的应用,应该说在电子系统中应用相当广泛,除了在微机系统中将数字量转换为模拟量典型应用之外,还常用于波形生成,名种数字式的或编程应用等。
好了,关于D/A转换器的知识暂时总结到这,更深入的知道还需要翻一下模电,信号与线性系统(好像里面有奈奎斯特定理,与采样有关),微电子,放大器等方面的书籍。下面简单总结一下LPC1768内部集成的D/A转换器。LPC1768内部集成的是10位模数转换器,它是电阻串联结构的,并且带有缓冲输出,最大输出频率为1MHz。电阻串联结构模型如下图所示:
图
涉及到D/A的引脚主要有DAC输出脚P0.26,参考电压引脚,用来给D/A转换器提供参考电压,模拟电源与数字电源VDD/VSS,这个两个电源要分开提供,再不使用DAC时也要将这两个引脚连接到电源,不能悬空,不然系统会不稳定。
DAC的配置也很简单,首先就是将P0.26设置为DAC模式,再一个就是配置DAC控制寄存器DACDR。DAC的控制寄存器DACDR的6-15位是DAC的输出电压数字值,这个数字决定了要输出的电压大小,DAC输出电压的计算方法是:
公式中VDAC即指AC的控制寄存器DACDR的6-15位的值,VREF指的是参考电压,在这次实验电路中用的是3.3V。LPC1768的DAC功能还有DAM中断和定时控制功能,它采用又缓冲方式输出。在这里简单总结一下DAM模式,所谓的DAM模式也就是Direct Memory Access,汉语的意思就是直接内存访问,是一种不经过CPU而直接从内存存取数据的数据交换模式。在DMA模式下,CPU只须向DMA控制器下达指令,让DMA控制器来处理数据的传送,数据传送完毕再把信息反馈给CPU,这样就很大程度上减轻了CPU资源占有率,可以大大节省系统资源。DMA模式又可以分为Single-Word DMA(单字节DMA)和Multi-Word DMA(多字节DMA)两种,其中所能达到的最大传输速率也只有16.6MB/s。DMA有两个技术特征,首先是直接传送,其次是块传送。
DMA工作过程
⑴
⑵
⑶
⑷
⑸
DMA与中断的区别
⑴
⑵
在DMA方式中,由于I/O设备直接同内存发生成块的数据交换,因此I/O效率比较高。由于DMA技术可以提高I/O效率,因此在现代计算机系统中,得到了广泛的应用。许多输入输出设备的控制器,特别是块设备的控制器,都支持DMA方式。
通过上述分析可以看出,DMA控制器功能的强弱,是决定DMA效率的关键因素。DMA控制器需要为每次数据的传送做大量的工作,数据传送单位的增大意味着传送次数的减少。另外,DMA方式窃取了时钟周期,CPU处理效率降低了,要想尽量少地窃取时钟周期,就要设法提高DMA控制器的性能,这样可以较少地影响CPU出理效率。
好了,关于DAM的知识先总结到这,要想使用LPC1768的DAM功能,需要配置D/A转换控制寄存器DACCTRL与DAC转换计数寄存器DACCNTVAL。这次实验只是简单的学习怎样使用DAC,所以没有用到DAM。下面说一下实验电路,就是把DAC转换的电压通过放大器输出到Speaker,电压值不同,则Speaker的响度就不一样,如下图所示:
图
关于LM386M已经是烂大街的芯片,关于它的应用网上有成大堆的资料可供参考,这里就不总结它的用法了,下面贴上这次实验的程序:
关于LM386M已经是烂大街的芯片,关于它的应用网上有成大堆的资料可供参考,这里就不总结它的用法了,下面贴上这次实验的程序:
一、dac.c程序源代码
#include"includes.h"
void DACInit( void )
{
}
void DacOut(unsigned int val)
{
}
二、main.c程序部分源代码
void DacConver(unsigned int val)
{
}
int main(void)
{
}
程序很简单,就是简单的测试,能从Speaker听到响声,同时我也把结果发送到了串口显示,下面是实验的结果:
图
评论