STM32的PWM和DAC练习

STM32的PWM和DAC练习

一、PWM控制呼吸灯实验

(一)、PWM简介

关于PWM

PWM是 Pulse Width Modulation 的缩写,中文意思就是脉冲宽度调 制,简称脉宽调制。 PWM是一种对模拟信号电平进行数字编码 的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个 具体模拟信号的电平进行编码。PWM 信号仍然是数字的,因为在给定的 任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。电压 或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去 的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被 断开的时候。只要带宽足够,任何模拟值都可以使用 PWM 进行编码。
在这里插入图片描述

PWM生成
  • 计算法

根据拟合波形的频率、幅值和半周期脉冲数,准确计算 PWM 波各脉冲宽度和间隔,据此控制开关器件的通断,就可得到所需 PWM 波形;

  • 调制法

拟合波形作调制信号,进行调制得到期望的 PWM 波;该方法一般采用等腰三角波为载波,其任一点水平宽度和高度成线性关系且左右对称。载波(等腰三角波)与平缓变化的调制信号波(即要拟合的波形)相交,在载波与信号波的交点控制器件通断,就得宽度正比于信号波幅值的脉冲,符合 PWM 的要求。相对于计算法,其处理过程计算简单。

(二)、PWM仿真输出

实验环境

1.野火STM32指南者(STM32F103VET6)
2.keil5

环境搭建

在野火官方资料中找到“TIM—通用定时器\TIM—通用定时器-4路PWM输出”,打开工程
在这里插入图片描述

对工程进行编译,由于没有相关器材,所以我们选择仿真。
点击options for target(魔法棒),在debug中选择use simulator
在这里插入图片描述
点击start
在这里插入图片描述点击setup
在这里插入图片描述

点击new(insert),输入GPIOA_IDR ,在display type中选择bit
在这里插入图片描述

仿真结果

在这里插入图片描述

二、基于STM32的DAC实现音频波形输出

(一)、DAC简介

关于DAC

DAC 为数字/模拟转换模块,故名思议,它的作用就是把输入的数字编码,转换成对应的模拟电压输出,它的功能与 ADC 相反。在常见的数字信号系统中,大部分传感器信号被化成电压信号,而 ADC 把电压模拟信号转换成易于计算机存储、处理的数字编码,由计算机处理完成后,再由 DAC 输出电压模拟信号,该电压模拟信号常常用来驱动某些执行器件,使人类易于感知。如音频信号的采集及还原就是这样一个过程。
STM32 具有片上 DAC 外设,它的分辨率可配置为 8 位或 12 位的数字输入信号,具有两个 DAC 输出通道,这两个通道互不影响,每个通道都可以使用 DMA 功能,都具有出错检测能力,可外部触发。

DAC功能

在这里插入图片描述
整个DAC模块围绕框图下方的“数字至模拟转换器ⅹ”展开,它的左边分别是参考电源的引脚:VDDA、VSSA及Vrer+,其中SIM32的DAC规定了它的参考电压Vnef+输入范围为2.4——3.3V。“数字至模拟转换器κ”的输入为DAC的数据寄存器“DORx”的数字编码,经过它转换得的模拟信号由图中右侧的“ DAC OUTX”输出。而数据寄存器“DORx”又受“控制逻辑”支配,它可以控制数据寄存器加入一些伪噪声信号或配置产生三角波信号。
图中的左上角为DAC的触发源,DAC根据触发源的信号来进行DAC转换,其作用就相当于DAC转换器的开关,它可以配置的触发源为外部中断源触发、定时器触发或软件控制触发。如本章实验中需要控制正弦波的频率,就需要定时器定时触发DAC进行数据转换。

(二)、DAC输出

采集音频

利用AU生成一个音频文件

在这里插入图片描述

在这里插入图片描述
点击效果–>生成基本音色,设置参数

在这里插入图片描述
生成正弦波
在这里插入图片描述

选择区段,1800个采集点,2000hz,需要0.9秒

在这里插入图片描述右键点击选中部分,选择存储选区,保存音频

在这里插入图片描述
将生成的音频转化为16进制
在这里插入图片描述

仿真输出

打开野火官方代码中的“DAC-输出正弦波”
在这里插入图片描述
打开工程,将bsp_dac.c中的16进制修改为自己音频生成的16进制代码
在这里插入图片描述
点击编译,最后烧录验证
在这里插入图片描述
实验成功!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值