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);   

  }  

}  


关键字:stm32f407  DAC  操作寄存器 引用地址:stm32f407之DAC(操作寄存器)

上一篇:stm32f407之NVIC
下一篇:stm32f407之CAN控制器(操作寄存器)

推荐阅读

随着上周苹果秋季发布会的再一次「缺席」,AirPower 距离它发布的时间已经过去了一年了,而距离其承诺(2018 年)上市的截止日期,还有不到 3 个月的时间。 有很长一段时间,苹果公司已经没有再提及过这款设备,与此同时,有外媒也发现,苹果官网上删掉了大量与 AirPower 相关的信息,现在在苹果官网中只能在 AirPods 以及博茨瓦纳苹果官网的 iP...
本章参考资料:《STM32F4xx参考手册》、《STM32F4xx规格书》、库帮助文档《stm32f4xx_dsp_stdperiph_lib_um.chm》。关于开发板配套的OV2640摄像头参数可查阅《ov2640datasheet》配套资料获知。STM32F4芯片具有浮点运算单元,适合对图像信息使用DSP进行基本的图像处理,其处理速度比传统的8、16位机快得多,而且它还具有与摄像头通讯的专用DCMI接口,所以使...
当一加OnePlus 8和8 Pro在今年早些时候推出时,我们已经知道一加将在今年晚些时候带来其中一款设备的略微好一些的版本。 在这之前经过多个泄露渠道,我们已经看到OnePlus 8T泄露了几次渲染图以及一些详细规格,但今天,有消息表明一加OnePlus 8T最早将在10月14日推出,这意味着它离发布还有不到一个月的时间。一加目前正在筹划OnePlus 8T的发布会,...
业内消息人士表示,无晶圆厂芯片厂商(Fabless)正寻求通过与制造伙伴密切合作,加强在5G射频前端模块(RF FEM)和其他设备市场的部署。据digitimes报道,消息人士称,包括高通、Qorvo和Skyworks在内的射频FEM的主要芯片供应商都拥有各自的生态系统合作伙伴,包括晶圆代工厂和封测厂,以扩大他们在5G射频芯片市场的影响力。对于封测厂商来说,要求用于处理...

史海拾趣

问答坊 | AI 解惑

LED应用前景光芒万丈 异军突起引发新商机

从LED灯到LED名片、LED摄像头,日益广阔的应用范围背后,被誉为“代表照明技术的未来”的LED(新型半导体发光二极管)产业,正在经历着极其快速的增长期。而蕴藏于其间的庞大商机与美好市场前景,则于全球范围内搅动起了一股LED产业的投资热潮。 …

查看全部问答∨

详解嵌入式系统

目前,在嵌入式系统应用领域中,不少人对什么是嵌入式系统不甚了解。有些人搞了十多年的单片机应用,不知道单片机就是一个最典型的嵌入式系统;也有些人在解释什么是嵌入式系统时,不是从定义出发,而是列举了嵌入式系统的一些特点,往往不知所云。 ...…

查看全部问答∨

创意拨号式的水龙头

水资源节约利用的呼声响彻在地球的每个角落,对于节约用水的水龙头设计也层出不穷,并起到了显著的成效,红外感应的应该是现在普遍流行的,但在这里我们所要介绍的虽然不如红外等诸多设计智能,但却充满了趣味性,节约用水的意识也更加的深入人心…

查看全部问答∨

电脑使用GPRS模块拨号出错737检测到环回而上不了网?

各位高手好,    我有一个GPRS模块叫CCLINK, 里面好象是西门子的模块,我平时是用DM500连上网看卫视的,DM500连网很正常,最近想用来连电脑上网,但是怎么配置都不行, 每次XP下拨号完都是出错737:检测到环回, 我反复确认XP下安装336MODEM, ...…

查看全部问答∨

紧急求助

刚开始做猎头,不知道去哪里发贴找人,请高人指点一下。 另外,那位同学是做中间件的,要跳槽跟我联系,邮箱:fanqi2009@gmail.com…

查看全部问答∨

请问以下几句代码有没有问题?

void tt(int dnNum,int nsize) {     char **cTtid;     int i;     if (dnNum > 0 && nsize > 0)     {         cTtid= calloc(dnNum,nsize);   &n ...…

查看全部问答∨

Aurora 8b/10b IP模块的问题

最近在调用Aurora 8b/10b IP模块时,在用modelsim功能仿真时,一切正常。 但是下到FPGA板子上时,channel_up初始化结束的信号一直是“0”,板子上的Tx和Rx是互连的,用chipscope追了时钟和复位信号都是正常的(复位低电平有效注意到了)。  &n ...…

查看全部问答∨

ADS41xx 的电源设计

本帖最后由 dontium 于 2015-1-23 13:40 编辑  ADS41xx 的电源设计 …

查看全部问答∨

ATmega8实现的电视字幕叠加器

  随着数字电视和VOD的推广和流行,这种基于硬件的字幕叠加器恐怕很快就要过时了,但是在某些场合或许还会有一定的应用,比方说跳舞毯等一些简单的设备。 这个叠加器非常简单,使用ATmega8作为CPU,外围电路使用了视频分离芯片LM1881简化了一 ...…

查看全部问答∨

通过LM3S811采集的数据能不能通过keil软件调试

请问各位高手,通过LM3S811采集的数据能不能通过keil软件调试?还有,ADC的采样序列到底是什么意思啊…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved