STM32 使用DMA+DAC+TIMER输出正弦波
2018-03-08 09:57
417 查看
来自博客:http://www.cnblogs.com/zhoubatuo/p/6123217.html
之前已经简单论述过,根据我个人菜鸟的了解与认识,对之前的知识进行整理回顾:DMA:我的理解就是一个通道,或者是一座桥梁。在静态内存到静态内存,或者外设到静态内存间的一个通讯的通道。建立这个通道的好处是:可以抛开CPU,不占用CPU的资源,直接使用这块内存的内容,速度也会加快。DAC:STM32F103中有两个DAC,可以同时使用。DAC的作用就是将数字量转化为模拟量(电压),在这就不作太多的讲解。TIMER:定时器。不作讲解。那么对于使用DMA+DAC+TIMER产生正弦波的原理或过程,我有这样一个简单的理解: 先将一个可以生成正弦波的数据表保存在静态内存中,然后在DAC以及这块内存中间使用DMA建立一个通道,经过以上步骤之后,DAC模块就可以通过DAM通道拿取静态内存中可以生成正弦波的数据,拿取数据,然后经过数模准换,在引脚进行输出就可以得到正弦波了。那么当然,这个速度是非常快的,如果没有一定的延时,那么得到的估计就是一个变化很快的模拟量。所以这个时候就需要使用定时器TIMER了。DAC在初始化的时候,可以设置成使用定时器触发,这就意味着,当定时器溢满的时候,就会触发DAC工作。这样一来,就可以通过改变定时器的定时时间来改变正弦波的周期了。以上是我的一个简单的了解,应该会有很多不严谨不正确的地方,毕竟是一个新手菜鸟,以上见解也是方便自己学习,本人也会根据不断学习进行补充营养的。下面贴出一个例子进行分析:1、初始化波形表以及输出的引脚
2、初始化DAC
3、定时器配置
4、DMA配置
DMA_InitStructure.DMA_PeripheralBaseAddr = DAC_DHR12R1;//外设地址为DAC通道1的地址
DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)SineWave_Value;//波形数据表内存地址 DMA_Init(DMA2_Channel3, &DMA_InitStructure);//初始化
DMA_Cmd(DMA2_Channel3, ENABLE); //使能DMA通道3 } 5、正弦波初始化
经过以上的简单配置,就可以使得32板输出sin波形了。
之前已经简单论述过,根据我个人菜鸟的了解与认识,对之前的知识进行整理回顾:DMA:我的理解就是一个通道,或者是一座桥梁。在静态内存到静态内存,或者外设到静态内存间的一个通讯的通道。建立这个通道的好处是:可以抛开CPU,不占用CPU的资源,直接使用这块内存的内容,速度也会加快。DAC:STM32F103中有两个DAC,可以同时使用。DAC的作用就是将数字量转化为模拟量(电压),在这就不作太多的讲解。TIMER:定时器。不作讲解。那么对于使用DMA+DAC+TIMER产生正弦波的原理或过程,我有这样一个简单的理解: 先将一个可以生成正弦波的数据表保存在静态内存中,然后在DAC以及这块内存中间使用DMA建立一个通道,经过以上步骤之后,DAC模块就可以通过DAM通道拿取静态内存中可以生成正弦波的数据,拿取数据,然后经过数模准换,在引脚进行输出就可以得到正弦波了。那么当然,这个速度是非常快的,如果没有一定的延时,那么得到的估计就是一个变化很快的模拟量。所以这个时候就需要使用定时器TIMER了。DAC在初始化的时候,可以设置成使用定时器触发,这就意味着,当定时器溢满的时候,就会触发DAC工作。这样一来,就可以通过改变定时器的定时时间来改变正弦波的周期了。以上是我的一个简单的了解,应该会有很多不严谨不正确的地方,毕竟是一个新手菜鸟,以上见解也是方便自己学习,本人也会根据不断学习进行补充营养的。下面贴出一个例子进行分析:1、初始化波形表以及输出的引脚
DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)SineWave_Value;//波形数据表内存地址 DMA_Init(DMA2_Channel3, &DMA_InitStructure);//初始化
DMA_Cmd(DMA2_Channel3, ENABLE); //使能DMA通道3 } 5、正弦波初始化
相关文章推荐
- DMA+DAC+TIMER输出正弦波 自己验证
- stm32 DAC+DMA 输出100K正弦波杠杠的!!!
- STM32 双DAC DMA TIM6输出正弦波例子
- (STM32)使用DAC输出WAVE音频波形
- STM32的DMA的配置使用(关于原理。在《计算机组成与系统结构》的输入输出系统中有一些DMA的原理介绍)
- STM32学习日志--使用DMA功能自动更新PWM的输出
- STM32 —— 多路DAC(输出电压和正弦波)
- STM32 —— 多路DAC(输出电压和正弦波)
- STM32DMA使用详解
- STM32 DMA及其DAM与DA实现正弦波生成
- 使用36-pin的STM32输出VGA, VGA output using a 36-pin STM32
- 使用timer方法生成一个定时器,每隔一段时间输出一个随机数
- STM32学习笔记——使用函数库编程控制GPIO口输出
- 关于RS485通讯中使用STM32串口以DMA方式发送数据丢失字节的问题
- STM32 使用DMA处理ADC 学习笔记!!
- STM32使用DMA功能导致程序运行不正常
- Stm32作为主设备使用DMA接收SPI数据
- STM32采用HAL库使用usart_DMA问题
- 【原创+转载】STM32之DMA的认识和使用
- STM32-如何使用引脚复用功能输出PWM