《3.8数模转换器DACPPT演示课件》由会员分享,可在线阅读,更多相关《3.8数模转换器DACPPT演示课件(39页珍藏版)》请在金锄头文库上搜索。
1、3.8 DAC数模转换数模转换(Digital to Analog Converter)本节内容本节内容DAC液晶显示器简介MSP430 DAC控制器DAC简介简介(1/3) 数字处理数字处理的最后阶段 数字输出模拟信号(电压或电流等) 数模转换器数模转换器(DAC) Digital-to-Analog Converter 数字量-模拟量的一种电子器件或电路DAC简介简介(2/3)一般常用的线性D/A转换器,其输出模拟电压Uo和输入数字量Dn之间成正比关系。UREF为参考电压。Uo = DnUREF数字值Dn参考电压UREFDAC连续输出信号Uo D/A转换器实质上是一个译码器(解码器)转换器
2、实质上是一个译码器(解码器)DAC简介简介(3/3) 注:在一个单一时间周期内,时钟信号将锁存数字数据序列,DAC输出端将保持模拟电压值. 理想理想DAC输出输出一系列脉冲经过过滤后得到的时间上连续的模拟信号由奎斯特频率决定采样信号重建精确度实际实际DAC输出输出重建并不精确过滤器具有有限的相位延迟量化误差vsDAC 类型类型(1/3)二进制加权二进制加权DAC -DAC的每个位都对应到一个电阻(或电源) R-2R梯形DAC- 由阻值为R和2R的电阻反复级联构成的二进制加权DAC- MSP430中的DAC12模块采用的就是这种结构.DAC 类型类型(2/3)加权加权DACDAC:先将每位代码按
3、其权的大小转换成相应的模拟量,然后将这些模拟量相加,即可得到与数字量成正比的总模拟量,从而实现了数字/模拟转换。D/A转换器Vo输出输入D0D1Dn-101234567001010011100101110111vo/VD000DAC 类型类型 (3/3) R/2R梯形梯形 DAC:- 运算放大器阴极电流输入转换为虚拟接地例如: R/2R 4位DAC体系结构:DAC 应用应用DAC是将数字量转换成模拟量输出的设备,DAC在实际的应用中可以方便地产生规则(梯形波和三角波)或不规则的模拟波形,用来控制一些模拟设备,大多数都应用在音频方面。ADC DAC 话筒放大器放大器扬声器简单语言编码DAC性能参
4、数性能参数 (1/2)分辨率分辨率 (n):DAC转换器使用的位数, D/A转换器模拟输出电压可能被分离的等级数。输入数字量位数越多,分辨率越高。所以,在实际应用中,常用数字量的位数表示D/A转换器的分辨率。(2)转换速率(SR)在大信号工作状态下模拟电压的变化率。(1)建立时间(tset)当输入的数字量发生变化时,输出电压变化到相应稳定电压值所需时间。最短可达0.1S。转换速度转换速度DAC性能参数性能参数 (2/2)单调性单调性:转换器的模拟输出值与数字输入值同增同减.偏移误差偏移误差:当输入的数字量为0时,DAC输出的模拟量的大小。温度系数 在输入不变的情况下,输出模拟电压随温度变化产生
5、的变化量。一般用满刻 度输出条件下温度每升高1,输出电压变化的百分数作为温度系数。DAC12 模块模块MSP430中的12位DAC模块(DAC12)输出的信号是电压输出的信号是电压所有的MSP430硬件开发工具都有这个模块实验板上的MSP430F6638单片机具有两个两个DAC12模块模块,它们可以组合在一起使用,并且可以输出同步更新DAC12 模块模块DAC12 框图框图:DAC12 特征特征12 位单调输出单调输出 8位或12位电压输出分辨率分辨率 可编程的时间可编程的时间对能量的消耗 内部或外部参考电压参考电压 二进制二进制或二进制补码二进制补码形式 具有自校验自校验功能 多路多路DAC
6、同步更新 可直接用存储器存储(DMA)DAC12 操作操作(1/4)动态范围控制:DAC分辨率: 8位或12位 (DAC12RES位);满量程输出: 1xVREF 、2xVREF 或 3xVREF (DAC12IR位和DAC12OG位);输入数据格式: 二进制或二的补码 (DAC12DF位).位数位数DAC12RESDAC12OGDAC12IR输出电压格式输出电压格式12位位000Vout = Vref 3 (DAC12_xDAT/4096)12位位010Vout = Vref 2 x (DAC12_xDAT/4096)12位位0x1Vout = Vref (DAC12_xDAT/4096)8
7、位位100Vout = Vref 3 (DAC12_xDAT/256)8位位110Vout = Vref 2 (DAC12_xDAT/256)8位位1X1Vout = Vref (DAC12_xDAT/256)- 输出电压 (二进制数据格式):DAC12内核内核:DAC12 操作操作 (2/4)DAC12_xDAT数据格式:数据格式与满量程输出电压的关系: DAC12 操作操作 (3/4)配置DAC12LSELx位:DAC12LSELx = 0: 新写入数据立即输出;DAC12LSELx = 1: 分组(数据被锁存);DAC12LSELx = 2: 数据在Timer_A的CCR1输出信号的上升
8、沿被锁存;DAC12LSELx = 3: 数据在Timer_B的CCR2输出信号的上升沿被锁存.更新更新DAC12 输出电压输出电压 (DAC12_xDAT寄存器):DAC12 操作操作 (4/4)这种结构提供了:更强的系统灵活性;没有必需要执行的代码;低功耗;更高的效率.DAC12中断:- DAC12输出和DMA控制器共用同一个中断向量DAC12 寄存器(寄存器(1/4)参考电压选择选择稳定时间及电流消耗组合控制位数据寄存器分辨率触发源选择DAC使能输出校准DAC12 寄存器寄存器(2/4)DAC12_xCTL, DAC12 控制寄存器 15141312111098DAC12OPSDAC12
9、SREFxDAC12RESDAC12LSELxDAC12CALONDAC12IR76543210DAC12AMPxDAC12DFDAC12IEDAC12IFGDAC12ENCDAC12GRP8DAC12IRDAC12inputrange:DAC12IR=0DAC12full-scaleoutput:3xreferencevoltageDAC12IR=1DAC12full-scaleoutput:1xreferencevoltageBitDescription15DAC12OPSDAC12output:DAC12OPS=0DAC12_0onP6.6,DAC12_1onP6.7DAC12OPS=1
10、DAC12_0onVeREF+,DAC12_1onP5.114-13DAC12REFxDAC12referencevoltage:DAC12REF1DAC12REF0=00VREF+DAC12REF1DAC12REF0=01VREF+DAC12REF1DAC12REF0=10VeREF+DAC12REF1DAC12REF0=11VeREF+12DAC12RESDAC12resolution:DAC12RES=012bitresolutionDAC12RES=18bitresolution11-10DAC12LSELxDAC12 load:DAC12LSEL1DAC12LSEL0 = 00DAC
11、12_xDAT writtenDAC12LSEL1DAC12LSEL0 = 01all grouped DAC12_xDAT writtenDAC12LSEL1DAC12LSEL0 = 10 Rising edge of Timer_A.OUT1 (TA1)DAC12LSEL1DAC12LSEL0 = 11Rising edge of Timer_B.OUT2 (TB2)9DAC12CALONDAC12calibrationinitializedorinprogresswhenDAC12CALON=1DAC12 寄存器寄存器(3/4)DAC12_xCTL, DAC12控制寄存器 1514131
12、2111098DAC12OPSDAC12SREFxDAC12RESDAC12LSELxDAC12CALONDAC12IR76543210DAC12AMPxDAC12DFDAC12IEDAC12IFGDAC12ENCDAC12GRP7-5DAC12AMPxDAC12amplifiersetting:AMP2AMP1AMP0=000AMP2AMP1AMP0=001AMP2AMP1AMP0=010AMP2AMP1AMP0=011AMP2AMP1AMP0=100AMP2AMP1AMP0=101AMP2AMP1AMP0=110AMP2AMP1AMP0=111f:frequency(speed)I:cur
13、rentInputbuffer:OffOffLowf/ILowf/ILowf/IMediumf/IMediumf/IHighf/IOutputbuffer:DAC12off(highZ)DAC12off(0V)Lowf/IMediumf/IHighf/IMediumf/IHighf/IHighf/I4DAC12DFDAC12dataformat:DAC12DF=0StraightbinaryDAC12DF=1TwoscomplementBitDescription3DAC12IEDAC12interruptenablewhenDAC12IE=12DAC12IFGDAC12Interruptfl
14、agDAC12IFG=1wheninterruptpending1DAC12ENCDAC12enablewhenDAC12ENC=1andDAC12LSELx0.0DAC12GRPGroupsDAC12_xwiththenexthigherDAC12_xwhenDAC12GRP=1(exceptionforDAC12_1)76543210DAC12AMPxDAC12DFDAC12IEDAC12IFGDAC12ENCDAC12GRPDAC12 寄存器寄存器(4/4)数据格式:DAC12SREFDAC12DFDAC12DFJDAC12数据格式00012位二进制数据,右对齐,位11是最高位00112
15、位二进制数据,左对齐,位15是最高位01012位二的补码数据,右对齐,位11是符号位01112位二的补码数据,左对齐,位15是符号位1008位二进制数据,右对齐,位7是最高位1018位二进制数据,左对齐,位15是最高位1108位二的补码数据,右对齐,位7是符号位1118位二的补码数据,左对齐,位15是符号位DAC12_xDAT, DAC12数据寄存器DAC12 库函数(库函数(1/3)DAC12_VREF_XDAC12_AMP_XDAC12_enableGrouping() DAC12_setData()DAC12_TRIGGER_XDAC12_SUBMODULE_X DAC12_calibr
16、ateOutput()DAC12_enableConversions()DAC12_init()DAC12 库函数库函数(2/3)片选片选DAC12_SUBMODULE_0 DAC0DAC12_SUBMODULE_1 DAC1DAC12_init(_MSP430_BASEADDRESS_DAC12_2_,)参考电压参考电压DAC12_VREF_VCC Default VCCDAC12_VREF_INT 内部参考电压DAC12_VREF_EXT 外部参考电压触发源触发源DAC12_TRIGGER_ENCBYPASSDefault DAC12_xDAT写操作DAC12_TRIGGER_ENC 组合
17、DAC12_xDAT写操作DAC12_TRIGGER_TA Timer_A.OUT1(TA1)上升沿DAC12_TRIGGER_TBTimer_B.OUT2(TB2)上升沿DAC12 库函数库函数(2/3)DAC12_init(_MSP430_BASEADDRESS_DAC12_2_,)选择输出选择输出DAC12_OUTPUT_1 DefaultDAC12_OUTPUT_2稳定时间稳定时间/电流电流 Input buffer Output bufferDAC12_AMP_OFF_PINOUTHIGHZ off DAC12off(highZ)DAC12_AMP_OFF_PINOUTLOW off
18、DAC12off(0V)DAC12_AMP_LOWIN_LOWOUTLowf/ILowf/IDAC12_AMP_LOWIN_MEDOUT Lowf/IMediumf/IDAC12_AMP_LOWIN_HIGHOUT Lowf/IHighf/IDAC12_AMP_MEDIN_MEDOUT Mediumf/IMediumf/IDAC12_AMP_MEDIN_HIGHOUT Mediumf/IHighf/IDAC12_AMP_HIGHIN_HIGHOUTHighf/IHighf/IDAC12 库函数库函数(3/3) DAC12_calibrateOutput(_MSP430_BASEADDRESS_
19、DAC12_2_, DAC12_SUBMODULE_X); DAC12_setData(_MSP430_BASEADDRESS_DAC12_2_, DAC12_SUBMODULE_X, data); DAC12_enableConversions(_MSP430_BASEADDRESS_DAC12_2_, DAC12_SUBMODULE_X); DAC12_enableGrouping(_MSP430_BASEADDRESS_DAC12_2_)实验实验 : 电压斜坡产生器电压斜坡产生器 (1/16) 综述综述:本次实验将构造一个电压斜坡生成器。DAC模块参考电压可从ADC模块获得;DAC模块为
20、12位分辨率、二进制输入数据格式;DAC在Timer_A每毫秒产生一次中断时更新一次输出值;按键SW1和SW2用于手动修改DAC输出值;当单片机不执行任何任务时,则进入低功耗模式.实验实验 : 电压斜坡产生器电压斜坡产生器 (2/16) A. 资源资源:DAC12_0 模块采用VREF+作为参考电压。因此在ADC12模式下需要激活这个参考电压;当Timer_A产生中断时,更新DAC的输出。将Timer_A配置成每毫秒产生一次中断;DAC输出刷新之后,系统回到低功耗模式低功耗模式LPM3;通过按键SW1和和SW2可以手动更改DAC的输出值.实验实验 : 电压斜坡产生器电压斜坡产生器 (3/16)
21、B. 软件应用组织软件应用组织: 停止看门狗配置Timer_ATimer_A产生中断时更新DAC的输出按键SW1和SW2分别连接到端口P1.0和P1.1设置端口类型为输入使能端口中断配置DACISR中断源:按钮SW1-DAC输出增加按钮SW2-DAC输出减少按钮键控按钮键控斜波产生斜波产生实验实验 : 电压斜坡产生器电压斜坡产生器 (4/16) C. 系统配置系统配置:DAC12 配置配置:DAC12_0输出连接到P6.6;DAC12_0配置成12位分辨率;当一个二进制格式的DAC12数据写入到DAC12_0DAT寄存器时立即更新输出;满量程输出必须等于VREF+ 2.5 V 内部参考电压 ;
22、通过选择中频/电流的输入和输出缓冲区来选择一个时间与电流消耗之间的折中办法;实验实验 : 电压斜坡产生器电压斜坡产生器 (6/16) C. 系统配置系统配置 (续续):Timer_A 配置配置:配置Timer_A寄存器每毫秒产生一次中断;使用ACLK时钟信号作为时钟源;将Timer_A配置为向上计数模式,一直计数直到TAR值等于TACCR0值.实验实验 : 电压斜坡产生器电压斜坡产生器 (7/16) C. 系统配置系统配置 (续续):I/O 端口配置端口配置:当按下按键SW1或SW2时,端口P1的引脚P1.0和P1.2将产生电平变化,并在低电平到高电平跳变时产生中断.实验实验 : 电压斜坡产生
23、器电压斜坡产生器(8/16)D. 操作分析操作分析:使用示波器监听模拟信号使用示波器监听模拟信号:连接示波器测量电流测量电流:分配不同值到DAC12AMP0的比特组;暂停执行应用程序并且直接改变寄存器;禁用DAC12EC位. 这一位在之后需启用.请注意一些特殊的情况:DAC12关闭;高阻抗输出和DAC12关闭;输出: 0 V.实验实验 : 电压斜坡产生器电压斜坡产生器 (9/16)DAC12 配置(寄存器)配置(寄存器):DAC12_0DAT=0x00;/DAC_0输出0VDAC12_0CTL0=DAC12IR|DAC12AMP_5|DAC12ENC;/P6.6输出/1倍输出/中速度/电流AD
24、C12_0CTL0 =REF2_5V|REFON;/2.5V参考电压实验实验 : 电压斜坡产生器电压斜坡产生器 (9/16)DAC12 配置(库函数)配置(库函数): DAC12_setData(_MSP430_BASEADDRESS_DAC12_2_,DAC12_SUBMODULE_0,0x000);/DAC_0输出0VDAC12_init(_MSP430_BASEADDRESS_DAC12_2_,DAC12_SUBMODULE_0,/DAC0DAC12_OUTPUT_0,/P6.6输出DAC12_VREF_INT,/2.5V参考电压DAC12_VREFx1,/1倍输出DAC12_AMP_M
25、EDIN_MEDOUT,/中速度/电流DAC12_TRIGGER_ENCBYPASS);DAC12_calibrateOutput(_MSP430_BASEADDRESS_DAC12_2_,DAC12_SUBMODULE_0);/中速度/电流实验实验 : 电压斜坡产生器电压斜坡产生器 (10/16)Timer_A 配置(寄存器)配置(寄存器):TAR=0;/TAR重置TACCR0=13600;TACCTL0|=CCIE;/比较模式,中断TACTL=TACLR|MC_1|TASSEL_2;/增计数模式,SMCLK实验实验 : 电压斜坡产生器电压斜坡产生器 (10/16)Timer_A 配置(库函
26、数)配置(库函数):#define TIMER_PERIOD 13600 Timer_startUpMode(_MSP430_BASEADDRESS_T0B7_,/增计数模式TIMER_CLOCKSOURCE_SMCLK,/SMCLKTIMER_CLOCKSOURCE_DIVIDER_1,/1倍分频TIMER_PERIOD,TIMER_TAIE_INTERRUPT_ENABLE,/允许中断TIMER_CAPTURECOMPARE_INTERRUPT_ENABLE,/比较模式,中断TIMER_DO_CLEAR/TAR重置);实验实验 : 电压斜坡产生器电压斜坡产生器(11/16)端口配置(寄存器)端口配置(寄存器):/SW1 和 SW2P1SEL&=0x03;/P1.0和P1.1端口P1DIR&=0x03;/P1.0和P1.1输入P1IFG=0x00;/清除中断标志P1IE|=0x03;/允许端口中断实验实验 : 电压斜坡产生器电压斜坡产生器(11/16)端口配置(寄存器)端口配置(寄存器):/SW1 和 SW2P1SEL&=0x03;/P1.0和P1.1端口P1DIR&=0x03;/P1.0和P1.1输入P1IFG=0x00;/清除中断标志P1IE|=0x03;/允许端口中断