音频数据的Flash读取与DAC播放
原理介绍
flash
在 STM32 芯片内部有一个 FLASH 存储器,它主要用于存储代码,我们在电脑上编写
好应用程序后,使用下载器把编译后的代码文件烧录到该内部 FLASH 中,由于 FLASH 存
储器的内容在掉电后不会丢失,芯片重新上电复位后,内核可从内部 FLASH 中加载代码并
运行
DAC
DAC 为数字/模拟转换模块,故名思议,它的作用就是把输入的数字编码,转换成对
应的模拟电压输出,它的功能与 ADC 相反。在常见的数字信号系统中,大部分传感器信号
被化成电压信号,而 ADC 把电压模拟信号转换成易于计算机存储、处理的数字编码,由计
算机处理完成后,再由 DAC 输出电压模拟信号,该电压模拟信号常常用来驱动某些执行器
件,使人类易于感知。如音频信号的采集及还原就是这样一个过程。
STM32 具有片上 DAC 外设,它的分辨率可配置为 8 位或 12 位的数字输入信号,具有
两个 DAC 输出通道,这两个通道互不影响,每个通道都可以使用 DMA 功能,都具有出错
检测能力,可外部触发。
flash读取
配置cubmax
工程代码修改
将falsh.c和falsh.h文件加入工程中
在main.c中添加代码
stlink调试
ST-LINK | STM32F103 |
---|
SWCLK/TCK | SWCLK/TCK | SWDIO/TMS | SWDIO/TMS | GND | GND | VCC | VCC |
若IDCODE显示出来,连接成功
点击load
完成烧录
点击调试
添加memory1、watch1和watch2查看变量变化情况
点击全速运行
看出内容一样
基于 Flash 的提示音 DAC 播放
使用 DAC 产生 2khz 周期的正弦波输出
修改参数
点击效果->生成基本音色
修改参数
点击如下,输出文件
点开UltraEdit ,打开刚才au输出的wav文件
点击Ctrl+a 全选,鼠标右键,16进制复制选定视图,将其复制到新的文件下
Ctrl+a,鼠标右键,选择范围,输入起始列号和结束列号
复制到notepad++
在野火提供的样例程序——DAC 输出正弦波中添加数据
编译无误,即可烧录,用示波器得到波形
使用 DAC 输出数字音频歌曲数据转换为模拟音频波形输出
将歌曲转化为wav后,在au中打开,选择存储选区,完成后,步骤和上面一样用示波器得到波形
总结
本次学习对内部flash和DAC有了更多的了解,同时对声音的处理也有了粗略的了解。
|