STM32
直播中

youyoulan

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

如何用STM32F103的DAC功能完成输出正弦波与蜂鸣器发声的工作

DAC数字模拟转换器是什么?

如何用STM32F103的DAC功能完成输出正弦波与蜂鸣器发声的工作?

回帖(1)

萧持毅

2021-11-15 10:38:52
  本文内容:用 STM32F103 的 DAC 功能完成以下波形输出,用示波器观察波形,并用蜂鸣器或手机耳机收听输出声音效果、感受歌曲的音质差异。
  1)输出一个周期 2khz 的正弦波(循环)(此波形驱动作用至蜂鸣器或喇叭,会呈现一个“滴…”的单音);
  2)将一段数字音频歌曲数据转换为模拟音频波形输出(循环)。
  提示:首先用音频制作工具如 audition 制作一段数字化的 2khz 正弦波 wav 文件,制作时须指定采样频率、量化位数和通道数,以及时间长度。MCU 资源有限,建议采样 8khz ,量化 16bit ,单通道,时长仅仅 2 秒左右。音频 wav 数据可以用类似汉字字模的保存方式,直接 copy 到 Keil 代码中数组中,不必使用SD卡上的 wav 文件(野火开发板是读取SD卡上的 wav 文件)。
  在成功完成单音音频的还原输出后(示波器观察),再实验转换一首你喜欢的歌曲片段(或者自己唱录一句,如 “ 我还是从前那个少年 miya ”)为 wav 文件,进行还原输出。
  一、DAC 简介
  DAC(中文:数字模拟转换器)是一种将数字信号转换为模拟信号(以电流、电压或电荷的形式)的设备。
  电脑对声音这种信号不能直接处理,先把它转化成电脑能识别的数字信号,就要用到声卡中的 DAC,它把声音信号转换成数字信号,要分两步进行,即采样和转换。
  
  二、输出正弦波与蜂鸣器发声
  打开 keil ,
  uint16_t 类型的数组存储波形数据。
  
  编译工程无措
  
  用示波器观察波形:
  
  将板子上的PA4或PA5接上蜂鸣器,并接地,便可让蜂鸣器发出声音
  三、数字音频数据转模拟音频波形输出
  方法:首先用音频制作工具如 audition 制作一段数字化的 2khz 正弦波 wav 文件,制作时须指定采样频率、量化位数和通道数,以及时间长度。
  MCU 资源有限,建议采样 8khz,量化16bit,单通道,时长仅仅 2 秒左右。
  音频 wav 数据可以用类似汉字字模的保存方式,直接 copy 到 Keil 代码中数组中,不必使用SD卡上的 wav 文件(野火开发板是读取 SD 卡上的 wav 文件)。
  将文件中所有的压缩包解压到当前文件目录下,然后按照网址所提示的安装教程进行安装。
  Adobe Audition CS6
  打开【Adobe Audition CS6】,找到下载歌曲路径,点击打开
  
  音频显示:
  
  鼠标拖动截取片段,点击存储。
  
  下拉设置【格式】,其【采样类型】与【格式设置】都会改变,点击【确定】。
  
  Uedit32
  将保存的文件用 Uedit32 打开。
  
  打开后显示如下:
  
  选择复制。
  
  新建文件,然后粘贴复制内容到新文件。
  
  CTRL+A 鼠标右键 选择范围 输入起始的行号和列号,选中内容。
  
  
  复制选中内容。
  
  Notepad++
  打开 Notepad++ ,粘贴复制内容。
  
  删除不需要的尾行,将该文本复制下来。
  打开第二部分的文件【DAC—输出正弦波】工程文件。
  将文本复制进 uint16_t Sine12bit[] 数组中去,并删掉中括号里面的数据。
  
  结果显示
  编译工程文件,无错。
  示波器显示波形。
  
举报

更多回帖

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