数模转换DAC与CMP模块

DAC模块的定义

当MCU要把处理后的信息反馈到控制设备上时,其实就是把数字量转换成模拟量,完成这种转换的电路称为数模转换器,DA转换器的工作就是将输入的二进制数字量转换成模拟量,以电压或电流的形式输出。

DA转换器实际是一个译码器,一般为线形转换器,输出模拟电压VO和输入数字量Dn之间呈正比关系。

DA转换器在工作时将输入的每一位二进制代码Dn按其权值大小转换成相应的模拟量,然后将代表各位的模拟量相加,所得的总模拟量与数字量呈正比,这样实现了从数字量到模拟量的转换。

由上述转换过程,DA转换器输出电压VO=代码为1的各位所对应的各分模拟电压之和。

DA转换器一般由数码缓冲寄存器、模拟电子开关、参考电压、解码网络、求和电路等组成。

数字量以串行或并行方式输入,并存储在数码缓冲寄存器中;

寄存器输出的每位数码驱动对应数位上的电子开关,将在解码网络中获得的相应数位权值送入求和电路;

求和电路将各位权值相加,得到与数字量对应的模拟量。

使用DA转换器

分辨率

用于表示DA转换器对输入微小量变化的敏感程度。

指DA转换器模拟输出电压可能被分离的等级数。

对于MCU,输入数字量的位数n表示DA转换器的分辨率。

n越大,即输入的数字量位数越多,DA转换器的分辨率越高,对输入微小量的变化越灵敏。

转换精度

指输入模拟电压的实际值与理想值之差,即最大静态转换误差。

转换速度

在使用DA转换器的时候,转换速度指从输入的数字量发生突变开始,到输出电压进入与稳定值相差±0.5最低有效位范围所需要的时间,即建立时间。

目前单片集成DA转换器的建立时间最短到0.1微秒以内。

KL25的封装中,DA模块仅有一个对外引脚,因为在大部分情况下,可以使用PWM实现对外的不同电压输出,少部分需要稳定直流电源的用电设备才会用到DA模块。

DAC驱动构件

按构件思想,将DAC模块的操作封装成独立的功能函数。

DAC构件包括源文件dac.c文件、头文件dac.h文件。

构件文件功能

主要包括相关宏定义、DAC功能函数原型说明等内容。

DAC构件程序文件给出DA各功能的实现过程。

DAC模块功能函数

模块初始化函数

用于初始化DAC模块,要配置DAC0_C0寄存器,选择参考电压,设置软件触发、配置DAC0_C1寄存器来禁用DMA。

数据读取函数

在初始化完成后,使用dac_convert()函数来设置DAC缓冲区的值,值大小在0~4095之间,在DAC模块使能时,DAC模块会将缓冲区中的值转换为对应的模拟电压。

KL25的DAC模块呼吸灯案例

DAC构件的使用方法

  1. 初始化DAC模块,选择参考电压VDDA=3.3V;
  2. 在主循环中,使用DAC对数字量VReference进行转换,VReference的取值范围在2200~2600之间。
  3. 将一个发光二极管的正负极接入对应引脚,即可看到小灯的呼吸效果。

比较器模块CMP

用途:比较两路模拟电压;用作模拟电路和数字电路的接口,可以用作波形产生和变化电路等,利用简单电压比较器可将正弦波变为同频率的方波或矩形波。

例如:湿度报警器。

传感器模拟信号经过放大后直接与比较器输入端连接,跟参考电压比较,当大小发生变化时,就可以产生中断,实现可控的输出结果。

比较器根据比较对象不同分为模拟比较器和数字比较器。

模拟多路复用器可以从八路通道中选择一路模拟信号作为输入信号。六位的DAC可以提供一个信号。MUX电路可以在整个电压范围内进行操作。

按照构建的思想,将CMP操作封装成独立的功能函数

主要完成对CMP模块工作的参数设定,包括工作时钟、正负通道、参考电压选择等一些基本设置。

设置6位DAC输出的值。从64个不同等级中选择输出电压,输出电压范围是Vin/64~Vin。
 

用于打开/关闭CMP中断,KL25芯片中CMP中断号为16。

以比较器模块引脚PIC7和dac的模拟输出值为例,介绍构件使用方法。

  1. 初始化CMP0模块,DAC参考电压Vin,正向通道0,负向通道7;
  2. 设置DAC的值,每次让dac_value值自加,并设置6位DAC输出;
  3. 使能CMP模块中断;
  4. 初始化DAC输出引脚PTD1,在主循环中定时反转其输出;
  5. 将PTD1接PTC7;
  6. 通过串口调试工具读取比较器的输出。(PTC7的值与6位DAC的值的比较结果)

嵌入式技术基础与实践(第4版)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值