STM32F103使用DAC功能输出三角波_第1页
STM32F103使用DAC功能输出三角波_第2页
STM32F103使用DAC功能输出三角波_第3页
STM32F103使用DAC功能输出三角波_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第第页STM32F103使用DAC功能输出三角波在DAC的主要特征中可以看出,DAC内部还带有波形发生器。

DAC主要特征

2个DAC转换器:每个转换器对应1个输出通道8位或者12位单调输出12位模式下数据左对齐或者右对齐同步更新功能噪声波形生成三角波形生成双DAC通道同时或者分别转换每个通道都有DMA功能外部触发转换输入参考电压VREF+

比如我们要输出一个三角波,就不需要自己去计算三角波每个点的电压是多少,通过内部自带的三角波发生器,就可以产生三角波。具体的操作步骤在官方文档中也有介绍。

三角波生成

可以在DC或者缓慢变化的信号上加上一个小幅度的三角波。设置WAVEx[1:0]位为’10’选择DAC的三角波生成功能。设置DAC_CR寄存器的MAMPx[3:0]位来选择三角波的幅度。内部的三角波计数器每次触发事件之后3个APB1时钟周期后累加1。计数器的值与DAC_DHRx寄存器的数值相加并丢弃溢出位后写入DAC_DORx寄存器。在传入DAC_DORx寄存器的数值小于MAMP[3:0]位定义的最大幅度时,三角波计数器逐步累加。一旦达到设置的最大幅度,则计数器开始递减,达到0后再开始累加,周而复始。将WAVEx[1:0]位置’0’可以复位三角波的生成。

注意:

为了产生三角波,必须使能DAC触发,即设DAC_CR寄存器的TENx位为’1’。MAMP[3:0]位必须在使能DAC之前设置,否则其值不能修改下面通过代码来设置DAC输出三角波

#include"dac_wave.h"

//通过DAC通道1和通道2输出三角波voidDAC_Wave_Init(void){GPIO_InitTypeDefGPIO_InitStructure;DAC_InitTypeDefDAC_InitStructure;TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC,ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4|GPIO_Pin_5;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;GPIO_Init(GPIOA,

TIM_TimeBaseStructInit(TIM_TimeBaseStructure.TIM_Period=0x0F;TIM_TimeBaseStructure.TIM_Prescaler=0x01;TIM_TimeBaseStructure.TIM_ClockDivision=0x0;TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;TIM_TimeBaseInit(TIM2,

TIM_SelectOutputTrigger(TIM2,TIM_TRGOSource_Update);

DAC_InitStructure.DAC_Trigger=DAC_Trigger_T2_TRGO;DAC_InitStructure.DAC_WaveGeneration=DAC_WaveGeneration_Triangle;DAC_InitStructure.DAC_LFSRUnmask_TriangleAmplitude=DAC_TriangleAmplitude_4095;DAC_InitStructure.DAC_OutputBuffer=DAC_OutputBuffer_Disable;DAC_Init(DAC_Channel_1,

DAC_InitStructure.DAC_LFSRUnmask_TriangleAmplitude=DAC_TriangleAmplitude_2047;DAC_Init(DAC_Channel_2,

DAC_Cmd(DAC_Channel_1,ENABLE);DAC_Cmd(DAC_Channel_2,ENABLE);

DAC_SetDualChannelData(DAC_Align_12b_R,0,0);

TIM_Cmd(TIM2,ENABLE);}将DAC的通道1和通道2都开启,要自动输出三角波,这时候就不能使用软件自己去触发了,在这里要借助定时器来自动触发,当定时器定时时间到了之后,就会触发一次DAC的输出,这里使用的是定时器2触发,所以初始化DAC的时候。也要初始化定时器2,接下里初始化DAC,设置DAC的触发方式为定时器2触发,然后选择三角波发生器,接下来设置通道1三角波的幅度最大值为4

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论