目录

  • DAC
    • 15.1 Introduction
      • 15.1.1 Features
      • 15.1.2 Block Diagram
    • 15.2 Using the DAC
      • 15.2.1 Initialization Sequence 初始化顺序
      • 15.2.2 DAC Offset AdjustmentDAC偏移调整
      • 15.2.3 EPWMSYNCPER Signal EPWMSYNCPER信号
    • 15.3 Lock Registers
  • 总结
    • 代码配置 driverlib
    • 代码配置 bitfield

DAC

缓冲数模转换器(DAC)是一个模拟模块,可以输出可编程的任意参考电压。

开发过程中,虽然CCS的在线仿真能够让我们观察大多数关键变量的值以调试,但在线仿真的更新频率不算太高,最大也就50Hz。感觉CCS自带的示波器也不怎么好用。

280049C芯片集成有DAC模块,可以将程序当中的某些关键变量进行输出出来,

15.1 Introduction

缓冲DAC模块由一个内部12位DAC和一个能够驱动外部负载的模拟输出缓冲器组成。为了驱动比典型负载更高的负载,可以在负载大小和输出电压稳定性之间进行权衡。有关缓冲DAC的负载条件,请参阅设备特定数据手册。缓冲DAC是一种通用DAC,除交流波形(如正弦波、方波、三角波等)外,还可用于生成直流电压。软件写入DAC值寄存器可以立即生效,也可以与EPWMSYNCPER事件同步

15.1.1 Features

每个DAC的特性具有以下特点:

  • 12位可编程的内部DAC
  • 可选择的参考电压源
  • 使用内部VREFHI时的具有1倍和2倍的增益模式
  • 能够与EPWMSYNCPER同步

15.1.2 Block Diagram

15.2 Using the DAC

内部DAC的参考电压源DACREF可在VDAC和VREFHI之间选择。仅当VREFHI设置为DACREF且使用内部参考模式时,x2增益模式才可用(请参阅模拟子系统章节,了解如何切换到内部参考模式)。即使缓冲DAC具有x2增益模式,缓冲DAC的最大输出电压也不会大于VDDA。表15-1列出了缓冲DAC支持的增益模式组合。在此表中,x=A或B,x=无需在意,VDAC/VREFHI=2.5v,VDDA=3.3v,DACVAL=4095。

缓冲DAC模块中有两组DACVAL寄存器,DACVALA和DACVALS。DACVALA是一个只读寄存器,它主动控制缓冲的DAC值。DACVALS是一个可写的影子寄存器,可以立即加载到DACVALA中,也可以与下一个EPWMSYNCPER事件同步。如果在缓冲DAC输出电压时禁用到DAC的时钟,输出电压保持不受影响,但DACVALA和DACVALS将不再通过寄存器写入进行更新。启用缓冲DAC的时钟可将其恢复到禁用时钟之前的状态。

内部DAC的理想输出通过以下公式计算

DACOUT=DACVALA×DACREF4096DACOUT = \frac{DACVALA\times DACREF}{4096}DACOUT=4096DACVALA×DACREF​

缓冲DAC可用于对PGA的输入信号进行电平移位(详见PGA部分)。缓冲DAC的输出缓冲器在电源轨(VDDA/VSSA)附近可能表现出非线性行为。要确定缓冲DAC的线性范围,请参阅设备特定数据手册。

根据理想输出可知,DAC的输出电压与参考电压相关,但DAC的输出电压不会大于VDDA,因此在编程中想要使用DAC模块以DA某个变量时,一定要注意实际输出的电压,谨防被限幅。

15.2.1 Initialization Sequence 初始化顺序

  1. 启用缓冲DAC时钟。
  2. 使用DACREFSEL寄存器以设置DACREF参考电压。
  3. 使用DACOUTEN寄存器为缓冲DAC使能输出。
  4. 在输出电压之前等待通电时间过去。要确定缓冲DAC的通电时间,请参阅设备数据手册。
  5. 对于缓冲DAC的可预测行为,可以根据缓冲DAC的稳定时间来间隔对DACVALS的连续写入。要确定缓冲DAC的稳定时间,请参阅设备数据手册。

15.2.2 DAC Offset AdjustmentDAC偏移调整

零偏移误差定义为中间码(2048)处的电压与1.25v(对于2.5v参考电压)之间的差值。DAC偏移误差在2.5v参考电压下校准,并作为Device_cal()函数的一部分加载到DAC偏移微调寄存器中。如果DAC在2.5v以外的任何参考电压下使用,则必须调整偏移微调,以确保偏移误差性能保持在设备特定的数据手册限制范围内。DAC偏移寄存器是一个16位寄存器,在寄存器的下半部分包含8位有符号偏移微调。使用C2000Ware中的函数调用DAC_tuneOffsetTrim()调整偏移。

15.2.3 EPWMSYNCPER Signal EPWMSYNCPER信号

EPWMSYNCPER来自EPWM的时基子模块。有关如何生成此信号的详细说明,请参阅增强型脉宽调制器(ePWM)一章的时基子模块部分。

当DACCTL[LOADMODE]=1时加载DACVALA的EPWMSYNCPER信号是电平触发加载。如果EPWM的TBCTR和TBPRD均为0,则EPWMSYNCPER将保持在高电平,DACVALA将立即从DACVALS加载,而不管DACCTL[LOADMODE]的值是多少。因此,建议在将DACCTL[LOADMODE]设置为1之前先配置EPWM。

15.3 Lock Registers

提供了DACLOCK寄存器,以防止伪写入修改DACCTL、DACVALS和DACUUTEN寄存器。一旦寄存器通过DACLLOCK受到保护,写入访问将被锁定,直到设备复位。

总结

使用DAC模块很简单,只需要配置参考电压,并写入DACVALS寄存器一个数字值即可。参考电压可配置为外部参考VDAC和内部参考电压1.65V和2.5V,并结合增益作为DAC模块最终的参考电压DACREF。

举个例子,配置参考电压为内部参考电压1.65V,增益设置为2,则参考电压DACREF=3.3V,若向DACVALS写入数字值2048,则输出的DAC模块的输出带电压DACOUT=DACVALS×DACREF4096=1.65VDACOUT=\frac{DACVALS\times DACREF}{4096}=1.65VDACOUT=4096DACVALS×DACREF​=1.65V

代码配置 driverlib

#define myDAC0_BASE DACA_BASEvoid myDAC0_init()
{//// Set DAC reference voltage.//DAC_setReferenceVoltage(myDAC0_BASE, DAC_REF_ADC_VREFHI);//// Set DAC gain mode.//DAC_setGainMode(myDAC0_BASE, DAC_GAIN_TWO);//// Set DAC load mode.//DAC_setLoadMode(myDAC0_BASE, DAC_LOAD_SYSCLK);//// Enable the DAC output//DAC_enableOutput(myDAC0_BASE);//// Set the DAC shadow output//DAC_setShadowValue(myDAC0_BASE, 0U);//// Delay for buffered DAC to power up.//DEVICE_DELAY_US(5000);
}

代码配置 bitfield

void myDACA_init()
{DacaRegs.DACCTL.bit.DACREFSEL = 1; // select internal VREFDacaRegs.DACCTL.bit.MODE = 1; // gain is 2DacaRegs.DACCTL.bit.LOADMODE = 0; // load on the next SYSCLK, irrespective of EPWMSYNCPER signalDacaRegs.DACOUTEN.bit.DACOUTEN = 1; // enable DAC outputDacaRegs.DACVALS.all = 2048; // DACVALS
}

F280049C Buffered Digital-to-Analog Converter (DAC)相关推荐

  1. 02 QEMU默认支持的所有开发板、芯片列表

    QEMU默认支持的所有开发板.芯片列表 作者 日期 将狼才鲸 2021-11-12 所属的Gitee源码和工程地址:才鲸嵌入式 / 开源安防摄像机(嵌入式软件) 一.QEMU相关文档 QEMU官方文档 ...

  2. 简要视音频发展编年史

    转自一外国牛人博客 First, I'd like to apologize for not posting any articles lately. I've been busy completin ...

  3. STM32入门——基于RobotMaster——1.准备工作

    19年3月7日 前言:本系列文章主要是描述如何写RM步兵车的具体代码(其中不包括云台),主要目的是通过RM步兵车的一个小车来实现学习STM32,如果有问题可以直接私信我,大概一个月内会将所有部分说完, ...

  4. 计算机英语(31-60)

    每日更新:https://blog.csdn.net/qq_41880352/article/details/94288895 目录 31.Ajax 32.Alert Box 33.Algorithm ...

  5. 模数转换实验中断方式c语言,《数模和模数转换》PPT课件.ppt

    <<数模和模数转换>PPT课件.ppt>由会员分享,可在线阅读,更多相关<<数模和模数转换>PPT课件.ppt(35页珍藏版)>请在装配图网上搜索. 1 ...

  6. html文档头部标记,下列选项中,属于HTML文档头部相关标记的是( )。

    [单选题]Culture is a key component in business and has an impact on (). [单选题]一个场外因素试图阻止球越过立柱间和横梁下沿的球门线进 ...

  7. 【STM32】DAC相关函数和类型

    00. 目录 文章目录 00. 目录 01. DAC简介 02. 相关类型 03. 相关函数 04. 结构体封装 05. 预留 06. 附录 07. 声明 01. DAC简介 STM32F4的DAC模 ...

  8. 基于FPGA的ADC和DAC设计

    使用verilog语言设计ADC和DAC转换 AD转换就是模数转换.顾名思义,就是把模拟信号转换成数字信号.采用TLV1544转换 数模转换器(Digital to Analog Converter) ...

  9. 51单片机DAC数模转换

    51单片机DAC数模转换 DAC介绍 1.DAC简介 DAC(Digital to analog converter)即数字模拟转换器,它可以将数字信号转换为模拟信号.它的功能与 ADC 相反. 2. ...

最新文章

  1. c语言程序设计1.9例题
  2. 3d目标检测_CVPR 2020 |基用于3D目标检测的层级图网络
  3. 委外订单_ERP软件教程:金蝶ERP的委外加工业务流程(一)
  4. Windows下gmssl使用记录
  5. 从V1到V4,让你读懂YOLO原理——深度AI科普团队
  6. fastdfs文件上传 read timeout_121FastDFS实现文件上传下载
  7. java怎么修改订单状态_在WooCommerce中自定义订单状态更改时发送电子邮件通知
  8. windows 用户管理
  9. net core引用外部dll发布后报错找不到文件
  10. EncryptPad—Linux中好用的加密文本编辑器
  11. 路由器与交换机组网性能的综合对比分析
  12. java实现文本编辑器
  13. 丁昊 北大计算机,北大、清华共17人!2018自主招生等类型入选名单公示,苏州333人!...
  14. eclipse SWT 中实现工程图标最小化到托盘,并只能右键托盘图标选择关闭
  15. C语言URL解析器(代码分享)
  16. 搭建企业级微信公众号管理平台(三)----注册码实现与校验,Redis存储
  17. java_web需要哪些技术
  18. 自定义NavigationBar的思路
  19. Java 语言中的实例初始化块 ( IIB) 详解
  20. node配置淘宝镜像

热门文章

  1. 打飞机游戏(Appinventor练习)
  2. 电磁波的原理以及信号转换
  3. RecyclerView---高仿网易新闻客户端
  4. TJOI2013 黄金矿工(01背包改)
  5. iOS进阶开发-iOS性能优化-关东升-专题视频课程
  6. Texture(纹理贴图)和Material(材质)概念上的区别
  7. 国光流量计算机ppt,常见问题
  8. Origami、Rosetta-gami系列菌株区别与联系
  9. 37游戏盒子android,37游戏,37游戏盒子安卓版
  10. 人人都是极客网络电子书出炉!!!