3868|3

1140

帖子

0

TA的资源

纯净的硅(初级)

楼主
 

TMS320F280049C 学习笔记15 DAC [复制链接]

280049C有两路DAC,一般用来接示波器,将程序的内部变量输出出来观察,极大的方便了调试。
每个缓冲DAC具有以下功能:

12位可编程内部DAC
可选参考电压源
使用内部VREFHI时可选x1和x2增益
能够与EPWMSYNCPER同步
DAC的框图如图所示:

DAC的参考电压源DACREF可在VDAC和VREFHI之间选择。只有当VREFHI设置为DACREF且使用内部参考模式时,x2增益模式才可用。另外,即使DAC选择x2增益模式,其最大输出电压也不会大于VDDA。下表列出了DAC支持的增益模式组合。在这个表中,x=A或B,X=Don’t Care,VDAC/VREFHI=2.5v,VDDA=3.3v,DACVAL=4095。

例程
官方提供了2个例程,位置在C:\ti\c2000\C2000Ware_3_01_00_00\driverlib\f28004x\examples\dac
在例程中使用了外部参考,LaunchPad需要从3.3V外接一根线。感觉不太实用。

这里根据自己的习惯,使用内部电压参考,并将输出范围设置为码值0-4095对应0-3.3V。也就是按照上表的红色箭头配置。

#include "F28x_Project.h"
#include "device.h"
#include "math.h"

// DA输出值
int16_t dacVal = 2048;

void configureDAC(void);

void main(void)
{
    // 初始化时钟和外设 Initialize device clock and peripherals
    Device_init();
    // InitSysCtrl();  //本工程不能使用寄存器的InitSysCtrl();函数初始化。

    /*//库函数版配置
    // 初始化GPIO并设置为推挽输出 Initialize GPIO and configure the GPIO pin as a push-pull output
    Device_initGPIO();
    GPIO_setPadConfig(DEVICE_GPIO_PIN_LED1, GPIO_PIN_TYPE_STD);  // Push-pull output or floating input
    GPIO_setDirectionMode(DEVICE_GPIO_PIN_LED1, GPIO_DIR_MODE_OUT);
    */
    InitGpio();  //寄存器指令配置
//    GPIO_SetupPinMux(DEVICE_GPIO_PIN_LED1, GPIO_MUX_CPU1, 0);
//    GPIO_SetupPinOptions(DEVICE_GPIO_PIN_LED1, GPIO_OUTPUT, GPIO_PUSHPULL);


    // 初始化PIE并清空PIE寄存器,关闭CPU中断
    // Initialize PIE and clear PIE registers. Disables CPU interrupts.
    Interrupt_initModule();

    // 初始化PIE向量表
    // Initialize the PIE vector table with pointers to the shell Interrupt
    // Service Routines (ISR).
    Interrupt_initVectorTable();

    configureDAC();

    // Enable Global Interrupt (INTM) and realtime interrupt (DBGM)
    EINT;
    ERTM;

    for(;;)
    {
        dacVal=dacVal<0?0:dacVal;
        dacVal=dacVal>4095?4095:dacVal;
        DAC_setShadowValue(DACA_BASE, dacVal);
        DEVICE_DELAY_US(2);
    }
}

//
// 配置DACA,使用内部1.65V基准,设置输出范围为0-3.3V
//
void configureDAC(void)
{
    // 选择内部1.65V参考
    EALLOW;
    AnalogSubsysRegs.ANAREFCTL.bit.ANAREFA2P5SEL = 0;

    // 使能内部参考
    AnalogSubsysRegs.ANAREFCTL.bit.ANAREFASEL = 0;
    EDIS;
    DAC_setReferenceVoltage(DACA_BASE, DAC_REF_ADC_VREFHI);

    // DAC输出增益2倍
    DAC_setGainMode(DACA_BASE, DAC_GAIN_TWO);

    // 使能DAC输出
    DAC_enableOutput(DACA_BASE);

    // 设置DAC影子寄存器输出0
    DAC_setShadowValue(DACA_BASE, 0);

    // 延迟,等待DAC上电启动
    DEVICE_DELAY_US(10);
}


 

最新回复

好文章啊   详情 回复 发表于 2024-1-10 13:59
 
点赞 关注

回复
举报

1633

帖子

0

TA的资源

五彩晶圆(初级)

沙发
 
TMS320F280049C,这个和2812有关系吗?以前用过2812和28335
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

好文章

 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

4
 

好文章啊

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表