STM32
直播中

carey123

10年用户 1509经验值
擅长:可编程逻辑 嵌入式技术
私信 关注
[问答]

如何使用STM32微控制器的DAC生成音频和波形?

如何使用STM32微控制器的DAC生成音频和波形?

回帖(1)

陈明

2021-11-19 09:49:08
一、实验要求

阅读学习野火开发板资料(零死角玩转stm32-中级篇、零死角玩转 STM32F103—指南者)和网上资源,熟悉 脉冲宽度调制(PWM)和数模/模数转换原理。完成以下实验:


  • 用STM32F103输出一路PWM波形,建议采用定时器方法。野火和网上大多数资源采用此方法,有完整源码。用示波器观察输出波形。参考网址如:https://www.cnblogs.com/zhj868/p/12640717.html
  • 用STM32F103的DAC功能完成以下波形输出,用示波器观察波形,并用蜂鸣器或手机耳机收听输出声音效果、感受歌曲的音质差异。

1)输出一个周期2khz的正弦波(循环)。此波形驱动作用至蜂鸣器或喇叭,会呈现一个“滴…”的单音;
2)将一段数字音频歌曲数据转换为模拟音频波形输出(循环)。
提示:首先用音频制作工具制作一段数字化的2khz正弦波wav文件、转换一首你喜欢的歌曲片段(或者自己唱录一句,如“我还是从前那个少年miya”)为wav文件。制作时须指定采样频率、量化位数和通道数,以及时间长度。MCU资源有限,建议采样8khz,量化16bit,单通道,时长仅仅5~10秒。音频wav数据可以用类似汉字字模的保存方式,直接copy到Keil代码中数组中,不必使用SD卡上的wav文件(野火开发板是读取SD卡上的wav文件)。
参考网址: https://blog.csdn.net/liqiang420795936/article/details/108216511
使用STM32微控制器系列中的DAC生成音频和波形.pdf
二、实验内容

(一)用STM32F103输出一路PWM波形

1、打开源代码






2、修改参数设置


























3、仿真波形以及示波器演示











(二)用STM32F103的DAC功能完成波形输出

1、输出一个2kHz的正弦波

方法一:
打开老师提供的Adobe Audition,打开一段音乐





截取一段存为.wav文件





修改参数为





保存到本地
打开已安装好的Uedit32,打开刚刚保存的.wav文件





全选





选择范围





复制到notepad++填充0x和“,”
将填充好的代码复制粘贴到keil工程的const unit8_t Sine12bit[]中
再将整个工程烧录到stm32中,就可以在示波器中观察到波形





方法二:
打开例程中给出的matlab文件,修改参数










根据代码我们发现它的采样点数为32,显示的波形不连续





我们需要的是2kHz的正弦波,采样点数应该为3600,此时得到的波形肉眼看起来就是连续的了





运行后生成了dac_sinWave.c 文件,记事本打开





打开工程





修改keil中的uint16_t Sine12bit[POINT_NUM]数组,将我们得到的dac_sinWave.c 文件用记事本打开复制粘贴覆盖原本内容即可
编译完成之后,将代码烧录到stm32中就可以显示波形了。
举报

更多回帖

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