STM32的PWM和DAC练习

一、学习任务

  1. 用STM32F103输出一路PWM波形,建议采用定时器方法。野火和网上大多数资源采用此方法,有完整源码。用示波器观察输出波形。
  2. 用STM32F103的DAC功能完成以下波形输出,用示波器观察波形,并用蜂鸣器或手机耳机收听输出声音效果、感受歌曲的音质差异。
    1)输出一个周期2khz的正弦波(循环)。此波形驱动作用至蜂鸣器或喇叭,会呈现一个“滴…”的单音;
    2)将一段数字音频歌曲数据转换为模拟音频波形输出(循环)。
    提示:首先用音频制作工具如audition制作一段数字化的2khz正弦波wav文件,制作时须指定采样频率、量化位数和通道数,以及时间长度。MCU资源有限,建议采样8khz,量化16bit,单通道,时长仅仅2秒左右。音频wav数据可以用类似汉字字模的保存方式,直接copy到Keil代码中数组中,不必使用SD卡上的wav文件(野火开发板是读取SD卡上的wav文件)。
    在成功完成单音音频的还原输出后(示波器观察),再实验转换一首你喜欢的歌曲片段(或者自己唱录一句,如“我还是从前那个少年miya”)为wav文件,进行还原输出。

二、学习内容

1. PWM波形

1.1 PWM简介

PWM是 Pulse Width Modulation 的缩写,中文意思就是脉冲宽度调 制,简称脉宽调制。它是利用微处理器的数字输出来对模拟电路进行控 制的一种非常有效的技术,其控制简单、灵活和动态响应好等优点而成 为电力电子技术最广泛应用的控制方式,其应用领域包括测量,通信, 功率控制与变换,电动机控制、伺服控制、调光、开关电源,甚至某些 音频放大器,因此学习PWM具有十分重要的现实意义。 其实我们也可以这样理解,PWM是一种对模拟信号电平进行数字编码 的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个 具体模拟信号的电平进行编码。PWM 信号仍然是数字的,因为在给定的 任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。电压 或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去 的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被 断开的时候。只要带宽足够,任何模拟值都可以使用 PWM 进行编码。

1.2 相关文件

百度网盘提取
链接:https://pan.baidu.com/s/1BTMl7TN-3Pa1f5VfU9dSOw
提取码:mzbs
下载后找到以下文件夹
在这里插入图片描述
在这里插入图片描述

1.3 keil查看PWM波形

1.打开工程,具体路径:32-TIM—通用定时器\2-TIM—通用定时器-4路PWM输出\Project\RVMDK(uv5)
在这里插入图片描述
2. 配置更改
debug->Use Simulaor
在这里插入图片描述
3.编译,调试
在这里插入图片描述
在这里插入图片描述
4.分析窗口及点击setup
在这里插入图片描述
输入GPIOA_IDR.6,选择bit
在这里插入图片描述
5.运行查看波形
在这里插入图片描述
点击后如果没反应,在点击一次波形就出来了
在这里插入图片描述

2. STM32F103的DAC练习

2.1 输出一个周期2khz的正弦波(循环)

1.相关文件

在这里插入图片描述
具体路径:38-DAC—输出正弦波\Project\RVMDK(uv5)
在这里插入图片描述
根据公式:
在这里插入图片描述
选择bsp_dac.c,更改如下:
在这里插入图片描述
在这里插入图片描述
显示如下:
在这里插入图片描述

2.2.数字音频歌曲数据转换为模拟音频波形输出(循环)

1.保存音频文件转换

1.载音乐并在Au上进行转换
在这里插入图片描述
选择好起始位置,把持续时间设置为2s,就自动生成了区间
在这里插入图片描述
在这里插入图片描述
2. 生成数字音频文件
右键区间处->点击存储选区为…
在这里插入图片描述
更改采样的类型,完成后保存。
在这里插入图片描述
3. 生成正弦波文件
新建音频文件
在这里插入图片描述
设置如下:
在这里插入图片描述
点击效果,选择生成基本音色
在这里插入图片描述
设置如下:
在这里插入图片描述
同上保存
在这里插入图片描述

2. 用WavToC将音频文件转换为c语言代码

1.打开文件
在这里插入图片描述
选择文件,生成代码:
在这里插入图片描述
在这里插入图片描述
正弦波:
在这里插入图片描述

3. 写入代码并用示波器显示输出

将得到的音频代码复制到bsp_dac.c,如下:
在这里插入图片描述
波形输出如下:
在这里插入图片描述

三、参考资料

stm32 PMW输出实验
STM32F103使用TIM DMA DAC实现播放WAV音乐

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值