STM32——DAC

0.比较坑啊

  0)stm32f10x板

  1)【GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;  //模拟输入】

    引脚设置成模拟输入是为了防干扰

  2)【//DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Disable;  //DAC1输出缓存关闭 BOFF1=1】
    【 DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Enable;  //DAC1输出缓存打开,提高端口驱动能力 BOFF1=0】

    第二句才有一定的驱动能力,否则死活连个灯都不亮

    用另外的板子读取过值,2个代码都能输出理想电压;可第1句代码却无法驱动小灯,估计是电流过小;据说要加电压跟随器

  3)我买的板子并未直接将Vref与电源相连;需要自己去提供参考电压



1.

  1)GPIOA的时钟是在APB2,DAC的时钟则是在APB1

  2)DAC的通道引脚在电路图里有

    PA4——DAC_OUT1

    PA5——DAC_OUT2

  3)模式有8位和12位;

    为12位模式时,设置的值在4095以内

  3)流程

    设置GPIOA为模拟输出

    不使用触发功能

    不使用波形发生

    屏蔽、幅值设置

    DAC1输出缓存打开【提高端口驱动能力!】

    初始化DAC通道1

    使能DAC1

    设置DAC值

  4)重复修改值调用只用调用以下2句代码

    DAC_SetChannel1Data(DAC_Align_12b_R, Value);
    DAC_SoftwareTriggerCmd(DAC_Channel_1, ENABLE);



2.代码:PA4口输出 = 3000 / 4095 * Vref 的电压

#include <stm32f10x.h>

void GPIO_Config(void);
void DAC_Config(void);
void DAC_SetValue(int Value);

int main()
{
    GPIO_Config();
    DAC_Config();

    while(1);
}

void GPIO_Config()
{
    GPIO_InitTypeDef GPIO_InitStructure;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE );

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;        //模拟输入
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
}

void DAC_Config()
{
    DAC_InitTypeDef DAC_InitStructure;

    //使能DAC通道时钟
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE ); 

    //不使用触发功能 TEN1=0
    DAC_InitStructure.DAC_Trigger = DAC_Trigger_None;
    //不使用波形发生
    DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None;
    //屏蔽、幅值设置
    DAC_InitStructure.DAC_LFSRUnmask_TriangleAmplitude = DAC_LFSRUnmask_Bit0;
    //DAC1输出缓存关闭 BOFF1=1
//DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Disable;
    //DAC1输出缓存打开,提高端口驱动能力 BOFF1=0
    DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Enable;
    //初始化DAC通道1
    DAC_Init(DAC_Channel_1, &DAC_InitStructure);
    //使能DAC1
    DAC_Cmd(DAC_Channel_1, ENABLE);
    //12位右对齐数据格式设置DAC值
    DAC_SetChannel1Data(DAC_Align_12b_R, 3000);
}

/***************************************
**
**设置通道1输出电压
**反复调用并修改数值仅调用以下2句
**主函数并未使用,备用
**
***************************************/
void DAC_SetValue(int Value)
{
    DAC_SetChannel1Data(DAC_Align_12b_R, Value);
    DAC_SoftwareTriggerCmd(DAC_Channel_1, ENABLE);
}
时间: 2024-10-11 07:41:27

STM32——DAC的相关文章

stm32 dac 配置过程

DAC模块的通道1来输出模拟电压,其详细设置步骤如下: 1)开启PA口时钟,设置PA4为模拟输入. STM32F103ZET6的DAC通道1是接在PA4上的,所以,我们先要使能PORTA的时钟,然后设置PA4为模拟输入(虽然是输入,但是STM32内部会连接在DAC模拟输出上). 2)使能DAC1时钟. 同其他外设一样,要想使用,必须先开启相应的时钟.STM32的DAC模块时钟是由APB1提供的,所以我们先要在APB1ENR寄存器里面设置DAC模块的时钟使能. 3)设置DAC的工作模式. 该部分设

STM32之DAC君

如花说得好:呃呃呃.是俗话说得好:有了ADC,怎可少了DAC..我觉得奇怪.今天我开头就直奔主题了.我想了想,总结了一句话:孙悟空纵然有七十二变.无论是变成猫也好,变成狗也罢.始终还是会变回他本身.所以我怎么的拐弯抹角,还是会回到DAC..这不.前面几句废话,还是回到了讲DAC上来了..好吧.今天就直接一点吧,换个风格的开头. 先来张比如花漂亮的照片.大家请尽情欣赏:因为其够美丽了.所以我就不展现我美丽而销魂的涂鸦了. 鉴赏过之后.我们来看看STM32之DAC的Resume(简历简介): ● 2

STM32学习笔记——DAC

1.概述STM32DAC 2.STM32F407库函数总结 3.输出模拟电压配置过程 --------------------------------------------------------------------------------------------------------------------- -----------------------------------------------------------------------------------------

STM32 F4 DAC DMA Waveform Generator

STM32 F4 DAC DMA Waveform Generator Goal: generating an arbitrary periodic waveform using a DAC with DMA and TIM6 as a trigger. Agenda: Modeling a waveform in MATLAB and getting the waveform data Studying the DAC, DMA, and TIM6 to see how it can be u

STM32 基DMA的DAC波形发生器

DAC是STM32系列的一个基本外设,可以将数字信号转化成模拟信号,这次我将使用DAC来输出一个特定波形. 首先确定工作方法,由于我目前在做的简易示波器在输出波形的同时还需要显示输入信号,所以不能占用太多CPU时间,于是就选用了基于DMA的ADC. 使用DMA只需告诉DMA外设它要怎么搬移数据就可以处理其他事. 首先定义一下 #define DAC_DHR12R1    (u32)&(DAC->DHR12R1)   //DAC DATA buff 作为DMA的外设数据地址 首先是初始化输出管

STM32 使用DMA+DAC+TIMER 输出正弦波

之前已经简单论述过,根据我个人菜鸟的了解与认识,对之前的知识进行整理回顾: DMA:我的理解就是一个通道,或者是一座桥梁.在静态内存到静态内存,或者外设到静态内存间的一个通讯的通道.建立这个通道的好处是:可以抛开CPU,不占用CPU的资源,直接使用这块内存的内容,速度也会加快. DAC:STM32F103中有两个DAC,可以同时使用.DAC的作用就是将数字量转化为模拟量(电压),在这就不作太多的讲解. TIMER:定时器.不作讲解. 那么对于使用DMA+DAC+TIMER产生正弦波的原理或过程,

如何查找STM32开发资料

Ⅰ.概述 该文写给那些处于初学ST芯片开发.英文不好而又想偷懒的人. 该文主要的目的是提醒大家:学习一门技术是需要舍得花功夫,捷径是你在起点与终点之间不断的探索,最终总结出来的一条适合自己的路. 下面我将相关搜索.查找的方法教给大家,最后会把相关资料的下载地址放在最后,详情请往下看. 本着免费分享的原则,方便大家手机学习知识,定期在微信平台分享技术知识.如果你觉得分享的内容对你有用,又想了解更多相关的文章,请用微信搜索“EmbeddDeveloper” 或者扫描下面二维码.关注,将有更多精彩内容

STM32库函数编程

catalogue 1. 基于标准外设库的软件开发 2. 基于固件库实现串口输出(发送)程序 3. 红外接收实验 1. 基于标准外设库的软件开发 0x1: STM32标准外设库概述 STM32标准外设库之前的版本也称固件函数库或简称固件库(即操作片外固件的代码集合),是一个固件函数包,它由程序.数据结构和宏组成,包括了微控制器所有外设的性能特征.该函数库还包括每一个外设的驱动描述和应用实例,为开发者访问底层硬件提供了一个中间API,通过使用固件函数库,无需深入掌握底层硬件细节,开发者就可以轻松应

STM32固件库详解

本文转自http://www.cnblogs.com/emouse/archive/2011/11/29/2268441.html 1.1 基于标准外设库的软件开发 1.1.1 STM32标准外设库概述 STM32标准外设库之前的版本也称固件函数库或简称固件库,是一个固件函数包,它由程序.数据结构和宏组成,包括了微控制器所有外设的性能特征.该函数库还包括每一个外设的驱动描述和应用实例,为开发者访问底层硬件提供了一个中间API,通过使用固件函数库,无需深入掌握底层硬件细节,开发者就可以轻松应用每一