一、STM32输出一路PWM波形
1、PWM简介
PWM是 Pulse Width Modulation 的缩写,中文意思就是脉冲宽度调 制,简称脉宽调制。它是利用微处理器的数字输出来对模拟电路进行控 制的一种非常有效的技术,其控制简单、灵活和动态响应好等优点而成 为电力电子技术最广泛应用的控制方式,其应用领域包括测量,通信, 功率控制与变换,电动机控制、伺服控制、调光、开关电源,甚至某些 音频放大器,因此学习PWM具有十分重要的现实意义。 其实我们也可以这样理解,PWM是一种对模拟信号电平进行数字编码 的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个 具体模拟信号的电平进行编码。PWM 信号仍然是数字的,因为在给定的 任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。电压 或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去 的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被 断开的时候。只要带宽足够,任何模拟值都可以使用 PWM 进行编码。
2、PWM波形输出
(1)代码获取
链接:https://pan.baidu.com/s/1UEalZF-639tNAj0JB1Pn7A
提取码:zvau
(2)解压文件,打开工程:1-书籍配套例程-F103VE指南者\32-TIM—通用定时器\2-TIM—通用定时器-4路PWM输出\Project\RVMDK(uv5)
(3)仿真设置
(4)输出引脚(GPIOA_IDR.6)
(5)输出波形
二、STM32实现DAC音频播放
(一)输出一个周期2khz的正弦波
1、DAC简介
数模转换器,又称D/A转换器,简称DAC,它是把数字量转变成模拟的器件。D/A转换器基本上由4个部分组成,即权电阻网络、运算放大器、基准电源和模拟开关。模数转换器中一般都要用到数模转换器,模数转换器即A/D转换器,简称ADC,它是把连续的模拟信号转变为离散的数字信号的器件。
2、DAC正弦波形工程获取
上述野火指南者配套38-DAC输出正弦波
3、打开文件夹里面的正弦波制作脚本,把如图脚本用matlab打开
4、打开之后,对其做如下修改
(根据公式要输出2khz正弦波,把point改为1800)
5、查看波形
6、把生成的dac_sinWave.c文件打开
再把数组复制粘贴到如下位置
7、上述方法是通过增加周期点数来改变频率,比较麻烦,其实还可以直接改变定时周期
根据是如下公式:
8、程序烧录进stm32芯片,把PA4引脚接示波器,另一端接地,可在示波器1看到如下波形
连接蜂鸣器可以听见微弱的声音!
(二)将一段数字音频歌曲数据转换为模拟音频波形输出
1、使用的音频剪辑软件Adobe Audition CS6
2、打开一首音乐
截取5~10秒,设置参数,保存.wav文件
3、用另外一个软件(UltraEdit)打开截取的.wav文件
4、全选,鼠标右键选择十六进制复制选定视图,再心建一个一个文件,粘贴上去
5、鼠标右键选择范围,复制粘贴到一个txt文件中
注意
行号从1-2000左右,太大了数组装不下
列从12开始
6、用notepad++打开这个.txt文件(添加0x格式)
7、改完后
8、全部复制粘贴到工程正弦波数组里去
注意:修改前面的点数,我是:
【(59-12)+1】x1500=72000
9、连接示波器输出波形