简单介绍一下PWM
PWM,英文名Pulse Width Modulation,是脉冲宽度调制缩写,它是通过对一系列脉冲的宽度进行调制,等效出所需要的波形(包含形状以及幅值),对模拟信号电平进行数字编码,也就是说通过调节占空比的变化来调节信号、能量等的变化,占空比就是指在一个周期内,信号处于高电平的时间占据整个信号周期的百分比,例如方波的占空比就是50%。

知道了什么是PWM,让我们来了解定时器怎么实现PWM波形输出,
PWM波形输出

寄存器的值从0开始到ARR值的过程中,当其比CCRx中的值小的时候,输出低电平(0),当其值大于CCRx值时,输出高电平(1)。从图中可以看出周期是由ARR决定的,跟定时器的时钟有关系,而占空比则跟CCRx有关。
后面的是PWM的通道

①CCR1寄存器:捕获/比较值寄存器:设置比较值;
②CCMR1寄存器:OC1M[2:0]位:对于PWM方式下,用于设置PWM模式1或者PWM模式2;
③CCER寄存器:CC1P位:输入/捕获1输出极性。0:高电平有效,1:低电平有效。
④CCER寄存器:CC1E位:输入/捕获1输出使能。0:关闭,1:打开。
PWM输出的模式区别
通过设置寄存器TIMx_CCMR1的OC1M[2:0]位来确定PWM的输出模式:
PWM模式1:在向上计数时,一旦TIMx_CNT<TIMx_CCR1时通道1为有效电平,否则为无效电平;在向下计数时,一旦TIMx_CNT>TIMx_CCR1时通道1为无效电平(OC1REF=0),否则为有效电平(OC1REF=1)。
PWM模式2:在向上计数时,一旦TIMx_CNT<TIMx_CCR1时通道1为无效电平,否则为有效电平;在向下计数时,一旦TIMx_CNT>TIMx_CCR1时通道1为有效电平,否则为无效电平。
注意:并未说明1就表示有效电平
实际操作再用示波器显示

STM32F103的DAC功能完成波形输出
实验任务:
1)输出一个周期2khz的正弦波(循环)。此波形驱动作用至蜂鸣器或喇叭,会呈现一个“滴…”的单音;
2)将一段数字音频歌曲数据转换为模拟音频波形输出(循环)。
提示:首先用音频制作工具如audition制作一段数字化的2khz正弦波wav文件,制作时须指定采样频率、量化位数和通道数,以及时间长度。MCU资源有限,建议采样8khz,量化16bit,单通道,时长仅仅2秒左右。音频wav数据可以用类似汉字字模的保存方式,直接copy到Keil代码中数组中,不必使用SD卡上的wav文件(野火开发板是读取SD卡上的wav文件)。
在成功完成单音音频的还原输出后(示波器观察),再实验转换一首你喜欢的歌曲片段(或者自己唱录一句,如“我还是从前那个少年miya”)为wav文件,进行还原输出。
一.简单介绍一下DAC
数模转换器,又称D/A转换器,简称DAC,它是把数字量转变成模拟的器件。D/A转换器基本上由4个部分组成,即权电阻网络、运算放大器、基准电源和模拟开关。模数转换器中一般都要用到数模转换器,模数转换器即A/D转换器,简称ADC,它是把连续的模拟信号转变为离散的数字信号的器件。
2.构成和特点
DAC主要由数字寄存器、模拟电子开关、位权网络、求和运算放大器和基准电压源(或恒流源)组成。用存于数字寄存器的数字量的各位数码,分别控制对应位的模拟电子开关,使数码为1的位在位权网络上产生与其位权成正比的电流值,再由运算放大器对各电流值求和,并转换成电压值 [1] 。
根据位权网络的不同,可以构成不同类型的DAC,如权电阻网络DAC、R–2R倒T形电阻网络DAC和单值电流型网络DAC等。权电阻网络DAC的转换精度取决于基准电压VREF,以及模拟电子开关、运算放大器和各权电阻值的精度。它的缺点是各权电阻的阻值都不相同,位数多时,其阻值相差甚远,这给保证精度带来很大困难,特别是对于集成电路的制作很不利,因此在集成的DAC中很少单独使用该电路 [1] 。
它由若干个相同的R、2R网络节组成,每节对应于一个输入位。节与节之间串接成倒T形网络。R–2R倒T形电阻网络DAC是工作速度较快、应用较多的一种。和权电阻网络比较,由于它只有R、2R两种阻值,从而克服了权电阻阻值多,且阻值差别大的缺点 [1] 。
电流型DAC则是将恒流源切换到电阻网络中,恒流源内阻极大,相当于开路,所以连同电子开关在内,对它的转换精度影响都比较小,又因电子开关大多采用非饱和型的ECL开关电路,使这种DAC可以实现高速转换,转换精度较高
正弦波输出
采用野火的DAC—输出正弦波 文件。
上图就是将程序烧录到板子上之后链接示波器,在调频之后的结果。
实现音频波形输出
首先通过 Adobe Audition 截取生成一段音频文件
设置参数,然后导出
通过WavToC工具,将wav音频文件转为c语言代码程序
最终得到了如下
将生成的数据替换工程中的波形数据
实验结果展示
本文介绍了如何使用STM32F103通过PWM输出波形,详细解析了PWM的工作原理和配置寄存器。此外,还讨论了如何利用DAC功能输出正弦波和音频波形,包括音频文件的处理和转换为C语言代码的过程。
677

被折叠的 条评论
为什么被折叠?



