stm32 dac库函数解读

发布者:EnchantedHeart最新更新时间:2016-12-26 来源: eefocus关键字: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 dac库函数解读

上一篇:STM32下载显示target dll has been cancelled
下一篇:stm32 系统时钟设置

推荐阅读最新更新时间:2024-03-16 15:27

STM32--UART异步通信学习
字符发送的过程描述:在UART的发送过程中先将数据输入到发送数据寄存器中(TDR)此时(TXE)被硬件置1,之后TDR寄存器将数据串行移入到发送移位寄存器中,将数据在TX端口发送,此时(TC)被硬件置1。 发送与接收是逆过程。 UART发送配置步骤: 1.通过USART_CR1寄存器上置位UE来激活USART。 2.编程USART_CR1的M位来定义字长。 3.在USART_CR2中编程停止位的位数。 4.如果采用多缓冲器通信,配置USART_CR3中的DMA使能位(DMAT)。按多缓冲器通信中的描述配置DMA寄存器。 5.利用USART_BRR寄存器选择要求的波特率。 6. 设置USART_CR
[单片机]
STM32--UART异步通信学习
STM32常用通信——USART,IIC,SPI,CAN
STM32常用通信 CAN通信 CAN根据两根线上电位差来判断总线电平,总线电平分为显性电平和隐形电平,两者必居其一,发送方通过控制总线电平发送信息给接收方。 显性电平对应逻辑0,两根线压差2.5V左右,隐形电平对应逻辑1,压差为0。总线上可以挂很多单元,显性电平具有优先权,一个单元 显性电平,则总线为显性。CAN总线起止断有120R的电阻,用于做阻抗匹配,减少回波反射。 CAN的位时序: 同步段SS SS 传播时间段PTS 相位缓冲段1 PBS1 BS1 相位缓冲段2 PBS2 BS2 1位分为四段,每段由若干Tq组成, 波特率=1/(Tq+TBS1+TBS2) TBS1=Tq*(TS1 +1) TBS2=Tq*(
[单片机]
<font color='red'>STM32</font>常用通信——USART,IIC,SPI,CAN
采用STM32的心电采集系统电路设计
  心血管类疾病已经成为威胁人类身体健康的重要疾病之一,而清晰有效的心电图为诊断这类疾病提供了依据,心电采集电路是心电采集仪的 关键部分,心电信号属于微弱信号,其频率范围在0.03~100 Hz之间,幅度在0~5 mV之间,同时心电信号还掺杂有大量的干扰信号,因此,设计良好的滤波电路和选择合适的控制器是得到有效心电信号的关键。基于此,本文设计了以STM32 为控制核心,AD620和OP07为模拟前端的心电采集仪,本设计简单实用,噪声干扰得到了有效抑制。    主控模块电路设计   主控模块的STM32F103VET单片机是控制器的核心,该单片机是ST意法半导体公司生产的32位高性能、低成本和低功耗的增强型单片机,其内核采用 AR
[电源管理]
采用<font color='red'>STM32</font>的心电采集系统电路设计
STM32复习笔记(七)定时器&定时器中断
一、STM32定时器: STM32F10x系列总共最多有8个定时器: 二、三种STM32定时器区别: 三、通用定时器功能特点描述: STM32 的通用 TIMx (TIM2、TIM3、TIM4 和 TIM5)定时器功能特点包括: 位于低速的APB1总线上(APB1) 16 位向上、向下、向上/向下(中心对齐)计数模式,自动装载计数器(TIMx_CNT)。 16 位可编程(可以实时修改)预分频器(TIMx_PSC),计数器时钟频率的分频系数 为 1~65535 之间的任意数值。 4 个独立通道(TIMx_CH1~4),这些通道可以用来作为: ① 输入捕获 ② 输出比较 ③ PWM 生成(边缘或中间对
[单片机]
<font color='red'>STM32</font>复习笔记(七)定时器&定时器中断
stm32 片上flash用作EEPROM(掉电保存)
#if !defined (_FLASH_H) #define _FLASH_H #define FLASH_ADR 0x08010000 //要写入数据的地址 #define u8 INT8U #define u16 INT16U #define u32 INT32U union union_temp16 { unsigned int un_temp16; unsigned char un_temp8 ; // example 16: 0x0102 8: 2 1 }my_unTemp16; typedef struct { u8 apn ; u8 useName ; u8 password ; u8 serverIP
[单片机]
再造STM32---第五部分:使用寄存器点亮 LED 灯
学习本章时,配合《STM32F4xx 中文参考手册》 “通用 I/O(GPIO)” 章节一起阅读,效果会更佳,特别是涉及到寄存器说明的部分。 关于建立工程时使用 KEIL5 的基本操作,请参考前面的章节。 5.1 GPIO 简介: GPIO 是通用输入输出端口的简称,简单来说就是 STM32 可控制的引脚, STM32 芯片的 GPIO 引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能。STM32 芯片的 GPIO 被分成很多组,每组有 16 个引脚,如型号为 STM32F4IGT6 型号的芯片有 GPIOA、 GPIOB、 GPIOC 至 GPIOI 共 9 组 GPIO,芯片一共 176
[单片机]
再造STM32---第五部分:使用寄存器点亮 LED 灯
STM32中断NVIC、EXTI外部中断
eg:STM32F407ZGT6 1:NVIC(嵌套向量中断控制器) 在参考手册的描述中(我就直接Copy了哈): 嵌套向量中断控制器 NVIC 包含以下特性: ● STM32F405xx/07xx 和 STM32F415xx/17xx 具有 82 个可屏蔽中断通道, STM32F42xxx和 STM32F43xxx 具有多达 86 个可屏蔽中断通道(不包括 Cortex™-M4F 的 16 根中 断线) ● 16 个可编程优先级( 使用了 4 位中断优先级) ● 低延迟异常和中断处理 ● 电源管理控制 ● 系统控制寄存器的实现 嵌套向量中断控制器 (NVIC) 和处理器内核接口紧密配合,可以实现低延迟的中断处理和晚
[单片机]
<font color='red'>STM32</font>中断NVIC、EXTI外部中断
怎么使用C语言控制硬件
C语言的应用编程在单片机的领域占了很大一部分,使用的比较多的51单片机和STM32单片机都可以使用MDK软件编写固件。 单片机烧写了固件后可以点亮LED灯,可以驱动ADC检测电压,也可以驱动蜂鸣器发声,这就是简单地控制硬件。稍微复杂一点的,可以驱动NRF2401进行无线的连接,也可以使用ESP8266这类wifi芯片连接网络。 接下来,简单地讲讲如何使用C语言控制硬件。 1、电路连接 简单的模块可以直接使用高低电平来控制,比如红外线发射模块,当你在驱动引脚上的电压达到3.3v,就能发出红外线;然后将电平设置为0v,红外线发射就停止了。 一般而言,单片机的引脚输出电压能够达到3.3v,也是可以点亮红外线LED,但是可能会导致
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved