历史上的今天
返回首页

历史上的今天

今天是:2024年09月20日(星期五)

正在发生

2018年09月20日 | stm32f407之DAC(操作寄存器)

2018-09-20 来源:eefocus

DAC


Stm32f4内嵌的DAC是12位数字输入,电压输出的数模转换器。DAC可以配置为8位或12位模式,也可以与DMA控制器配合使用。DAC工作在12位模式时,数据可以设置成左对齐或右对齐。DAC模块有2个输出通道,每个通道都有单独的转换器。在双DAC模式下,2个通道可以独立地进行转换,也可以同时进行转换并同步地更新2个通道的输出。DAC可以通过引脚输入参考电压VREF+以获得更精确的转换结果。


        

主要特点:


2个DAC转换器:每个转换器对应1个输出通道


8位或者12位单调输出


12位模式下数据左对齐或者右对齐


同步更新功能


噪声波形生成


三角波形生成


双DAC通道同时或者分别转换


每个通道都有DMA功能


外部触发转换


输入参考电压VREF+


 


 




设置步骤:


1.     设置相关GPIO(PA4、5)。


2.     若时钟源为TIMx更新事件,则设置TIMx。


3.     使能DAC时钟


4.     设置触发源,开启相关触发通道,如果用DMA,是否允许数据错误中断。


5.     如果用DMA。配置相关DMA数据流。


 


 


 


程序:



[plain] view plaincopy

/************************************  

    标题:DAC  

    软件平台:IAR for ARM6.21  

    硬件平台:stm32f4-discovery  

    主频:168M  

      

    author:小船  

    data:2012-02-12  

*************************************/  

  

#include   

#include "MyDebugger.h"  

#include "sintable.h"   

  

  

void main ()  

{     

  

  SCB->AIRCR = 0x05FA0000 | 0x400;  //中断优先级分组 抢占:响应=3:1  

   

  /***GPIO设置***/  

  RCC->AHB1ENR |= (1<<0); //打开GPIOA时钟  

  GPIOA->MODER |= 0x00000F00;//PA4、5模拟模式  

  GPIOA->PUPDR &= 0xfffff0ff;//无上拉无下拉     

    

  /***定时器设置***/  

  RCC->APB1ENR |= (1<<4);//打开TIM6时钟  

  TIM6->PSC = 0;   

  TIM6->ARR = 83;  //使得更新事件频率为1m  

  TIM6->CR2 |=  0x00000020;//更新事件输出  

  TIM6->CR1 |= 1; //开始计时  

    

  /***DAC设置***/  

  RCC->APB1ENR |= (1<<29); //使能DAC时钟  

  DAC->CR &= 0xffff0000;  

  /*  

  使能DMA堵塞中断  

  使能通道1触发  

  */  

  DAC->CR |= ( (1<<13) | (1<<2) );    

  NVIC->IP[54] = 0xA0;  

  NVIC->ISER[1] |= (1<<(54-32));  

   

  /***DMA设置***/  

  RCC->AHB1ENR |= (1<<21); //使能DMA1时钟  

  DAC->CR &= ~(1<<12);//DAC dma发送模式除能  

  DMA1_Stream5->CR &= 0xFFFFFFFE; //除能DMA1_Stream5  

  while(DMA1_Stream5->CR & 0x00000001);//确保DMA可以被设置   

  DMA1->HIFCR |= 0x000004f0;//传送前清空DMA1_Stream5所有中断标志   

  DMA1_Stream5->PAR = (uint32_t)&DAC->DHR12R1;//设置外设地址  

  DMA1_Stream5->M0AR = (uint32_t)SinTable; //设置内存地址  

  DMA1_Stream5->CR |= 0x0002800;//16位数据  

  DMA1_Stream5->NDTR = 1024; //设置dma传输数据的数量  

  /*  

    设置dma通道7,即DAC1  

    优先级Medium  

    传输方向内存到外设  

    内存递增模式  

    循环模式  

  */  

  DMA1_Stream5->CR |= ( 0x0e000000 | 0x00010000 | (1<<6)  

                        | (1<<10) | (1<<8) );   

    

  DMA1_Stream5->CR |= 1; //DMA数据流5使能  

    

  DAC->CR |= (1<<0);   //DAC通道1使能  

  

  DAC->CR |= (1<<12);//DAC dma发送模式使能    

      

  MyDebugger_Init();  

  

  while(1)  

  {  

  };  

}  

  

void TIM6_DAC_IRQHandler(void)  

{  

  if( DAC->SR & (1<<13) )  

  {  

    MyDebugger_LEDs(red, on);  

    DAC->SR &= ~(1<<13);   

  }  

}  


推荐阅读

史海拾趣

FRONTIER公司的发展小趣事

背景:此故事基于假设存在一个专注于超级计算机研发的FRONTIER公司。

发展故事:近年来,随着大数据和人工智能技术的飞速发展,超级计算机在科研、工业等领域的应用越来越广泛。FRONTIER Supercomputing作为该领域的佼佼者,成功研发出了世界上首台突破百亿亿次计算瓶颈的超级计算机——Frontier。该计算机以其卓越的性能和广泛的应用价值,在多个领域取得了突破性成就,如太空探索、气候建模、基因组学等。Frontier的成功不仅为公司赢得了国际声誉,也为全球科技进步贡献了重要力量。

Everett Charles Technologies (ECT)公司的发展小趣事

随着全球电子产业的快速发展和市场竞争的加剧,ECT不断加快全球化战略的实施。公司在全球范围内设立分支机构,积极拓展海外市场,加强与国际知名企业的合作与交流。同时,ECT也注重培养本土人才和创新能力,不断提升公司的核心竞争力。展望未来,ECT将继续秉承“创新、质量、服务”的理念,致力于成为全球领先的电子测试系统供应商和服务商。

以上五个故事概述了Everett Charles Technologies (ECT) 公司的发展历程和关键节点,每个故事都体现了公司在技术创新、市场拓展和全球化战略方面的努力和成果。这些故事不仅展现了ECT的辉煌过去,也预示着其更加美好的未来。

AUK Contractors Co Ltd公司的发展小趣事

随着公司业务的不断扩展,AUK Contractors Co Ltd意识到单一市场已无法满足其增长需求。于是,公司积极寻求国际合作,与多个国家的电子企业建立了战略伙伴关系。通过技术交流和资源共享,公司成功打开了新的市场,实现了业务的快速增长。

DECON公司的发展小趣事

在电子行业中,技术更新换代迅速,DECON公司深知技术创新的重要性。因此,公司不断投入研发资金,引进高端技术人才,加强自主创新,推出了多款具有领先技术的连接器产品。这些产品不仅满足了市场需求,还提高了公司的市场竞争力。同时,公司还积极与国内外知名企业合作,共同研发新产品,推动了电子连接器行业的发展。

Advanced Milliwave Laboratories Inc公司的发展小趣事

AML深知技术创新是企业发展的核心动力。因此,公司始终坚持自主研发和技术创新,不断推出新的微波产品和技术。这些新产品不仅具有更高的性能和更广泛的应用范围,还进一步提升了AML在微波技术领域的竞争力。同时,AML还注重与高校和研究机构的合作,共同开展技术研发和人才培养,为公司的长远发展提供了有力支持。

CUI公司的发展小趣事

近年来,智能化和物联网技术的快速发展为电子行业带来了前所未有的机遇。CUI技术作为实现电子设备智能化和互联互通的关键环节之一,得到了广泛的应用。一些企业针对智能化和物联网的需求,开发出具有特殊功能的CUI材料,如柔性CUI、透明CUI等,为电子产品的创新提供了有力支持。

请注意,以上故事仅为概述性质,并非针对特定公司的实际发展历程。每个公司的具体情况可能因市场环境、技术实力、管理策略等因素而有所不同。如果需要了解特定公司的具体发展故事,建议查阅相关公司的官方网站、新闻报道或行业分析报告。

问答坊 | AI 解惑

求助:单颗LED的电源驱动设计

我现在有一颗LED需要驱动,6.5V,20mA。 需要做一个驱动器,希望可以控制电流大小,不需要连续调节,只需要在0mA和20mA之间切换就行。怎么做最好? 电源有开关电源可以提高。…

查看全部问答>

How to select TVS

This is MicroNotes ,which writed by Kent Walters .Tell you how to select TVS.…

查看全部问答>

关于Protell99的前景

现阶段很多朋友,特别是刚出学校的都喜欢用Protell99,这款软件对于来讲自我感觉确实还不错,但是我有很多朋友并不看好它,认为其POWER PCB更为先进…

查看全部问答>

2808最小系统

这里有高手做过2808的最小系统吗?…

查看全部问答>

uclinux和linux是不是应用层接口一样的?

就是说是不是linux的应用层软件可以不改动直接移植到uclinux上?…

查看全部问答>

eeworld上可用分怎么计算的,回复一个贴子就有10分可用分?回复自己的贴子有没可用分?戴红花什么意思?奖牌表示什么?eeworld上游戏规则是什么?

eeworld上可用分怎么计算的,回复一个贴子就有10分可用分?回复自己的贴子有没可用分?戴红花什么意思?奖牌表示什么?eeworld上游戏规则是什么?…

查看全部问答>

[求助]用汇编实现辛普森积分

怎样用汇编语言实现辛普森数字积分? 下面是C程序,哪位能帮忙搞个汇编版本的?只要有辛普森函数那部分就可以 /*-------复化辛普森求积公式---------*/ #include #include #include #define N 100 /*-------将要被求积的函数------*/ doubl ...…

查看全部问答>

fsdb超过2g的问题

fsdb文件貌似不能超过2g,问题是我现在有一个数据量很大的仿真case,我又想看看出错的波形,怎么办呢?有没有什么办法把fsdb分成若干小的文件(我用的是modelsim)。请大虾指教!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ...…

查看全部问答>

无功功率的影响和谐波的危害

1.无功功率的影响   (1)无功功率的增加,会导致电流增大和视在功率增加,从而使发电机、变压器及其他电气设备容量和导线容量增加。 。同时,电力用户的起动及控制设备、测量仪表的尺寸和规格也要加大。   (2)无功功率的增加,使总电流增大 ...…

查看全部问答>

小弟有一块显示板不知道能做啥用

小弟有一块显示板不知道能做啥用,能DIY点啥呢?是我表哥送给 我的,据说是三星的面板,是做车载显示的,没 有资料, 上图 不知道发在这板块对不对,不对的请管理员移走 …

查看全部问答>