STM32
直播中

surround

12年用户 553经验值
私信 关注
[问答]

如何用STM32F103输出一路PWM波形呢

PWM是什么?STM32的占空比以及频率是如何计算的?
如何用STM32F103输出一路PWM波形呢?

回帖(1)

何思婷

2021-11-10 11:59:46
  前言
  今天本菜鸟带大家认识两位对我们今后的学习很有帮助的两位朋友——PWM和DAC。
  用STM32F103输出一路PWM波形,建议采用定时器方法。野火和网上大多数资源采用此方法,有完整源码。用示波器观察输出波形。
  PWM是什么
  PWM是 Pulse Width Modulation 的缩写,中文意思就是脉冲宽度调制,简称脉宽调制。
  它是利用微处理器的数字输出来对模拟威廉希尔官方网站 进行控 制的一种非常有效的技术,其控制简单、灵活和动态响应好等优点而成 为电力电子技术最广泛应用的控制方式,其应用领域包括测量,通信, 功率控制与变换,电动机控制、伺服控制、调光、开关电源,甚至某些 音频放大器,因此学习PWM具有十分重要的现实意义。 其实我们也可以这样理解,PWM是一种对模拟信号电平进行数字编码 的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM 信号仍然是数字的,因为在给定的 任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。电压或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被 断开的时候。只要带宽足够,任何模拟值都可以使用 PWM 进行编码。
  脉宽调制(PWM)基本原理:
  控制方式就是对逆变威廉希尔官方网站 开关器件的通断进行控制,使输出端得到一系列幅值相等的脉冲,用这些脉冲来代替正弦波或所需要的波形。也就是在输出波形的半个周期中产生多个脉冲,使各脉冲的等值电压为正弦波形,所获得的输出平滑且低次谐波少。按一定的规则对各脉冲的宽度进行调制,即可改变逆变威廉希尔官方网站 输出电压的大小,也可改变输出频率。
  PWM表的图像
  
  可以看到,这个PWM 表记录了呼吸特性曲线,在本实验中,PWM 表的数据将会被赋值到定时器的CCRx 比较寄存器,从而控制输出占空比呈呼吸特性曲线变化的PWM波。
  显示波形
  首先从野火指南者的例程中找到TIM——单色呼吸灯,打开工程,
  主函数如下
  #include “stm32f10x.h”
  #include “。/breathinglight/bsp_breathing.h”int main(void){
  TIMx_Breathing_Init();
  while(1)
  {
  }
  }
  编译运行,用u***连接指南者与上位机
  并配置如下
  
  点击调试
  
  找到
  
  图标
  点击setup
  
  点击全速运行并点击
  
  波形显示如下
  
  TIM_Config函数体
  在配置函数体之前,先了解一下stm32的占空比以及频率是如何计算的
  ①频率:我们使用的APB1时钟源是72MHz的,在此我们不做分频,通过配置相关的参数来设置输入频率,计算方法:输入频率=APB1时钟/(预分频系数+1)=72000000Hz/360=200000Hz
  ②TIM_TImeBaseStructure.TIM_Period参数决定了输出PWM波形的频率,输出PWM波形的频率=定时器的输入频率/TIM_TImeBaseStructure.TIM_Period,本例程20000Hz/100=200Hz,即5ms一个周期
  ③配置占空比:占空比=配置占空比的值/ TIM_TImeBaseStructure.TIM_Period,以此计算来确定占空比,本案例的占空比为50/100=50%
  用示波器观察PB5
  我们可以发现,它的波形在规律变化
  编译并下载本程序到开发板,给开发板上电复位,可看到LED 灯显示呼吸效果。
  用STM32F103的DAC功能完成以下波形输出,用示波器观察波形,并用蜂鸣器或手机耳机收听输出声音效果、感受歌曲的音质差异。
  DAC 简介
  DAC 为数字/模拟转换模块,故名思议,它的作用就是把输入的数字编码,转换成对应的模拟电压输出,它的功能与ADC 相反。在常见的数字信号系统中,大部分传感器信号被化成电压信号,而ADC 把电压模拟信号转换成易于计算机存储、处理的数字编码,由计算机处理完成后,再由DAC 输出电压模拟信号,该电压模拟信号常常用来驱动某些执行器件,使人类易于感知。如音频信号的采集及还原就是这样一个过程。STM32 具有片上DAC 外设,它的分辨率可配置为8 位或12 位的数字输入信号,具有两个DAC 输出通道,这两个通道互不影响,每个通道都可以使用DMA 功能,都具有出错检测能力,可外部触发。
  功能框图
  
  1)输出一个周期2khz的正弦波(循环)。此波形驱动作用至蜂鸣器或喇叭,会呈现一个“滴…”的单音;
  打开野火的DAC输出正弦波例程
  根据手册中的提示
  找到bsp_dac.c文件,因为要输出2khz正弦波,把定时周期从(20-1)改为(1125-1)
  
  
  编译运行,
  
  输出了2khz的正弦波
  使用蜂鸣器连接PA4可以听到很长的“滴”的声音
  2)将一段数字音频歌曲数据转换为模拟音频波形输出(循环)。
  首先用AU打开一段自己喜欢的音乐
  选择5-10s
  右键储存选区为
  
  
  用Ultraedit打开
  
  用Ctrl+A全选,鼠标右键,点击十六进制复制所选视图,
  复制完成后新建一个文件,粘贴进去
  
  然后右键-》选择范围
  设置行号,结果如下
  
  总结
  以上就是我们新认识的两位朋友——PWM和DAC啦。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分