- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验三 数模转换设计实验
一、 实验目的:
1、。
、。
二、实验原理:
数字模拟转换器(DAC)常用于电脑和模拟世界的一种设备,例如控制线性致动器,发动机,模拟显示等仅仅是将数字信号转换成模拟信号,如数字滤波器
(二) PSOC单片机内部DAC
其特点主要包括:
可调255级步长的电压或电流输出;
可编程的台阶大小(取决于范围);
8位标定用于校正25%的增益误差;
电流输出模式下,源(source)和吸收(sink)选项;
电流模式下,8Msps的转换率;电压模式下,1Mbps的转换率。
表5-1 DAC寄存器组
通过设置寄存器DACx_CR0[4],使DAC工作在电流模式下,输出电流范围为0-32uA,0-256uA和0-2.048mA。IDAC能通过配置寄存器DACx_CR1[2],将转换器配置为源电流(即从输出端向外电路流出的负载电流)和吸收电流(外电路流入输出端的负载电流)模式。
此外,也可以使用UDBDACx_CR1[3]位来使能使用UDB输入。通过设置寄存器DACx_CR0[4],使DAC工作在电压模式下,DAC输出电流通过电阻连接,输出电压的范围通过设置寄存器DACx_CR0[3:2],将其电压输出范围设置为0-1.024V或者0-4.096V。
在电压模式下,任何连接到DACVDAC的输出不被缓冲)。
在电压模式下,转换率最高为1Mbps。此外,在4V模式下比1V模式转换速度要慢,这是由于到Vssa的电阻负载比1V的负载大4倍。在4V模式下,最高转换速度
为250kbps。
下图给出了DACDAC_SWx寄存器来控制。
图5-1 DAC结构
DAC中可用8个标定位来消除DAC的增益误差。cal[7:0]的默认输出是。比默认值低将降低增益;反之增加。使用DACx_TR寄存器完成标定,标定的最小分辨率是 LSB的0.5,即表示有可以通过标定来修正25%的增益误差。采样标定过程如下:
=255,Cal码=128,捕获DAC的输出(dac_vout/dac_iout);
确定LSB的增益误差;
使用正确的标定码,捕获DAC的输出(dac_vout/dac_iout)。
通过将两个电流DAC的输出求和,可以实现更高分辨率的电流输出,如图所示,每一个有不同的输入部分。
图5-2 高分辨率DAC结构
三、实验器材:
序号 名 称 型号与规格 数 量 备注 1 CY8CKIT-030 1 2 电脑 1 实验内容:
学习使用一个DAC:VDAC(8bit)模块
3.设计一个可变的正弦信号发生器
五、实验步骤:
这个实验从模拟部分的开始。 PSoC模拟型号由连续和断续电容模块组成。通过这些模块的组合可以创建得到一个数字模拟转换器的DACs,模拟数字转换器的ADCs,放大器,比较器和过滤器。要得到这些,我们需要生成的参考电压,如介于Vssa(GND),VDDA,的Vdda/2和其它的。
1、AGND和参考练习
第一步.创建一个工程
命名为Lab7A
选取一个AMux模块,命名为AMux_1
- 使一个Mux VRef组件的输入脚设置为Vdda/2
- 使AMux_1 模拟输出脚 PIN_1 设置为“High Impedance Analog”驱动
- 连接这个引脚到 P03
选取一个AMux模块,命名为AMux_2
- 使一个Mux VRef组件的输入脚设置为1.024V
- 使AMux_2 模拟输出脚 PIN_2设置为“High Impedance Analog”驱动
- 连接这个引脚到 P04
选取一个AMux模块,命名为AMux_3
- 使一个Mux VRef组件的输入脚设置为Vdda(Gnd)
- 使AMux_3 模拟输出脚 PIN_3 设置为“High Impedance Analog”驱动
- 连接这个引脚到 P05
配置原理图如下:
编译工程
第二步.编写程序
打开main.c、添加代码启动AMux模块选择合适的信道
这个程序的控制环为空
编译工程、下载到开发板然后运行
用示波器或万用表测出每个参考点的电平记录到下表
主程序如下:
#include project.h
int main()
{
AMux_1_Start();
AMux_1_Select(0);
AMux_2_Start();
AMux_2_Select(0);
AMux_3_Start();
AMux_3_Select(0);/* Place your initi
文档评论(0)