3447|4

1071

帖子

7

TA的资源

纯净的硅(中级)

楼主
 

LPC1500体验 + (DAC-简单的波形输出) [复制链接]

                折腾了一下午,总算是把 LPC1549 的DAC 调出来了,12位deAD,就一个通道。

                虽然手上有例程,原版是这样的:

int main(void)
{
    uint32_t *pulSrc_addr;
    uint32_t *pulDest_addr;
    uint32_t i;
    SystemCoreClockUpdate();

    GPIOInit();                                                         /* 时能GPIO时钟,关闭复位       */                                          

    GPIOSetDir(LED_PORT, LED1, 1);                                      /* 设置PI00.3成输出             */
    GPIOSetDir(LED_PORT, LED2, 1);                                      /* 设置PI00.4成输出             */
    GPIOSetBitValue(LED_PORT,LED1,LED_OFF);                             /* 关闭所有LED                  */
    GPIOSetBitValue(LED_PORT,LED2,LED_OFF);
#if DAC_DMA_ENABLE

                                                                        /* Initialize DMA               */
    DMA_Init();

    pulSrc_addr =  (uint32_t *)DMA_SRC;
    for ( i = 0; i < DAC_DMA_SIZE/4; i++ )
    {
        *pulSrc_addr++ = (i<<4) & 0xFFFFFFFF;
    }

    CHANNEL_DESCRIPTOR(DMAREQ_DAC)->Src = (uint32_t)(DMA_SRC + DAC_DMA_SIZE -4);
    CHANNEL_DESCRIPTOR(DMAREQ_DAC)->Dst = (uint32_t)(&LPC_DAC->VAL);
    CHANNEL_DESCRIPTOR(DMAREQ_DAC)->Link = (uint32_t)0x0;
    LPC_DMA_CH(DMAREQ_DAC)->CFG = CFG_PERIPHREQEN;
    LPC_DMA_CH(DMAREQ_DAC)->XFERCFG = XFERCFG_CNT(DAC_DMA_SIZE/(0x1<                     | XFERCFG_WIDTH(WIDTH32) | XFERCFG_CFGVALID;

                                                                        /* Enable DMA channels          */
    LPC_DMA->ENABLESET0 = 0x01<
                                                                        /* Initialize DAC               */
    DACDMAInit( 0x1 );
#else
    /*
     * Initialize DAC. DAC output increments based on the trigger, either timed or external, inside the DAC handler.
     */
#if TIMER_TRIG_ENABLED
    DACInit( 0x10 );                                                    /* 每次DAC产生中断的时间        */
#else
    /* if timer trigger is not enabled, parameter has no use. */
    DACInit( 0 );
#endif
    LPC_DAC->CTRL |= DAC_BIAS(0);                                       /* 配置DAC控制器                */
#endif   
    /*
     * 每次DAC转换完成会产生中断,在中断中增加DAC的转换值
     */
    while(1) {
        GPIOSetBitValue(LED_PORT,LED1,LED_ON);                          /* 打开的LED1                   */
        myDelay(1);                                                     /* 延时0.5s                     */

        GPIOSetBitValue(LED_PORT,LED1,LED_OFF);                         /* 关闭的LED1                   */
        myDelay(1);

        GPIOSetBitValue(LED_PORT,LED2,LED_ON);                          /* 打开的LED2                   */
        myDelay(1);

        GPIOSetBitValue(LED_PORT,LED2,LED_OFF);                         /* 关闭的LED2                   */
        myDelay(1);
    }
}

/*********************************************************************************************************
  End Of File
*********************************************************************************************************/



这个效果是怎么样的我也不知道,因为调不出来,最后实在是弄不下去了,开始自己改,然后然后然后就得了............

没用 DMA ,就单纯的DAC,做了个简单到爆的信号发生器,暂且算是吧







可以输出的最高频率是 7点多K,当然也不是7k以内的就可以任意输出...............哈哈  不要在意细节,呀

修改之后的程序是这样的
int main(void)
{
    uint32_t j=0,k=1;
    SystemCoreClockUpdate();

    DACInit( 0x01 );                                                    /* 每次DAC产生中断的时间        */       
        LPC_DAC->VAL = (0x2ff << 4) & 0x0000FFFF;

    while(1)
        {

                  LPC_DAC->VAL = (j << 4) & 0x0000FFFF;
                  
                  if(k==1)
                        j += 0xf;
                  else if(k==0)
                        j -= 0xf;
                       
                  if(j>0xfff)
                                k = 0;
                  if(j<=0)
                                k = 1;
    }
}




IMG_20140811_194634.jpg (807.71 KB, 下载次数: 0)

IMG_20140811_194634.jpg

IMG_20140811_194746.jpg (712.55 KB, 下载次数: 0)

IMG_20140811_194746.jpg

DAC.zip

440.21 KB, 下载次数: 22

此帖出自NXP MCU论坛

最新回复

学习了,支持下  详情 回复 发表于 2014-8-12 19:03
点赞 关注
 

回复
举报

2万

帖子

74

TA的资源

管理员

沙发
 
不错 楼主继续加油 :)
此帖出自NXP MCU论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
个人签名

加油!在电子行业默默贡献自己的力量!:)

 
 

回复

1071

帖子

7

TA的资源

纯净的硅(中级)

板凳
 
            
      又重新调试了下,最高频率是可以达到更高的,改变每次输出的 增/减 量 就可以,不过增/减 的量太大的话,波形就没那么细腻了






此帖出自NXP MCU论坛
 
 
 

回复

1071

帖子

7

TA的资源

纯净的硅(中级)

4
 




此帖出自NXP MCU论坛
 
 
 

回复

196

帖子

0

TA的资源

一粒金砂(高级)

5
 
学习了,支持下
此帖出自NXP MCU论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表