基于STM32F103的DAC实现音频波形的输出

一、DAC简介

DAC 为数字/模拟转换模块,故名思议,它的作用就是把输入的数字编码,转换成对应的模拟电压输出,它的功能与 ADC 相反。在常见的数字信号系统中,大部分传感器信号被化成电压信号,而 ADC 把电压模拟信号转换成易于计算机存储、处理的数字编码,由计算机处理完成后,再由 DAC 输出电压模拟信号,该电压模拟信号常常用来驱动某些执行器件,使人类易于感知。如音频信号的采集及还原就是这样一个过程。
STM32 具有片上 DAC 外设,它的分辨率可配置为 8 位或 12 位的数字输入信号,具有两个 DAC 输出通道,这两个通道互不影响,每个通道都可以使用 DMA 功能,都具有出错检测能力,可外部触发。

DAC功能

功能框图在这里插入图片描述
整个 DAC 模块围绕框图下方的“数字至模拟转换器 x”展开,它的左边分别是参考电源的引脚:𝑉𝐷𝐷𝐴、𝑉𝑆𝑆𝐴及𝑉𝑟𝑒𝑓+,其中 STM32 的 DAC 规定了它的参考电压𝑉𝑟𝑒𝑓+输入范围为2.4——3.3V。“数字至模拟转换器 x”的输入为 DAC 的数据寄存器“DORx”的数字编码,经过它转换得的模拟信号由图中右侧的“DAC_OUTx”输出。而数据寄存器“DORx”又受“控制逻辑”支配,它可以控制数据寄存器加入一些伪噪声信号或配置产生三角波信号。图中的左上角为 DAC 的触发源,DAC 根据触发源的信号来进行 DAC 转换,其作用就相当于 DAC 转换器的开关,它可以配置的触发源为外部中断源触发、定时器触发或软件控制触发。

二、输出一个周期2khz的正弦波

使用Adobe Audition生成一个2KHz的正弦波

根据下面这个算法,让其触发周期不变,算出2KHz需要的点数1800
在这里插入图片描述
新建一个音频文件
在这里插入图片描述
设置参数
在这里插入图片描述
生成基本音色
在这里插入图片描述
设置参数
在这里插入图片描述
得到正弦波形
在这里插入图片描述
左键拖动选取一段时间为0.225的片段,然后右键进行下图操作。
选取0.225长的原因是因为,2000KHz所需要的取点数为1800,这里采样频率是8000KHz,所以在0.225秒内才可以采够1800个点。
在这里插入图片描述
点击确定
在这里插入图片描述
用WavToC将wave文件转换输出在这里插入图片描述

然后打开keil 工程,关于野火STM32指南者开发板的例程中的DAC-正弦波
在这里插入图片描述
将转化wave文件得到的添加进去,然后修改周期点数为1800。

在例程中的bsp_dac.c中,将自己得到1800个点的代码放进去。

在这里插入图片描述
编译无错
在这里插入图片描述
烧录进去,进行验证,示波器观察。
在这里插入图片描述

三、输出一段音频波形

自己上网下载自己喜欢的音乐,然后用上面那个音频软件(Adobe Audition)打开,采取一段来进行波形输出(最好2~3秒)。
在这里插入图片描述
将截取的存储为新文件。
在这里插入图片描述
进行如下选择,采样类型。
在这里插入图片描述
然后用另一个软件,将wave文件转换为代码。
然后将生成的代码,像正弦波一样,替换进去,顺便改变其点数,16000
在这里插入图片描述

在这里插入图片描述

进行编译,无错,然后烧入板子。
在这里插入图片描述
用示波器查看。
在这里插入图片描述

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值