1、简述:

12位数字输入,电压输出,DAC可以配置为8位或12位模式。有2个输出通道。在双DAC模式下,两个通道可以独立地工作。

特殊功能: 噪声波形生成,三角波形生成,外部触发转换,双DAC同时或者分别转换;每个通道都有DMA功能

参考电压:2.4V~ 3.3V

因为一旦使能DAC通道,那么相应的GPIO便自动地连接到DAC转换器,因此,模拟输出前应该设置成模拟输入,目的是避免寄生的干扰和额外的功耗;

2、函数介绍:

1)缺省函数

DAC_Init();

2DAC_Init(DAC_Channel_1,&DAC_InitStructure);初始化函数

DAC_InitTypeDef            DAC_InitStructure;

初始化的设置有四个:

❶DAC_Trigger:指定所选DAC的触发源,有9个触发源可以选择:

DAC_Trigger_None

DAC_Trigger_T6_TRGO

DAC_Trigger_T8_TRGO

DAC_Trigger_T7_TRGO

DAC_Trigger_T5_TRGO

DAC_Trigger_T2_TRGO

DAC_Trigger_T4_TRGO

DAC_Trigger_Ext_IT9

DAC_Trigger_Software

❷DAC_WaveGeneration :指定DAC是否产生噪声波形,三角波或者不产生以上波形

DAC_WaveGeneration_None

DAC_WaveGeneration_Noise

DAC_WaveGeneration_Triangle

❸DAC_LFSRUnmask_TriangleAmplitude:如果选择了产生噪声波形或者三角波,那么这里可以选择噪声波形的LFSRUnMask屏蔽位 或者三角波的最大幅度

❹DAC_OutputBuffer:指定输出是否要缓冲一下

DAC_OutputBuffer_Enable

DAC_OutputBuffer_Disable

3DAC_Cmd(DAC_Channel_1,EANBLE); DAC通道使能函数

4DAC_DMACmd(DAC_Channel_1,ENABLE)如果要用到DMADAC那么就要使能哪个DAC通道

5DAC_SoftwareTriggerCmd(DAC_Channel_1, ENABLE);软件触发使能函数,一般单通道时候使用

6DAC_DualSoftwareTriggerCmd(ENABLE);如果要同时控制两个DAC通道,那么就要使能此函数

7DAC_Wave GenerationCmd(DAC_Channel_1, DAC_Wave_Noise, ENABLE);波形发生使能函数,可以选择哪个通道以及噪声或者三角波波形

8DAC_SetChannel1Data(DAC_Align_12b_R, 0x500);

选择通道1的数据位数和对齐方式,以及具体输出值。三种对齐数据位方式:

DAC_Align_12b_R  12位右对齐,数值小于4096

DAC_Align_12b_L 12位左对齐,数值小于0XxFFF0

DAC_Align_8b_R 8位右对齐,数值小于256

9DAC_SetChannel2Data(DAC_Align_12b_L, 0x8880);同理(8

10DAC_SetDualChannelData(DAC_Align_8b_R, 0x40, 0xF1);同理(8)

11u16 DataValue;

DataValue = DAC_GetDataOutputValue(DAC_Channel_1); 得到当前DAC输出的值

3、具体应用:

3.1 产生一个直流电压:

GPIOA_04 是DAC1 , GPIOA_05 是DAC2

1、设置GPIOA_04 05 为模拟输入;

GPIO_InitTypeDef GPIO_InitStructure;

GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_4 | GPIO_Pin_5;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;

GPIO_Init(GPIOA, &GPIO_InitStructure)

2、开启GPIOADAC的时钟。注意GPIOA的时钟是在APB2,DAC的时钟则是在APB1

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);

3、配置DAC输出直流电压

DAC_InitTypeDef            DAC_InitStructure;

DAC_InitStructure.DAC_Trigger = DAC_Trigger_None;//选择DAC的触发输出,当产生波形时可用定时器触发

DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None;

DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Disable;

DAC_Init(DAC_Channel_1, &DAC_InitStructure);

DAC_Cmd(DAC_Channel_1, ENABLE);

DAC_SetChannel1Data(DAC_Align_12b_R,4095);

stm32 dac库函数解读的更多相关文章

  1. 解析 STM32 的库函数

    解析 STM32 的库函数意法半导体在推出 STM32 微控制器之初,也同时提供了一套完整细致的固件开发包,里面包含了在 STM32 开发过程中所涉及到的所有底层操作.通过在程序开发中引入这样的固件开 ...

  2. 解析STM32的库函数

    意法半导体在推出STM32微控制器之初,也同时提供了一套完整细致的固件开发包,里面包含了在STM32开发过程中所涉及到的所有底层操作.通过在程序开发中引入这样的固件开发包,可以使开发人员从复杂冗余的底 ...

  3. STM32 DAC的配置与使用

    本博文转自:http://blog.chinaunix.net/uid-24219701-id-4101802.html STM32 的 DAC 模块(数字/模拟转换模块)是 12 位数字输入,电压输 ...

  4. stm32 dac 配置过程

    DAC模块的通道1来输出模拟电压,其详细设置步骤如下: 1)开启PA口时钟,设置PA4为模拟输入. STM32F103ZET6的DAC通道1是接在PA4上的,所以,我们先要使能PORTA的时钟,然后设 ...

  5. STM32—DAC配置

    文章目录 一.DAC介绍 二.主要寄存器说明 三.代码及配置 一.DAC介绍 ADC是模数转换器,可以将模拟电压转换位数字信号:DAC是数模转换器,可以将数字信号转换为模拟电压. STM32F103Z ...

  6. stm32 DAC输出音频

    #define DAC_DHR8R1_Address 0x40007410 // Init Structure definition DAC_InitTypeDef DAC_InitStructure ...

  7. stm32 DAC配置

    VDDA 和 VSSA 为 DAC 模块模拟部分的供电,而 Vref+则是 DAC 模块的参考电压.DAC_OUTx 就是 DAC 的 输出通道了 (对应 PA4 或者 PA5 引脚). 由第一张图可 ...

  8. STM32启动过程解读与跟踪验证

    经过查阅各种官方文献和对代码进行单步跟踪,详细地叙述了STM32加电启动的具体过程.对于关键性的语句都指明了出处.下面将学习成果分享给大家,由于笔者知识有限,不当之处敬请指出. 为了更好的说明问题,先 ...

  9. stm32 中库函数、结构体、地址的强制类型转换、相应特殊功能寄存器之间的关系

    以一个挂接在APB2上的外设函数使能为例 A : RCC_APB2PeriphClockCmd():时钟使能函数 1 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFI ...

随机推荐

  1. canvas实现钟表

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. Mongoose学习参考文档

    一.快速通道 1.1 名词解释 Schema : 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力 Model : 由Schema发布生成的模型,具有抽象属性和行为的数据库操作对 Entit ...

  3. css -- 题目汇总

    1.描述下浮动和它的工作原理.模块浮动,使其脱离文档流,并且生成一个块级框.(所以父级撑不开就得到了很好的解释) 2.清除浮动的方法有那些,分别适用于什么情形.clear  ,  父级元素overfl ...

  4. HTML5自学笔记[ 4 ]js中新增的选择器方法

    querySelector():参数与jQuery一样,这个方法获取一组元素中的第一个元素. querySelectorAll():获取一组元素. getElementsByClassName():获 ...

  5. OC 实例方法和类方法区别

         Objective-C里面既有实例方法也类方法.类方法(Class Method) 有时被称为工厂方法(Factory Method)或者方便方法(Convenience method).工 ...

  6. Java 之 I/O 系列 02 ——序列化(一)

    Java 之 I/O 系列 目录 Java 之 I/O 系列 01 ——基础 Java 之 I/O 系列 02 ——序列化(一) Java 之 I/O 系列 02 ——序列化(二) 一 序列化概述 序 ...

  7. 语句--分支语句if case

    语句是指程序命令,都是按照顺序执行的.语句在程序中的执行顺序称为“控制流”或者“执行流”.根据程序对运行时所收到的输入的响应,在程序每次运行时控制流可能有所不同. 语句可以嵌套,可以是以分号结尾的单行 ...

  8. C#语言基础——7月21日

    C#语言基础 一.语言基础 (一).函数的四要素:      名称,输入,输出,加工(二).主函数.输出语句.输入语句:     Static void Main(string[] args)//下划 ...

  9. 淘宝三角做法防CSS2D转换

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. return false取消手机移动端的默认设置

    想做一个语音界面,当长按语音按钮的时候,总会出现移动端什么复制粘贴菜单.然后在JS中加入return false后就消失了,感觉好神奇哦~