热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

数模转换DAC与CMP模块

DAC模块的定义当MCU要把处理后的信息反馈到控制设备上时,其实就是把数字量转换成模拟量,完成这种转换的电路称为数模转换器,DA转换器的

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版)


推荐阅读
  • 本文详细记录了在基于Debian的Deepin 20操作系统上安装MySQL 5.7的具体步骤,包括软件包的选择、依赖项的处理及远程访问权限的配置。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文详细介绍了如何解决Uploadify插件在Internet Explorer(IE)9和10版本中遇到的点击失效及JQuery运行时错误问题。通过修改相关JavaScript代码,确保上传功能在不同浏览器环境中的一致性和稳定性。 ... [详细]
  • 本文将介绍如何使用 Go 语言编写和运行一个简单的“Hello, World!”程序。内容涵盖开发环境配置、代码结构解析及执行步骤。 ... [详细]
  • Linux 系统启动故障排除指南:MBR 和 GRUB 问题
    本文详细介绍了 Linux 系统启动过程中常见的 MBR 扇区和 GRUB 引导程序故障及其解决方案,涵盖从备份、模拟故障到恢复的具体步骤。 ... [详细]
  • 本文探讨了Hive中内部表和外部表的区别及其在HDFS上的路径映射,详细解释了两者的创建、加载及删除操作,并提供了查看表详细信息的方法。通过对比这两种表类型,帮助读者理解如何更好地管理和保护数据。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 深入理解Tornado模板系统
    本文详细介绍了Tornado框架中模板系统的使用方法。Tornado自带的轻量级、高效且灵活的模板语言位于tornado.template模块,支持嵌入Python代码片段,帮助开发者快速构建动态网页。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 本文介绍了在使用Visual Studio 2015进行项目开发时,遇到类向导弹出“异常来自 HRESULT:0x8CE0000B”错误的解决方案。通过具体步骤和实践经验,帮助开发者快速排查并解决问题。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 数据管理权威指南:《DAMA-DMBOK2 数据管理知识体系》
    本书提供了全面的数据管理职能、术语和最佳实践方法的标准行业解释,构建了数据管理的总体框架,为数据管理的发展奠定了坚实的理论基础。适合各类数据管理专业人士和相关领域的从业人员。 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
author-avatar
最爱BLEU
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有