stm32 dac库函数解读
1、简述:
12位数字输入,电压输出,DAC可以配置为8位或12位模式。有2个输出通道。在双DAC模式下,两个通道可以独立地工作。
特殊功能: 噪声波形生成,三角波形生成,外部触发转换,双DAC同时或者分别转换;每个通道都有DMA功能;
参考电压:2.4V~ 3.3V
因为一旦使能DAC通道,那么相应的GPIO便自动地连接到DAC转换器,因此,模拟输出前应该设置成模拟输入,目的是避免寄生的干扰和额外的功耗;
2、函数介绍:
(1)缺省函数
DAC_Init();
(2)DAC_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
(3)DAC_Cmd(DAC_Channel_1,EANBLE); DAC通道使能函数
(4)DAC_DMACmd(DAC_Channel_1,ENABLE); 如果要用到DMA到DAC那么就要使能哪个DAC通道
(5)DAC_SoftwareTriggerCmd(DAC_Channel_1, ENABLE);软件触发使能函数,一般单通道时候使用
(6)DAC_DualSoftwareTriggerCmd(ENABLE);如果要同时控制两个DAC通道,那么就要使能此函数
(7)DAC_Wave GenerationCmd(DAC_Channel_1, DAC_Wave_Noise, ENABLE);波形发生使能函数,可以选择哪个通道以及噪声或者三角波波形
(8)DAC_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
(9)DAC_SetChannel2Data(DAC_Align_12b_L, 0x8880);同理(8)
(10)DAC_SetDualChannelData(DAC_Align_8b_R, 0x40, 0xF1);同理(8)
(11)u16 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、开启GPIOA和DAC的时钟。注意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库函数解读的更多相关文章
- 解析 STM32 的库函数
解析 STM32 的库函数意法半导体在推出 STM32 微控制器之初,也同时提供了一套完整细致的固件开发包,里面包含了在 STM32 开发过程中所涉及到的所有底层操作.通过在程序开发中引入这样的固件开 ...
- 解析STM32的库函数
意法半导体在推出STM32微控制器之初,也同时提供了一套完整细致的固件开发包,里面包含了在STM32开发过程中所涉及到的所有底层操作.通过在程序开发中引入这样的固件开发包,可以使开发人员从复杂冗余的底 ...
- STM32 DAC的配置与使用
本博文转自:http://blog.chinaunix.net/uid-24219701-id-4101802.html STM32 的 DAC 模块(数字/模拟转换模块)是 12 位数字输入,电压输 ...
- stm32 dac 配置过程
DAC模块的通道1来输出模拟电压,其详细设置步骤如下: 1)开启PA口时钟,设置PA4为模拟输入. STM32F103ZET6的DAC通道1是接在PA4上的,所以,我们先要使能PORTA的时钟,然后设 ...
- STM32—DAC配置
文章目录 一.DAC介绍 二.主要寄存器说明 三.代码及配置 一.DAC介绍 ADC是模数转换器,可以将模拟电压转换位数字信号:DAC是数模转换器,可以将数字信号转换为模拟电压. STM32F103Z ...
- stm32 DAC输出音频
#define DAC_DHR8R1_Address 0x40007410 // Init Structure definition DAC_InitTypeDef DAC_InitStructure ...
- stm32 DAC配置
VDDA 和 VSSA 为 DAC 模块模拟部分的供电,而 Vref+则是 DAC 模块的参考电压.DAC_OUTx 就是 DAC 的 输出通道了 (对应 PA4 或者 PA5 引脚). 由第一张图可 ...
- STM32启动过程解读与跟踪验证
经过查阅各种官方文献和对代码进行单步跟踪,详细地叙述了STM32加电启动的具体过程.对于关键性的语句都指明了出处.下面将学习成果分享给大家,由于笔者知识有限,不当之处敬请指出. 为了更好的说明问题,先 ...
- stm32 中库函数、结构体、地址的强制类型转换、相应特殊功能寄存器之间的关系
以一个挂接在APB2上的外设函数使能为例 A : RCC_APB2PeriphClockCmd():时钟使能函数 1 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFI ...
随机推荐
- ios CoreBluetooth 警告 is being dealloc'ed while pending connection
ios CoreBluetooth 警告 is being dealloc'ed while pending connection CoreBluetooth[WARNING] <CBPerip ...
- svn 大杂烩
svn : trunk 日常开发 branch 多版开发,或者修复bug,测试 tag 开发到一阶段打一个tag,给外部使用 属性externals:可以引用外部的公共工程.这个工程最好是稳定的,不 ...
- 浅谈Java中的深拷贝和浅拷贝
转载: 浅谈Java中的深拷贝和浅拷贝 假如说你想复制一个简单变量.很简单: int apples = 5; int pears = apples; 不仅仅是int类型,其它七种原始数据类型(bool ...
- WinForm应用程序之注册模块的设计与实现
Posted on 2012-11-13 10:21 星星之火116 阅读(3260) 评论(4) 编辑 收藏 我们在安装一些桌面应用程序的时候,往往在会有提示当前用户使用的是试用版,要进行注册.刚好 ...
- 5.5 Selenium2中的元素定位
WebDriver的更加面向对象的方式大大降低了Selenium的入门门槛,对Web元素的操作也非常之简单易学.实际项目用起来,工作量最大的部分就是你如何解析定位到你的目标项目页面中的各种元素.好比你 ...
- selenium+python笔记7
#!/usr/bin/env python # -*- coding: utf-8 -*- """ @desc: 测试126邮箱的登陆功能 1.使用公共方法public. ...
- 8个实用的页面布局和用户界面jQuery插件
网页设计师和网页开发人员在做项目的时候可能会有一些页面的布局或者对于UI有一些特定的要求.可能一些需求不能单独使用CSS就能实现的.于是很多时候开发人员都会消耗大量的时间和精力去写一些JS来协助实现. ...
- Touch ID集成
作者感言 这个国庆由于种种原因, 过的不太安稳, 搬家, 办证, 东跑西跑, 忙的压根就不像是在过节....不过算了, 挑最后一天写写博文.最后:如果你有更好的建议或者对这篇文章有不满的地方, 请联系 ...
- Java 集合系列 16 HashSet
java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...
- 一份C++线程池的代码,非常实用
#ifndef _ThreadPool_H_ #define _ThreadPool_H_ #pragma warning(disable: 4530) #pragma warning(disable ...