查看: 2024|回复: 2

[求助] DAC 为什么只输出0 或者 3.3V?希望各位大神给出建议

[复制链接]

该用户从未签到

4

主题

17

帖子

0

新手上路

Rank: 1

积分
47
最后登录
1970-1-1
发表于 2014-12-29 16:55:46 | 显示全部楼层 |阅读模式
片子用的是MK60DN512VLL10这是我的初始化代码:
  SIM->SCGC2 |= SIM_SCGC2_DAC0_MASK ;     
         dac->C0 = (
                                                         DAC_BFB_PTR_INT_DISABLE|// 缓冲区置底中断禁止   
                                                         DAC_BFT_PTR_INT_DISABLE|// 缓冲区置顶中断禁止         
                                                         DAC_BFWM_INT_DISABLE   | // 水印中断禁止     
                                                         DAC_HP_MODE            |         //   高功耗
                                                         DAC_SW_TRIG_STOP    |       // 软触发无效 0x00
                                                         DAC_C0_DACTRGSEL_MASK        |     //     
                                                         DAC_C0_DACRFS_MASK                |//参考电压 3.3v   
                                                         DAC_ENABLE              //                使能
                                                         );  

         dac->C1 = (
                                                         DAC_BF_DISABLE           |       //DAC缓冲区禁止   
                                                         DAC_BF_NORMAL_MODE     | //正常工作模式
                                                         DAC_BFWM_1WORD           |//缓冲区水印1字
                                                         DAC_DMA_DISABLE           //DMA禁止
                                                         ) ;

设置DA值得代码为:
        dac->DAT[0].DATL = (buffval    &   0x0ff);  
        dac->DAT[0].DATH = (buffval   &    0xf00) >>8;

buffval的值 小于 0x20左右,DA输出(用示波器看27引脚) 为0 V
buffval   大于0x20 DA输出 为3.3V
按理说  输入可以是0~4096 个值,会产生不同的电压的啊,但是结果只有两个,请版上各位大神解决啊!!谢谢啦
希望各位大神给出建议,让我动手试试,感激不尽!!!
我知道答案 目前已有2人回答
回复

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2014-12-30 15:25:34 | 显示全部楼层
楼主参考下K60D100的代码: [url=https://www.freescale.co
m/webapp/sps/download/license.jsp?colCode=KINETIS512_V2_SC&location=null&WT_TYPE=Snippets,%20Boot%20Code,%20Headers,%20Monitors,%20etc.&WT_VENDOR=FREESCALE&WT_FILE_FORMAT=zip&WT_ASSET=Downloads&fileExt=.zip&Parent_nodeId=1333141411984714199192&Parent_pageType=product]KINETIS512_V2_SC[/url]
里面有一个DAC_DEMO的,

case 2,初始化把参考电压改为VDDA:
void test_dac_buffer_mode_normal(void)
{
    int j = 0;

    _dac0_reg_init();//reset DAC0 value to default reset value;  
    _dac_buf_init( DAC0_BASE_PTR,
                   DAC_BF_NORMAL_MODE,
                   //DAC_SEL_VREF,
                   DAC_SEL_VDDA,
                   DAC_SEL_SW_TRIG,
                   DAC_SET_PTR_AT_BF(0),
                   DAC_SET_PTR_UP_LIMIT(15) );
    while (1)
    {
        DAC_C0_REG(DAC0_BASE_PTR) |= DAC_SW_TRIG_NEXT; //SW trigger to advance to DAC0's next word buffer
        for (j=0;j<10000;j++){}  // random delay
    }
}

然后输出结果是一个锯齿波。
你这边首先需要检查下你的VDDA是不是接了3.3V。

回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

802

帖子

0

金牌会员

Rank: 6Rank: 6

积分
1763
最后登录
1970-1-1
发表于 2015-1-5 11:26:42 | 显示全部楼层
比较出来是0V和3.3V吗
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-10-6 13:59 , Processed in 0.080151 second(s), 23 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表