F280049C Buffered Digital-to-Analog Converter (DAC)

news2024/11/19 0:20:49

目录

  • 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的理想输出通过以下公式计算

D A C O U T = D A C V A L A × D A C R E F 4096 DACOUT = \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模块的输出带电压 D A C O U T = D A C V A L S × D A C R E F 4096 = 1.65 V DACOUT=\frac{DACVALS\times DACREF}{4096}=1.65V DACOUT=4096DACVALS×DACREF=1.65V

代码配置 driverlib

#define myDAC0_BASE DACA_BASE

void 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 VREF
    DacaRegs.DACCTL.bit.MODE = 1; // gain is 2
    DacaRegs.DACCTL.bit.LOADMODE = 0; // load on the next SYSCLK, irrespective of EPWMSYNCPER signal
    DacaRegs.DACOUTEN.bit.DACOUTEN = 1; // enable DAC output
    DacaRegs.DACVALS.all = 2048; // DACVALS
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/125084.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Blender和C4D有哪些不同?选Blender还是C4D?

众所周知,Blender和Cinema 4D是美术界最著名的两个名字。在比较这两款软件的时候,我们要仔细的看不同的方面。因此,您如何知道使用哪一个以及每个的关键方面是什么,例如渲染、建模、社区等等!Cinema 4D 是那些希望在电…

Doris(五)-监控、报警、优化、数据备份及恢复

目录1、监控和报警1.1、Prometheus1.2、Grafana2、优化2.1、查看 QueryProfile2.1.1、使用方式2.1.2、参数说明2.1.3、调试方式2.2、 Join Reorder2.2.1 原理2.2.2 示例2.3 Join 的优化原则2.4 导入导出性能优化2.4.1 FE 配置2.4.3 性能分析2.4.4 Broker 导入大文件2.5 Bitmap …

sharepoint 配置app id secret 用postman上传文件

配置APP ID 第一部是配置APPID,可以访问 https://{tenantName}.sharepoint.com/_layouts/15/appregnew.aspx 或者访问具体某个页面下的 https://{tenantName}.sharepoint.com/sites/testUpload/_layouts/15/appregnew.aspx 点击生成即可生成客户端的id和secret ti…

kubernetes控制器之StatefulSet

目录 一、无状态与有状态 1.1无状态 1.2有状态 二、StatefulSet 控制器 2.1 StatefulSet 控制器概述 2.2StatefulSet 控制器:网络标识 2.3StatefulSet 控制器:独享存储 一、无状态与有状态 Deployment控制器设计原则: 管理的所有Pod一…

TiDB丨Etcd API 未授权访问漏洞的修复

文章目录一、前言二、集群环境三、漏洞整改建议方案一方案二四、方案实施五、可能存在的风险六、总结一、前言 Etcd是一个采用HTTP协议的健/值对存储系统,它是一个分布式和功能层次配置系统,可用于构建服务发现系统。用于共享配置和服务发现的分布式&am…

KubeEdge云原生边缘计算公开课03——云原生边缘计算学术研究现状与趋势

KubeEdge云原生边缘计算公开课03——云原生边缘计算学术研究现状与趋势曹建农:Collaborative Edge ComputingEdge Computing: the Driven force of AIoTThe Emergence of AIoTEdge ComputingCurrent Research on Edge ComputingComputation at EdgeIntelligence at …

MCU-51:LED点阵屏

之前我们介绍了控制LED灯亮灭的操作,今天我们要介绍一下控制LED点阵屏亮灭的操作,8*8的LED点阵屏,可以理解为八行或者八列LED灯的一个组合,可以使用它来显示一些字体与图案。 一、点阵屏介绍 1.1 简介 LED点阵屏由若干个独立的…

八、购物车案例

一、购物车案例 1.1、使用npm i命令&#xff0c;安装依赖 1.2、编写页面布局 App.vue <template><div class"app-container"><Header></Header><Goods></Goods><Footer></Footer></div> </template>…

【直播教程】直播间没人看?5大技巧教你提升!

直播是连接店铺、品牌、产品和消费者之间的桥梁。人是视觉动物&#xff0c;店铺的产品、团队和服务是后端的内容&#xff0c;产品再好&#xff0c;团队再强大&#xff0c;前端的消费者看不到&#xff0c;背后的努力都是徒然。所以&#xff0c;在粉丝对店铺、对品牌不熟悉的情况…

CouchDB(1):apache CouchDB介绍与安装

1 apache CouchDB介绍 Apache的CouchDB是⼀个免费的开源的数据库。 官网&#xff1a;https://couchdb.apache.org/ 其主要特点如下&#xff1a; 1.schema free &#xff08;不需要提前设计表&#xff09;2.documented oriented &#xff0c; json structure data(⾯向⽂档)3…

openresty配置资源访问控制

openresty配置资源访问控制 介绍 我们这的需求是&#xff0c;arcgis server发布了很多图层数据&#xff0c;这些数据需要被用户申请后才能访问。申请后给用户一个地址和key&#xff0c;让用户可以用key和地址访问地图资源。 这里我准备使用openresty和认证服务&#xff08;j…

电商API接口开发系列,亲测有效,请求示例说明

在电商运营活动中&#xff0c;价格是贯穿始终的关键因素&#xff0c;而品牌方有效利用价格数据也能够推动企业更好的发展。 当品牌方能够精准获取商品的到手价时&#xff0c;有利于做好商品的定价复盘工作、后续的价格分析工作&#xff0c;也能够为后面的调价作参考&#xff1…

分享| 如何在自有App中引入小游戏?

之前有跟大家分享过ios系统上引入FinClip SDK&#xff0c;并将小程序游戏运行到自有App 中&#xff0c;这周就继续分享如何在Android系统中引入FinClip SDK。 近期FinClip 官方正在举行小游戏支持的功能内测&#xff0c;有兴趣的朋友可以去看看。手动指引&#xff1a;小游戏内…

多寄存器内存访问指令与栈

目录 一、多寄存器内存访问指令 二、多寄存器内存访问指令的寻址方式 三、栈的种类与使用 3.1栈的概念 3.2栈的分类 四、栈的应用举例 4.1叶子函数的调用过程举例 4.2非叶子函数的调用过程举例 一、多寄存器内存访问指令 MOV R1, #1 MOV R2, #2 MOV R3…

什么是物联网安全?

物联网安全是专注于保护物联网中连接的设备和网络的技术领域。物联网涉及将互联网连接添加到相互关联的计算设备、机械和数字机器、物体、动物或人的系统中。每个“事物”都提供了一个唯一的标识符以及通过网络自动传输数据的能力。如果设备没有得到适当的保护&#xff0c;允许…

寄存器模型的集成

前言&#xff1a;当拿到寄存器模型和总线后&#xff0c;就要实现总线适配器&#xff0c;这就是集成的过程。 接下来需要考虑选择与DUT寄存器接口一致的总线UVC, 该UVC会提供硬件级别的访问方式。 要完成一次硬件级别的总线传输&#xff0c; 往往需要考虑给出地址、 数据队列、 …

网鼎杯2020青龙组——filejava通关思路

目录 1、启动靶场&#xff0c;访问页面 2、BP抓包 &#xff08;三&#xff09;代码审计 1&#xff0e;XMLReader 2&#xff0e;SAXBuilder 3&#xff0e;SAXReader 4&#xff0e;SAXParserFactory 5&#xff0e;Digester 6&#xff0e;DocumentBuilderFactory 漏洞利用 0x0…

C++--数据结构--图解B树--B+树--B*树--0718 19

1、常见的搜索结构 种类 数据格式时间复杂度顺序查找无要求O(N)二分查找有序O(log_2 N)二叉搜索树无要求O(log_2 N)二叉平衡树无要求O(log_2 N)哈希无要求O(1) 如果数据量很大&#xff0c;比如有100G数据&#xff0c;无法一次放进内存中&#xff0c;那就只能放在磁盘上了…

互联网+时代的到来,让一站式婚庆管理系统成为潮流

自20世纪90年代初中国第一家婚庆公司成立至今&#xff0c;婚庆市场是越做越大。作为新兴产业的婚庆行业蕴藏着巨大的商机&#xff0c;婚庆市场空间日趋扩大&#xff0c;婚庆产业逐渐成为前景看好的朝阳产业。因此&#xff0c;市面上的婚庆企业也越来越多。但是想要在众多同行中…

Codeforces Round #841 (Div. 2) and Divide by Zero 2022 A-D

等System test的时候顺便水一篇吧233&#xff0c;感觉题目挺好的&#xff0c;但是我C、D都快要调完了&#xff0c;还是难受。 应该是我参加的今年最后一场比赛了。 Codeforces Round #841 (Div. 2) and Divide by Zero 2022 A. Joey Takes Money #include<bits/stdc.h&g…